• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!DOCTYPE html>
2<html>
3<!-- Copyright (C) 2012 The Android Open Source Project
4
5     Licensed under the Apache License, Version 2.0 (the "License");
6     you may not use this file except in compliance with the License.
7     You may obtain a copy of the License at
8
9          http://www.apache.org/licenses/LICENSE-2.0
10
11     Unless required by applicable law or agreed to in writing, software
12     distributed under the License is distributed on an "AS IS" BASIS,
13     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14     See the License for the specific language governing permissions and
15     limitations under the License.
16-->
17<head>
18  <!-- automatically generated from html.mako. do NOT edit directly -->
19  <meta charset="utf-8" />
20  <title>Android Camera HAL3.2 Properties</title>
21  <style type="text/css">
22     body { background-color: #f7f7f7; font-family: Roboto, sans-serif;}
23     h1 { color: #333333; }
24     h2 { color: #333333; }
25     a:link { color: #258aaf; text-decoration: none}
26     a:hover { color: #459aaf; text-decoration: underline }
27     a:visited { color: #154a5f; text-decoration: none}
28    .section { color: #eeeeee; font-size: 1.5em; font-weight: bold; background-color: #888888; padding: 0.5em 0em 0.5em 0.5em; border-width: thick thin thin thin; border-color: #111111 #777777 #777777 #777777}
29    .kind { color: #eeeeee; font-size: 1.2em; font-weight: bold; padding-left: 1.5em; background-color: #aaaaaa }
30    .entry { background-color: #f0f0f0 }
31    .entry_cont { background-color: #f0f0f0 }
32    .entries_header { background-color: #dddddd; text-align: center}
33
34    /* toc style */
35    .toc_section_header { font-size:1.3em;  }
36    .toc_kind_header { font-size:1.2em;  }
37    .toc_deprecated { text-decoration:line-through; }
38
39    /* table column sizes */
40    table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word }
41    td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em }
42    .th_name { width: 20% }
43    .th_units { width: 10% }
44    .th_tags { width: 5% }
45    .th_details { width: 25% }
46    .th_type { width: 20% }
47    .th_description { width: 20% }
48    .th_range { width: 10% }
49    td { font-size: 0.9em; }
50
51    /* hide the first thead, we need it there only to enforce column sizes */
52    .thead_dummy { visibility: hidden; }
53
54    /* Entry flair */
55    .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; }
56    .entry_name_deprecated { text-decoration:line-through; }
57
58    /* Entry type flair */
59    .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;}
60    .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" }
61    .entry_type_visibility { font-weight: bolder; padding-left:1em}
62    .entry_type_synthetic { font-weight: bolder; color: #996600; }
63    .entry_type_hwlevel { font-weight: bolder; color: #000066; }
64    .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; }
65    .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
66    .entry_type_enum_notes:before { content:" - " }
67    .entry_type_enum_notes>p:first-child { display:inline; }
68    .entry_type_enum_value:before { content:" = " }
69    .entry_type_enum_value { font-family: monospace; }
70    .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; }
71    .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;}
72    .entry_range_deprecated { font-weight: bolder; }
73
74    /* Entry tags flair */
75    .entry_tags ul { list-style-type: none; }
76
77    /* Entry details (full docs) flair */
78    .entry_details_header { font-weight: bold; background-color: #dddddd;
79      text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; }
80
81    /* Entry spacer flair */
82    .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
83
84    /* TODO: generate abbr element for each tag link? */
85    /* TODO for each x.y.z try to link it to the entry */
86
87  </style>
88
89  <style>
90
91    {
92      /* broken...
93         supposedly there is a bug in chrome that it lays out tables before
94         it knows its being printed, so the page-break-* styles are ignored
95         */
96        tr { page-break-after: always; page-break-inside: avoid; }
97    }
98
99  </style>
100</head>
101
102
103
104<body>
105  <h1>Android Camera HAL3.2 Properties</h1>
106
107
108  <h2>Table of Contents</h2>
109  <ul class="toc">
110    <li><a href="#tag_index" class="toc_section_header">Tags</a></li>
111    <li>
112      <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span>
113      <ul class="toc_section">
114        <li>
115          <span class="toc_kind_header">controls</span>
116          <ul class="toc_section">
117            <li
118            ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
119            <li
120            ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
121            <li
122            ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
123            <li
124            ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
125          </ul>
126        </li>
127        <li>
128          <span class="toc_kind_header">dynamic</span>
129          <ul class="toc_section">
130            <li
131            ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
132            <li
133            ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
134            <li
135            ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
136            <li
137            ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
138          </ul>
139        </li>
140        <li>
141          <span class="toc_kind_header">static</span>
142          <ul class="toc_section">
143            <li
144            ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
145          </ul>
146        </li>
147      </ul> <!-- toc_section -->
148    </li>
149    <li>
150      <span class="toc_section_header"><a href="#section_control">control</a></span>
151      <ul class="toc_section">
152        <li>
153          <span class="toc_kind_header">controls</span>
154          <ul class="toc_section">
155            <li
156            ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
157            <li
158            ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
159            <li
160            ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
161            <li
162            ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
163            <li
164            ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
165            <li
166            ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
167            <li
168            ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
169            <li
170            ><a href="#controls_android.control.afMode">android.control.afMode</a></li>
171            <li
172            ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
173            <li
174            ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
175            <li
176            ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
177            <li
178            ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
179            <li
180            ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
181            <li
182            ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
183            <li
184            ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
185            <li
186            ><a href="#controls_android.control.mode">android.control.mode</a></li>
187            <li
188            ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
189            <li
190            ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
191          </ul>
192        </li>
193        <li>
194          <span class="toc_kind_header">static</span>
195          <ul class="toc_section">
196            <li
197            ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
198            <li
199            ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
200            <li
201            ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
202            <li
203            ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
204            <li
205            ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
206            <li
207            ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
208            <li
209            ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
210            <li
211            ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
212            <li
213            ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
214            <li
215            ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
216            <li
217            ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
218            <li
219            ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
220            <li
221            ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
222            <li
223            ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
224            <li
225            ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
226            <li
227            ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
228            <li
229            ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
230            <li
231            ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
232            <li
233            ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
234          </ul>
235        </li>
236        <li>
237          <span class="toc_kind_header">dynamic</span>
238          <ul class="toc_section">
239            <li
240                class="toc_deprecated"
241            ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
242            <li
243            ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
244            <li
245            ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
246            <li
247            ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
248            <li
249            ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
250            <li
251            ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
252            <li
253            ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
254            <li
255            ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
256            <li
257            ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
258            <li
259            ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
260            <li
261            ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
262            <li
263            ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
264            <li
265            ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
266            <li
267                class="toc_deprecated"
268            ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
269            <li
270            ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
271            <li
272            ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
273            <li
274            ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
275            <li
276            ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
277            <li
278            ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
279            <li
280            ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
281            <li
282            ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
283            <li
284            ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
285            <li
286            ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
287          </ul>
288        </li>
289      </ul> <!-- toc_section -->
290    </li>
291    <li>
292      <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
293      <ul class="toc_section">
294        <li>
295          <span class="toc_kind_header">controls</span>
296          <ul class="toc_section">
297            <li
298            ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
299          </ul>
300        </li>
301      </ul> <!-- toc_section -->
302    </li>
303    <li>
304      <span class="toc_section_header"><a href="#section_edge">edge</a></span>
305      <ul class="toc_section">
306        <li>
307          <span class="toc_kind_header">controls</span>
308          <ul class="toc_section">
309            <li
310            ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
311            <li
312            ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
313          </ul>
314        </li>
315        <li>
316          <span class="toc_kind_header">static</span>
317          <ul class="toc_section">
318            <li
319            ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
320          </ul>
321        </li>
322        <li>
323          <span class="toc_kind_header">dynamic</span>
324          <ul class="toc_section">
325            <li
326            ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
327          </ul>
328        </li>
329      </ul> <!-- toc_section -->
330    </li>
331    <li>
332      <span class="toc_section_header"><a href="#section_flash">flash</a></span>
333      <ul class="toc_section">
334        <li>
335          <span class="toc_kind_header">controls</span>
336          <ul class="toc_section">
337            <li
338            ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
339            <li
340            ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
341            <li
342            ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
343          </ul>
344        </li>
345        <li>
346          <span class="toc_kind_header">static</span>
347          <ul class="toc_section">
348
349            <li
350            ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
351            <li
352            ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
353
354            <li
355            ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
356            <li
357            ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
358          </ul>
359        </li>
360        <li>
361          <span class="toc_kind_header">dynamic</span>
362          <ul class="toc_section">
363            <li
364            ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
365            <li
366            ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
367            <li
368            ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
369            <li
370            ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
371          </ul>
372        </li>
373      </ul> <!-- toc_section -->
374    </li>
375    <li>
376      <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
377      <ul class="toc_section">
378        <li>
379          <span class="toc_kind_header">controls</span>
380          <ul class="toc_section">
381            <li
382            ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
383          </ul>
384        </li>
385        <li>
386          <span class="toc_kind_header">static</span>
387          <ul class="toc_section">
388            <li
389            ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
390          </ul>
391        </li>
392        <li>
393          <span class="toc_kind_header">dynamic</span>
394          <ul class="toc_section">
395            <li
396            ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
397          </ul>
398        </li>
399      </ul> <!-- toc_section -->
400    </li>
401    <li>
402      <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
403      <ul class="toc_section">
404        <li>
405          <span class="toc_kind_header">controls</span>
406          <ul class="toc_section">
407            <li
408            ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
409            <li
410            ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
411            <li
412            ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
413            <li
414            ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
415            <li
416            ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
417            <li
418            ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
419            <li
420            ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
421            <li
422            ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
423          </ul>
424        </li>
425        <li>
426          <span class="toc_kind_header">static</span>
427          <ul class="toc_section">
428            <li
429            ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
430            <li
431            ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
432          </ul>
433        </li>
434        <li>
435          <span class="toc_kind_header">dynamic</span>
436          <ul class="toc_section">
437            <li
438            ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
439            <li
440            ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
441            <li
442            ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
443            <li
444            ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
445            <li
446            ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
447            <li
448            ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
449            <li
450            ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
451            <li
452            ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
453            <li
454            ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
455          </ul>
456        </li>
457      </ul> <!-- toc_section -->
458    </li>
459    <li>
460      <span class="toc_section_header"><a href="#section_lens">lens</a></span>
461      <ul class="toc_section">
462        <li>
463          <span class="toc_kind_header">controls</span>
464          <ul class="toc_section">
465            <li
466            ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
467            <li
468            ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
469            <li
470            ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
471            <li
472            ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
473            <li
474            ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
475          </ul>
476        </li>
477        <li>
478          <span class="toc_kind_header">static</span>
479          <ul class="toc_section">
480
481            <li
482            ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
483            <li
484            ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
485            <li
486            ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
487            <li
488            ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
489            <li
490            ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
491            <li
492            ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
493            <li
494            ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
495            <li
496            ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
497
498            <li
499            ><a href="#static_android.lens.facing">android.lens.facing</a></li>
500            <li
501            ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
502            <li
503            ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
504            <li
505            ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
506            <li
507            ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
508          </ul>
509        </li>
510        <li>
511          <span class="toc_kind_header">dynamic</span>
512          <ul class="toc_section">
513            <li
514            ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
515            <li
516            ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
517            <li
518            ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
519            <li
520            ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
521            <li
522            ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
523            <li
524            ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
525            <li
526            ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
527            <li
528            ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
529            <li
530            ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
531            <li
532            ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
533            <li
534            ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
535          </ul>
536        </li>
537      </ul> <!-- toc_section -->
538    </li>
539    <li>
540      <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
541      <ul class="toc_section">
542        <li>
543          <span class="toc_kind_header">controls</span>
544          <ul class="toc_section">
545            <li
546            ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
547            <li
548            ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
549          </ul>
550        </li>
551        <li>
552          <span class="toc_kind_header">static</span>
553          <ul class="toc_section">
554            <li
555            ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
556          </ul>
557        </li>
558        <li>
559          <span class="toc_kind_header">dynamic</span>
560          <ul class="toc_section">
561            <li
562            ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
563          </ul>
564        </li>
565      </ul> <!-- toc_section -->
566    </li>
567    <li>
568      <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
569      <ul class="toc_section">
570        <li>
571          <span class="toc_kind_header">static</span>
572          <ul class="toc_section">
573            <li
574                class="toc_deprecated"
575            ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
576            <li
577                class="toc_deprecated"
578            ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
579            <li
580                class="toc_deprecated"
581            ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
582            <li
583                class="toc_deprecated"
584            ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
585          </ul>
586        </li>
587        <li>
588          <span class="toc_kind_header">dynamic</span>
589          <ul class="toc_section">
590            <li
591                class="toc_deprecated"
592            ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
593          </ul>
594        </li>
595      </ul> <!-- toc_section -->
596    </li>
597    <li>
598      <span class="toc_section_header"><a href="#section_request">request</a></span>
599      <ul class="toc_section">
600        <li>
601          <span class="toc_kind_header">controls</span>
602          <ul class="toc_section">
603            <li
604                class="toc_deprecated"
605            ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
606            <li
607            ><a href="#controls_android.request.id">android.request.id</a></li>
608            <li
609                class="toc_deprecated"
610            ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
611            <li
612            ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
613            <li
614                class="toc_deprecated"
615            ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
616            <li
617                class="toc_deprecated"
618            ><a href="#controls_android.request.type">android.request.type</a></li>
619          </ul>
620        </li>
621        <li>
622          <span class="toc_kind_header">static</span>
623          <ul class="toc_section">
624            <li
625            ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
626            <li
627            ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
628            <li
629            ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
630            <li
631            ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
632            <li
633                class="toc_deprecated"
634            ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
635            <li
636            ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
637            <li
638            ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
639            <li
640            ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
641            <li
642            ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
643            <li
644            ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
645            <li
646            ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
647            <li
648            ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
649          </ul>
650        </li>
651        <li>
652          <span class="toc_kind_header">dynamic</span>
653          <ul class="toc_section">
654            <li
655                class="toc_deprecated"
656            ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
657            <li
658            ><a href="#dynamic_android.request.id">android.request.id</a></li>
659            <li
660            ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
661            <li
662                class="toc_deprecated"
663            ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
664            <li
665            ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
666          </ul>
667        </li>
668      </ul> <!-- toc_section -->
669    </li>
670    <li>
671      <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
672      <ul class="toc_section">
673        <li>
674          <span class="toc_kind_header">controls</span>
675          <ul class="toc_section">
676            <li
677            ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
678          </ul>
679        </li>
680        <li>
681          <span class="toc_kind_header">static</span>
682          <ul class="toc_section">
683            <li
684                class="toc_deprecated"
685            ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
686            <li
687                class="toc_deprecated"
688            ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
689            <li
690                class="toc_deprecated"
691            ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
692            <li
693            ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
694            <li
695                class="toc_deprecated"
696            ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
697            <li
698                class="toc_deprecated"
699            ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
700            <li
701                class="toc_deprecated"
702            ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
703            <li
704                class="toc_deprecated"
705            ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
706            <li
707            ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
708            <li
709            ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
710            <li
711            ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
712            <li
713            ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
714            <li
715            ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
716            <li
717            ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
718          </ul>
719        </li>
720        <li>
721          <span class="toc_kind_header">dynamic</span>
722          <ul class="toc_section">
723            <li
724            ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
725          </ul>
726        </li>
727      </ul> <!-- toc_section -->
728    </li>
729    <li>
730      <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
731      <ul class="toc_section">
732        <li>
733          <span class="toc_kind_header">controls</span>
734          <ul class="toc_section">
735            <li
736            ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
737            <li
738            ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
739            <li
740            ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
741            <li
742            ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
743            <li
744            ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
745          </ul>
746        </li>
747        <li>
748          <span class="toc_kind_header">static</span>
749          <ul class="toc_section">
750
751            <li
752            ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
753            <li
754            ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
755            <li
756            ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
757            <li
758            ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
759            <li
760            ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
761            <li
762            ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
763            <li
764            ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
765            <li
766            ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
767            <li
768            ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
769            <li
770            ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
771            <li
772            ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
773
774            <li
775            ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
776            <li
777            ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
778            <li
779            ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
780            <li
781            ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
782            <li
783            ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
784            <li
785            ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
786            <li
787            ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
788            <li
789            ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
790            <li
791            ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
792            <li
793            ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
794            <li
795            ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
796            <li
797            ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
798            <li
799            ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
800            <li
801            ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
802          </ul>
803        </li>
804        <li>
805          <span class="toc_kind_header">dynamic</span>
806          <ul class="toc_section">
807            <li
808            ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
809            <li
810            ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
811            <li
812            ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
813            <li
814            ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
815            <li
816            ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
817            <li
818            ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
819            <li
820            ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
821            <li
822            ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
823            <li
824            ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
825            <li
826            ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
827            <li
828            ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
829            <li
830            ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
831            <li
832            ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
833          </ul>
834        </li>
835      </ul> <!-- toc_section -->
836    </li>
837    <li>
838      <span class="toc_section_header"><a href="#section_shading">shading</a></span>
839      <ul class="toc_section">
840        <li>
841          <span class="toc_kind_header">controls</span>
842          <ul class="toc_section">
843            <li
844            ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
845            <li
846            ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
847          </ul>
848        </li>
849        <li>
850          <span class="toc_kind_header">dynamic</span>
851          <ul class="toc_section">
852            <li
853            ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
854          </ul>
855        </li>
856        <li>
857          <span class="toc_kind_header">static</span>
858          <ul class="toc_section">
859            <li
860            ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
861          </ul>
862        </li>
863      </ul> <!-- toc_section -->
864    </li>
865    <li>
866      <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
867      <ul class="toc_section">
868        <li>
869          <span class="toc_kind_header">controls</span>
870          <ul class="toc_section">
871            <li
872            ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
873            <li
874            ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
875            <li
876            ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
877            <li
878            ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
879            <li
880            ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
881          </ul>
882        </li>
883        <li>
884          <span class="toc_kind_header">static</span>
885          <ul class="toc_section">
886
887            <li
888            ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
889            <li
890            ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
891            <li
892            ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
893            <li
894            ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
895            <li
896            ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
897            <li
898            ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
899            <li
900            ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
901            <li
902            ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
903
904          </ul>
905        </li>
906        <li>
907          <span class="toc_kind_header">dynamic</span>
908          <ul class="toc_section">
909            <li
910            ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
911            <li
912            ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
913            <li
914            ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
915            <li
916            ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
917            <li
918            ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
919            <li
920            ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
921            <li
922            ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
923            <li
924            ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
925            <li
926            ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
927            <li
928            ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
929            <li
930            ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
931            <li
932            ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
933            <li
934                class="toc_deprecated"
935            ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
936            <li
937                class="toc_deprecated"
938            ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
939            <li
940            ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
941            <li
942            ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
943            <li
944            ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
945            <li
946            ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
947          </ul>
948        </li>
949      </ul> <!-- toc_section -->
950    </li>
951    <li>
952      <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
953      <ul class="toc_section">
954        <li>
955          <span class="toc_kind_header">controls</span>
956          <ul class="toc_section">
957            <li
958            ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
959            <li
960            ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
961            <li
962            ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
963            <li
964            ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
965            <li
966            ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
967            <li
968            ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
969            <li
970            ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
971          </ul>
972        </li>
973        <li>
974          <span class="toc_kind_header">static</span>
975          <ul class="toc_section">
976            <li
977            ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
978            <li
979            ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
980          </ul>
981        </li>
982        <li>
983          <span class="toc_kind_header">dynamic</span>
984          <ul class="toc_section">
985            <li
986            ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
987            <li
988            ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
989            <li
990            ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
991            <li
992            ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
993            <li
994            ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
995            <li
996            ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
997            <li
998            ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
999          </ul>
1000        </li>
1001      </ul> <!-- toc_section -->
1002    </li>
1003    <li>
1004      <span class="toc_section_header"><a href="#section_led">led</a></span>
1005      <ul class="toc_section">
1006        <li>
1007          <span class="toc_kind_header">controls</span>
1008          <ul class="toc_section">
1009            <li
1010            ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1011          </ul>
1012        </li>
1013        <li>
1014          <span class="toc_kind_header">dynamic</span>
1015          <ul class="toc_section">
1016            <li
1017            ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1018          </ul>
1019        </li>
1020        <li>
1021          <span class="toc_kind_header">static</span>
1022          <ul class="toc_section">
1023            <li
1024            ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1025          </ul>
1026        </li>
1027      </ul> <!-- toc_section -->
1028    </li>
1029    <li>
1030      <span class="toc_section_header"><a href="#section_info">info</a></span>
1031      <ul class="toc_section">
1032        <li>
1033          <span class="toc_kind_header">static</span>
1034          <ul class="toc_section">
1035            <li
1036            ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1037          </ul>
1038        </li>
1039      </ul> <!-- toc_section -->
1040    </li>
1041    <li>
1042      <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1043      <ul class="toc_section">
1044        <li>
1045          <span class="toc_kind_header">controls</span>
1046          <ul class="toc_section">
1047            <li
1048            ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1049          </ul>
1050        </li>
1051        <li>
1052          <span class="toc_kind_header">dynamic</span>
1053          <ul class="toc_section">
1054            <li
1055            ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1056          </ul>
1057        </li>
1058      </ul> <!-- toc_section -->
1059    </li>
1060    <li>
1061      <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1062      <ul class="toc_section">
1063        <li>
1064          <span class="toc_kind_header">dynamic</span>
1065          <ul class="toc_section">
1066            <li
1067            ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1068          </ul>
1069        </li>
1070        <li>
1071          <span class="toc_kind_header">static</span>
1072          <ul class="toc_section">
1073            <li
1074            ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1075          </ul>
1076        </li>
1077      </ul> <!-- toc_section -->
1078    </li>
1079    <li>
1080      <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1081      <ul class="toc_section">
1082        <li>
1083          <span class="toc_kind_header">controls</span>
1084          <ul class="toc_section">
1085            <li
1086            ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1087          </ul>
1088        </li>
1089        <li>
1090          <span class="toc_kind_header">dynamic</span>
1091          <ul class="toc_section">
1092            <li
1093            ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1094          </ul>
1095        </li>
1096        <li>
1097          <span class="toc_kind_header">static</span>
1098          <ul class="toc_section">
1099            <li
1100            ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1101          </ul>
1102        </li>
1103      </ul> <!-- toc_section -->
1104    </li>
1105    <li>
1106      <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1107      <ul class="toc_section">
1108        <li>
1109          <span class="toc_kind_header">static</span>
1110          <ul class="toc_section">
1111            <li
1112            ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1113            <li
1114            ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1115            <li
1116            ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1117            <li
1118            ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1119            <li
1120            ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1121          </ul>
1122        </li>
1123      </ul> <!-- toc_section -->
1124    </li>
1125  </ul>
1126
1127
1128  <h1>Properties</h1>
1129  <table class="properties">
1130
1131    <thead class="thead_dummy">
1132      <tr>
1133        <th class="th_name">Property Name</th>
1134        <th class="th_type">Type</th>
1135        <th class="th_description">Description</th>
1136        <th class="th_units">Units</th>
1137        <th class="th_range">Range</th>
1138        <th class="th_tags">Tags</th>
1139      </tr>
1140    </thead> <!-- so that the first occurrence of thead is not
1141                         above the first occurrence of tr -->
1142<!-- <namespace name="android"> -->
1143  <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1144
1145
1146      <tr><td colspan="6" class="kind">controls</td></tr>
1147
1148      <thead class="entries_header">
1149        <tr>
1150          <th class="th_name">Property Name</th>
1151          <th class="th_type">Type</th>
1152          <th class="th_description">Description</th>
1153          <th class="th_units">Units</th>
1154          <th class="th_range">Range</th>
1155          <th class="th_tags">Tags</th>
1156        </tr>
1157      </thead>
1158
1159      <tbody>
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170          <tr class="entry" id="controls_android.colorCorrection.mode">
1171            <td class="entry_name
1172             " rowspan="5">
1173              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1174            </td>
1175            <td class="entry_type">
1176                <span class="entry_type_name entry_type_name_enum">byte</span>
1177
1178              <span class="entry_type_visibility"> [public]</span>
1179
1180
1181              <span class="entry_type_hwlevel">[full] </span>
1182
1183
1184
1185                <ul class="entry_type_enum">
1186                  <li>
1187                    <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1188                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1189and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1190<p>All advanced white balance adjustments (not specified
1191by our white balance pipeline) must be disabled.<wbr/></p>
1192<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1193TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1194this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1195                  </li>
1196                  <li>
1197                    <span class="entry_type_enum_name">FAST</span>
1198                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1199capture rate relative to sensor raw output.<wbr/></p>
1200<p>Advanced white balance adjustments above and beyond
1201the specified white balance pipeline may be applied.<wbr/></p>
1202<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1203the camera device uses the last frame's AWB values
1204(or defaults if AWB has never been run).<wbr/></p></span>
1205                  </li>
1206                  <li>
1207                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1208                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1209quality but the capture rate might be reduced (relative to sensor
1210raw output rate)</p>
1211<p>Advanced white balance adjustments above and beyond
1212the specified white balance pipeline may be applied.<wbr/></p>
1213<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1214the camera device uses the last frame's AWB values
1215(or defaults if AWB has never been run).<wbr/></p></span>
1216                  </li>
1217                </ul>
1218
1219            </td> <!-- entry_type -->
1220
1221            <td class="entry_description">
1222              <p>The mode control selects how the image data is converted from the
1223sensor's native color into linear sRGB color.<wbr/></p>
1224            </td>
1225
1226            <td class="entry_units">
1227            </td>
1228
1229            <td class="entry_range">
1230            </td>
1231
1232            <td class="entry_tags">
1233            </td>
1234
1235          </tr>
1236          <tr class="entries_header">
1237            <th class="th_details" colspan="5">Details</th>
1238          </tr>
1239          <tr class="entry_cont">
1240            <td class="entry_details" colspan="5">
1241              <p>When auto-white balance (AWB) is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
1242control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1243application controls how the color mapping is performed.<wbr/></p>
1244<p>We define the expected processing pipeline below.<wbr/> For consistency
1245across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1246<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1247do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1248<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1249camera device (in the results) and be roughly correct.<wbr/></p>
1250<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1251FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1252as what was produced by the camera device in the earlier frame.<wbr/></p>
1253<p>The expected processing pipeline is as follows:</p>
1254<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1255<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1256gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1257matrix (applied after demosaic).<wbr/></p>
1258<p>The 4-channel white-balance gains are defined as:</p>
1259<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1260</code></pre>
1261<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1262output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1263These may be identical for a given camera device implementation; if
1264the camera device does not support a separate gain for even/<wbr/>odd green
1265channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1266<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1267<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1268<pre><code><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> = [ I0 I1 I2 I3 I4 I5 I6 I7 I8 ]
1269</code></pre>
1270<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1271to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1272<p>with colors as follows:</p>
1273<pre><code>r' = I0r + I1g + I2b
1274g' = I3r + I4g + I5b
1275b' = I6r + I7g + I8b
1276</code></pre>
1277<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1278values are clipped to fit within the range.<wbr/></p>
1279            </td>
1280          </tr>
1281
1282          <tr class="entries_header">
1283            <th class="th_details" colspan="5">HAL Implementation Details</th>
1284          </tr>
1285          <tr class="entry_cont">
1286            <td class="entry_details" colspan="5">
1287              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1288on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1289That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1290capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1291            </td>
1292          </tr>
1293
1294          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1295           <!-- end of entry -->
1296
1297
1298          <tr class="entry" id="controls_android.colorCorrection.transform">
1299            <td class="entry_name
1300             " rowspan="3">
1301              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1302            </td>
1303            <td class="entry_type">
1304                <span class="entry_type_name">rational</span>
1305                <span class="entry_type_container">x</span>
1306
1307                <span class="entry_type_array">
1308                  3 x 3
1309                </span>
1310              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1311
1312
1313              <span class="entry_type_hwlevel">[full] </span>
1314
1315
1316                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1317
1318
1319            </td> <!-- entry_type -->
1320
1321            <td class="entry_description">
1322              <p>A color transform matrix to use to transform
1323from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1324            </td>
1325
1326            <td class="entry_units">
1327              Unitless scale factors
1328            </td>
1329
1330            <td class="entry_range">
1331            </td>
1332
1333            <td class="entry_tags">
1334            </td>
1335
1336          </tr>
1337          <tr class="entries_header">
1338            <th class="th_details" colspan="5">Details</th>
1339          </tr>
1340          <tr class="entry_cont">
1341            <td class="entry_details" colspan="5">
1342              <p>This matrix is either set by the camera device when the request
1343<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1344directly by the application in the request when the
1345<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1346<p>In the latter case,<wbr/> the camera device may round the matrix to account
1347for precision issues; the final rounded matrix should be reported back
1348in this matrix result metadata.<wbr/> The transform should keep the magnitude
1349of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1350values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1351<p>The valid range of each matrix element varies on different devices,<wbr/> but
1352values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1353            </td>
1354          </tr>
1355
1356
1357          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1358           <!-- end of entry -->
1359
1360
1361          <tr class="entry" id="controls_android.colorCorrection.gains">
1362            <td class="entry_name
1363             " rowspan="5">
1364              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1365            </td>
1366            <td class="entry_type">
1367                <span class="entry_type_name">float</span>
1368                <span class="entry_type_container">x</span>
1369
1370                <span class="entry_type_array">
1371                  4
1372                </span>
1373              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1374
1375
1376              <span class="entry_type_hwlevel">[full] </span>
1377
1378
1379                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1380
1381
1382            </td> <!-- entry_type -->
1383
1384            <td class="entry_description">
1385              <p>Gains applying to Bayer raw color channels for
1386white-balance.<wbr/></p>
1387            </td>
1388
1389            <td class="entry_units">
1390              Unitless gain factors
1391            </td>
1392
1393            <td class="entry_range">
1394            </td>
1395
1396            <td class="entry_tags">
1397            </td>
1398
1399          </tr>
1400          <tr class="entries_header">
1401            <th class="th_details" colspan="5">Details</th>
1402          </tr>
1403          <tr class="entry_cont">
1404            <td class="entry_details" colspan="5">
1405              <p>These per-channel gains are either set by the camera device
1406when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1407TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1408request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1409TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1410<p>The gains in the result metadata are the gains actually
1411applied by the camera device to the current frame.<wbr/></p>
1412<p>The valid range of gains varies on different devices,<wbr/> but gains
1413between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1414device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1415this can create color artifacts.<wbr/></p>
1416            </td>
1417          </tr>
1418
1419          <tr class="entries_header">
1420            <th class="th_details" colspan="5">HAL Implementation Details</th>
1421          </tr>
1422          <tr class="entry_cont">
1423            <td class="entry_details" colspan="5">
1424              <p>The 4-channel white-balance gains are defined in
1425the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1426for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1427is the gain for green pixels on the odd rows.<wbr/></p>
1428<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1429channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1430<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1431            </td>
1432          </tr>
1433
1434          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1435           <!-- end of entry -->
1436
1437
1438          <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1439            <td class="entry_name
1440             " rowspan="3">
1441              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1442            </td>
1443            <td class="entry_type">
1444                <span class="entry_type_name entry_type_name_enum">byte</span>
1445
1446              <span class="entry_type_visibility"> [public]</span>
1447
1448
1449              <span class="entry_type_hwlevel">[legacy] </span>
1450
1451
1452
1453                <ul class="entry_type_enum">
1454                  <li>
1455                    <span class="entry_type_enum_name">OFF</span>
1456                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1457                  </li>
1458                  <li>
1459                    <span class="entry_type_enum_name">FAST</span>
1460                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1461relative to sensor raw output.<wbr/></p></span>
1462                  </li>
1463                  <li>
1464                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1465                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1466reduced (relative to sensor raw output rate)</p></span>
1467                  </li>
1468                </ul>
1469
1470            </td> <!-- entry_type -->
1471
1472            <td class="entry_description">
1473              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1474            </td>
1475
1476            <td class="entry_units">
1477            </td>
1478
1479            <td class="entry_range">
1480              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1481            </td>
1482
1483            <td class="entry_tags">
1484            </td>
1485
1486          </tr>
1487          <tr class="entries_header">
1488            <th class="th_details" colspan="5">Details</th>
1489          </tr>
1490          <tr class="entry_cont">
1491            <td class="entry_details" colspan="5">
1492              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1493can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1494the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1495minimize the chromatic artifacts that may occur along the object boundaries in an
1496image.<wbr/></p>
1497<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1498correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1499use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1500capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1501applying aberration correction.<wbr/></p>
1502<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1503            </td>
1504          </tr>
1505
1506
1507          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1508           <!-- end of entry -->
1509
1510
1511
1512      <!-- end of kind -->
1513      </tbody>
1514      <tr><td colspan="6" class="kind">dynamic</td></tr>
1515
1516      <thead class="entries_header">
1517        <tr>
1518          <th class="th_name">Property Name</th>
1519          <th class="th_type">Type</th>
1520          <th class="th_description">Description</th>
1521          <th class="th_units">Units</th>
1522          <th class="th_range">Range</th>
1523          <th class="th_tags">Tags</th>
1524        </tr>
1525      </thead>
1526
1527      <tbody>
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538          <tr class="entry" id="dynamic_android.colorCorrection.mode">
1539            <td class="entry_name
1540             " rowspan="5">
1541              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1542            </td>
1543            <td class="entry_type">
1544                <span class="entry_type_name entry_type_name_enum">byte</span>
1545
1546              <span class="entry_type_visibility"> [public]</span>
1547
1548
1549              <span class="entry_type_hwlevel">[full] </span>
1550
1551
1552
1553                <ul class="entry_type_enum">
1554                  <li>
1555                    <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1556                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1557and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1558<p>All advanced white balance adjustments (not specified
1559by our white balance pipeline) must be disabled.<wbr/></p>
1560<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1561TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1562this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1563                  </li>
1564                  <li>
1565                    <span class="entry_type_enum_name">FAST</span>
1566                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1567capture rate relative to sensor raw output.<wbr/></p>
1568<p>Advanced white balance adjustments above and beyond
1569the specified white balance pipeline may be applied.<wbr/></p>
1570<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1571the camera device uses the last frame's AWB values
1572(or defaults if AWB has never been run).<wbr/></p></span>
1573                  </li>
1574                  <li>
1575                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1576                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1577quality but the capture rate might be reduced (relative to sensor
1578raw output rate)</p>
1579<p>Advanced white balance adjustments above and beyond
1580the specified white balance pipeline may be applied.<wbr/></p>
1581<p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1582the camera device uses the last frame's AWB values
1583(or defaults if AWB has never been run).<wbr/></p></span>
1584                  </li>
1585                </ul>
1586
1587            </td> <!-- entry_type -->
1588
1589            <td class="entry_description">
1590              <p>The mode control selects how the image data is converted from the
1591sensor's native color into linear sRGB color.<wbr/></p>
1592            </td>
1593
1594            <td class="entry_units">
1595            </td>
1596
1597            <td class="entry_range">
1598            </td>
1599
1600            <td class="entry_tags">
1601            </td>
1602
1603          </tr>
1604          <tr class="entries_header">
1605            <th class="th_details" colspan="5">Details</th>
1606          </tr>
1607          <tr class="entry_cont">
1608            <td class="entry_details" colspan="5">
1609              <p>When auto-white balance (AWB) is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
1610control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1611application controls how the color mapping is performed.<wbr/></p>
1612<p>We define the expected processing pipeline below.<wbr/> For consistency
1613across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1614<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1615do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1616<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1617camera device (in the results) and be roughly correct.<wbr/></p>
1618<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1619FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1620as what was produced by the camera device in the earlier frame.<wbr/></p>
1621<p>The expected processing pipeline is as follows:</p>
1622<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1623<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1624gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1625matrix (applied after demosaic).<wbr/></p>
1626<p>The 4-channel white-balance gains are defined as:</p>
1627<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1628</code></pre>
1629<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1630output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1631These may be identical for a given camera device implementation; if
1632the camera device does not support a separate gain for even/<wbr/>odd green
1633channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1634<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1635<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1636<pre><code><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> = [ I0 I1 I2 I3 I4 I5 I6 I7 I8 ]
1637</code></pre>
1638<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1639to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1640<p>with colors as follows:</p>
1641<pre><code>r' = I0r + I1g + I2b
1642g' = I3r + I4g + I5b
1643b' = I6r + I7g + I8b
1644</code></pre>
1645<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1646values are clipped to fit within the range.<wbr/></p>
1647            </td>
1648          </tr>
1649
1650          <tr class="entries_header">
1651            <th class="th_details" colspan="5">HAL Implementation Details</th>
1652          </tr>
1653          <tr class="entry_cont">
1654            <td class="entry_details" colspan="5">
1655              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1656on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1657That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1658capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1659            </td>
1660          </tr>
1661
1662          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1663           <!-- end of entry -->
1664
1665
1666          <tr class="entry" id="dynamic_android.colorCorrection.transform">
1667            <td class="entry_name
1668             " rowspan="3">
1669              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1670            </td>
1671            <td class="entry_type">
1672                <span class="entry_type_name">rational</span>
1673                <span class="entry_type_container">x</span>
1674
1675                <span class="entry_type_array">
1676                  3 x 3
1677                </span>
1678              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1679
1680
1681              <span class="entry_type_hwlevel">[full] </span>
1682
1683
1684                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1685
1686
1687            </td> <!-- entry_type -->
1688
1689            <td class="entry_description">
1690              <p>A color transform matrix to use to transform
1691from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1692            </td>
1693
1694            <td class="entry_units">
1695              Unitless scale factors
1696            </td>
1697
1698            <td class="entry_range">
1699            </td>
1700
1701            <td class="entry_tags">
1702            </td>
1703
1704          </tr>
1705          <tr class="entries_header">
1706            <th class="th_details" colspan="5">Details</th>
1707          </tr>
1708          <tr class="entry_cont">
1709            <td class="entry_details" colspan="5">
1710              <p>This matrix is either set by the camera device when the request
1711<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1712directly by the application in the request when the
1713<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1714<p>In the latter case,<wbr/> the camera device may round the matrix to account
1715for precision issues; the final rounded matrix should be reported back
1716in this matrix result metadata.<wbr/> The transform should keep the magnitude
1717of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1718values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1719<p>The valid range of each matrix element varies on different devices,<wbr/> but
1720values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1721            </td>
1722          </tr>
1723
1724
1725          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1726           <!-- end of entry -->
1727
1728
1729          <tr class="entry" id="dynamic_android.colorCorrection.gains">
1730            <td class="entry_name
1731             " rowspan="5">
1732              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1733            </td>
1734            <td class="entry_type">
1735                <span class="entry_type_name">float</span>
1736                <span class="entry_type_container">x</span>
1737
1738                <span class="entry_type_array">
1739                  4
1740                </span>
1741              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1742
1743
1744              <span class="entry_type_hwlevel">[full] </span>
1745
1746
1747                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1748
1749
1750            </td> <!-- entry_type -->
1751
1752            <td class="entry_description">
1753              <p>Gains applying to Bayer raw color channels for
1754white-balance.<wbr/></p>
1755            </td>
1756
1757            <td class="entry_units">
1758              Unitless gain factors
1759            </td>
1760
1761            <td class="entry_range">
1762            </td>
1763
1764            <td class="entry_tags">
1765            </td>
1766
1767          </tr>
1768          <tr class="entries_header">
1769            <th class="th_details" colspan="5">Details</th>
1770          </tr>
1771          <tr class="entry_cont">
1772            <td class="entry_details" colspan="5">
1773              <p>These per-channel gains are either set by the camera device
1774when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1775TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1776request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1777TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1778<p>The gains in the result metadata are the gains actually
1779applied by the camera device to the current frame.<wbr/></p>
1780<p>The valid range of gains varies on different devices,<wbr/> but gains
1781between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1782device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1783this can create color artifacts.<wbr/></p>
1784            </td>
1785          </tr>
1786
1787          <tr class="entries_header">
1788            <th class="th_details" colspan="5">HAL Implementation Details</th>
1789          </tr>
1790          <tr class="entry_cont">
1791            <td class="entry_details" colspan="5">
1792              <p>The 4-channel white-balance gains are defined in
1793the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1794for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1795is the gain for green pixels on the odd rows.<wbr/></p>
1796<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1797channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1798<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1799            </td>
1800          </tr>
1801
1802          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1803           <!-- end of entry -->
1804
1805
1806          <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1807            <td class="entry_name
1808             " rowspan="3">
1809              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1810            </td>
1811            <td class="entry_type">
1812                <span class="entry_type_name entry_type_name_enum">byte</span>
1813
1814              <span class="entry_type_visibility"> [public]</span>
1815
1816
1817              <span class="entry_type_hwlevel">[legacy] </span>
1818
1819
1820
1821                <ul class="entry_type_enum">
1822                  <li>
1823                    <span class="entry_type_enum_name">OFF</span>
1824                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1825                  </li>
1826                  <li>
1827                    <span class="entry_type_enum_name">FAST</span>
1828                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1829relative to sensor raw output.<wbr/></p></span>
1830                  </li>
1831                  <li>
1832                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1833                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1834reduced (relative to sensor raw output rate)</p></span>
1835                  </li>
1836                </ul>
1837
1838            </td> <!-- entry_type -->
1839
1840            <td class="entry_description">
1841              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1842            </td>
1843
1844            <td class="entry_units">
1845            </td>
1846
1847            <td class="entry_range">
1848              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1849            </td>
1850
1851            <td class="entry_tags">
1852            </td>
1853
1854          </tr>
1855          <tr class="entries_header">
1856            <th class="th_details" colspan="5">Details</th>
1857          </tr>
1858          <tr class="entry_cont">
1859            <td class="entry_details" colspan="5">
1860              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1861can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1862the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1863minimize the chromatic artifacts that may occur along the object boundaries in an
1864image.<wbr/></p>
1865<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1866correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1867use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1868capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1869applying aberration correction.<wbr/></p>
1870<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1871            </td>
1872          </tr>
1873
1874
1875          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1876           <!-- end of entry -->
1877
1878
1879
1880      <!-- end of kind -->
1881      </tbody>
1882      <tr><td colspan="6" class="kind">static</td></tr>
1883
1884      <thead class="entries_header">
1885        <tr>
1886          <th class="th_name">Property Name</th>
1887          <th class="th_type">Type</th>
1888          <th class="th_description">Description</th>
1889          <th class="th_units">Units</th>
1890          <th class="th_range">Range</th>
1891          <th class="th_tags">Tags</th>
1892        </tr>
1893      </thead>
1894
1895      <tbody>
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906          <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1907            <td class="entry_name
1908             " rowspan="5">
1909              android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
1910            </td>
1911            <td class="entry_type">
1912                <span class="entry_type_name">byte</span>
1913                <span class="entry_type_container">x</span>
1914
1915                <span class="entry_type_array">
1916                  n
1917                </span>
1918              <span class="entry_type_visibility"> [public as enumList]</span>
1919
1920
1921              <span class="entry_type_hwlevel">[legacy] </span>
1922
1923
1924                <div class="entry_type_notes">list of enums</div>
1925
1926
1927            </td> <!-- entry_type -->
1928
1929            <td class="entry_description">
1930              <p>List of aberration correction modes for <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a> that are
1931supported by this camera device.<wbr/></p>
1932            </td>
1933
1934            <td class="entry_units">
1935            </td>
1936
1937            <td class="entry_range">
1938              <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
1939            </td>
1940
1941            <td class="entry_tags">
1942              <ul class="entry_tags">
1943                  <li><a href="#tag_V1">V1</a></li>
1944              </ul>
1945            </td>
1946
1947          </tr>
1948          <tr class="entries_header">
1949            <th class="th_details" colspan="5">Details</th>
1950          </tr>
1951          <tr class="entry_cont">
1952            <td class="entry_details" colspan="5">
1953              <p>This key lists the valid modes for <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a>.<wbr/>  If no
1954aberration correction modes are available for a device,<wbr/> this list will solely include
1955OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
1956<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
1957OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
1958<p>LEGACY devices will always only support FAST mode.<wbr/></p>
1959            </td>
1960          </tr>
1961
1962          <tr class="entries_header">
1963            <th class="th_details" colspan="5">HAL Implementation Details</th>
1964          </tr>
1965          <tr class="entry_cont">
1966            <td class="entry_details" colspan="5">
1967              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
1968on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1969That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1970capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
1971            </td>
1972          </tr>
1973
1974          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1975           <!-- end of entry -->
1976
1977
1978
1979      <!-- end of kind -->
1980      </tbody>
1981
1982  <!-- end of section -->
1983  <tr><td colspan="6" id="section_control" class="section">control</td></tr>
1984
1985
1986      <tr><td colspan="6" class="kind">controls</td></tr>
1987
1988      <thead class="entries_header">
1989        <tr>
1990          <th class="th_name">Property Name</th>
1991          <th class="th_type">Type</th>
1992          <th class="th_description">Description</th>
1993          <th class="th_units">Units</th>
1994          <th class="th_range">Range</th>
1995          <th class="th_tags">Tags</th>
1996        </tr>
1997      </thead>
1998
1999      <tbody>
2000
2001
2002
2003
2004
2005
2006
2007
2008
2009
2010          <tr class="entry" id="controls_android.control.aeAntibandingMode">
2011            <td class="entry_name
2012             " rowspan="5">
2013              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2014            </td>
2015            <td class="entry_type">
2016                <span class="entry_type_name entry_type_name_enum">byte</span>
2017
2018              <span class="entry_type_visibility"> [public]</span>
2019
2020
2021              <span class="entry_type_hwlevel">[legacy] </span>
2022
2023
2024
2025                <ul class="entry_type_enum">
2026                  <li>
2027                    <span class="entry_type_enum_name">OFF</span>
2028                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2029avoid banding problems.<wbr/></p></span>
2030                  </li>
2031                  <li>
2032                    <span class="entry_type_enum_name">50HZ</span>
2033                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2034avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2035                  </li>
2036                  <li>
2037                    <span class="entry_type_enum_name">60HZ</span>
2038                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2039avoid banding problems with 60Hz illumination
2040sources.<wbr/></p></span>
2041                  </li>
2042                  <li>
2043                    <span class="entry_type_enum_name">AUTO</span>
2044                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2045antibanding routine to the current illumination
2046condition.<wbr/> This is the default mode if AUTO is
2047available on given camera device.<wbr/></p></span>
2048                  </li>
2049                </ul>
2050
2051            </td> <!-- entry_type -->
2052
2053            <td class="entry_description">
2054              <p>The desired setting for the camera device's auto-exposure
2055algorithm's antibanding compensation.<wbr/></p>
2056            </td>
2057
2058            <td class="entry_units">
2059            </td>
2060
2061            <td class="entry_range">
2062              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2063            </td>
2064
2065            <td class="entry_tags">
2066              <ul class="entry_tags">
2067                  <li><a href="#tag_BC">BC</a></li>
2068              </ul>
2069            </td>
2070
2071          </tr>
2072          <tr class="entries_header">
2073            <th class="th_details" colspan="5">Details</th>
2074          </tr>
2075          <tr class="entry_cont">
2076            <td class="entry_details" colspan="5">
2077              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2078lights,<wbr/> flicker at the rate of the power supply frequency
2079(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2080typically not noticeable to a person,<wbr/> it can be visible to
2081a camera device.<wbr/> If a camera sets its exposure time to the
2082wrong value,<wbr/> the flicker may become visible in the
2083viewfinder as flicker or in a final captured image,<wbr/> as a
2084set of variable-brightness bands across the image.<wbr/></p>
2085<p>Therefore,<wbr/> the auto-exposure routines of camera devices
2086include antibanding routines that ensure that the chosen
2087exposure value will not cause such banding.<wbr/> The choice of
2088exposure time depends on the rate of flicker,<wbr/> which the
2089camera device can detect automatically,<wbr/> or the expected
2090rate can be selected by the application using this
2091control.<wbr/></p>
2092<p>A given camera device may not support all of the possible
2093options for the antibanding mode.<wbr/> The
2094<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2095the available modes for a given camera device.<wbr/></p>
2096<p>AUTO mode is the default if it is available on given
2097camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2098default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2099and 60HZ will be available.<wbr/></p>
2100<p>If manual exposure control is enabled (by setting
2101<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
2102then this setting has no effect,<wbr/> and the application must
2103ensure it selects exposure times that do not cause banding
2104issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2105the application in this.<wbr/></p>
2106            </td>
2107          </tr>
2108
2109          <tr class="entries_header">
2110            <th class="th_details" colspan="5">HAL Implementation Details</th>
2111          </tr>
2112          <tr class="entry_cont">
2113            <td class="entry_details" colspan="5">
2114              <p>For all capture request templates,<wbr/> this field must be set
2115to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2116the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
211760HZ must be available.<wbr/></p>
2118<p>If manual exposure control is enabled (by setting
2119<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
2120then the exposure values provided by the application must not be
2121adjusted for antibanding.<wbr/></p>
2122            </td>
2123          </tr>
2124
2125          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2126           <!-- end of entry -->
2127
2128
2129          <tr class="entry" id="controls_android.control.aeExposureCompensation">
2130            <td class="entry_name
2131             " rowspan="3">
2132              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2133            </td>
2134            <td class="entry_type">
2135                <span class="entry_type_name">int32</span>
2136
2137              <span class="entry_type_visibility"> [public]</span>
2138
2139
2140              <span class="entry_type_hwlevel">[legacy] </span>
2141
2142
2143
2144
2145            </td> <!-- entry_type -->
2146
2147            <td class="entry_description">
2148              <p>Adjustment to auto-exposure (AE) target image
2149brightness.<wbr/></p>
2150            </td>
2151
2152            <td class="entry_units">
2153              Compensation steps
2154            </td>
2155
2156            <td class="entry_range">
2157              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2158            </td>
2159
2160            <td class="entry_tags">
2161              <ul class="entry_tags">
2162                  <li><a href="#tag_BC">BC</a></li>
2163              </ul>
2164            </td>
2165
2166          </tr>
2167          <tr class="entries_header">
2168            <th class="th_details" colspan="5">Details</th>
2169          </tr>
2170          <tr class="entry_cont">
2171            <td class="entry_details" colspan="5">
2172              <p>The adjustment is measured as a count of steps,<wbr/> with the
2173step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2174allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2175<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2176will mean an exposure compensation of +2 EV; -3 will mean an
2177exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2178of image brightness.<wbr/> Note that this control will only be
2179effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2180will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2181<p>In the event of exposure compensation value being changed,<wbr/> camera device
2182may take several frames to reach the newly requested exposure target.<wbr/>
2183During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2184state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
2185change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2186FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2187            </td>
2188          </tr>
2189
2190
2191          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2192           <!-- end of entry -->
2193
2194
2195          <tr class="entry" id="controls_android.control.aeLock">
2196            <td class="entry_name
2197             " rowspan="3">
2198              android.<wbr/>control.<wbr/>ae<wbr/>Lock
2199            </td>
2200            <td class="entry_type">
2201                <span class="entry_type_name entry_type_name_enum">byte</span>
2202
2203              <span class="entry_type_visibility"> [public as boolean]</span>
2204
2205
2206              <span class="entry_type_hwlevel">[legacy] </span>
2207
2208
2209
2210                <ul class="entry_type_enum">
2211                  <li>
2212                    <span class="entry_type_enum_name">OFF</span>
2213                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2214is free to update its parameters.<wbr/></p></span>
2215                  </li>
2216                  <li>
2217                    <span class="entry_type_enum_name">ON</span>
2218                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2219must not update the exposure and sensitivity parameters
2220while the lock is active.<wbr/></p>
2221<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2222will still take effect while auto-exposure is locked.<wbr/></p>
2223<p>Some rare LEGACY devices may not support
2224this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2225                  </li>
2226                </ul>
2227
2228            </td> <!-- entry_type -->
2229
2230            <td class="entry_description">
2231              <p>Whether auto-exposure (AE) is currently locked to its latest
2232calculated values.<wbr/></p>
2233            </td>
2234
2235            <td class="entry_units">
2236            </td>
2237
2238            <td class="entry_range">
2239            </td>
2240
2241            <td class="entry_tags">
2242              <ul class="entry_tags">
2243                  <li><a href="#tag_BC">BC</a></li>
2244              </ul>
2245            </td>
2246
2247          </tr>
2248          <tr class="entries_header">
2249            <th class="th_details" colspan="5">Details</th>
2250          </tr>
2251          <tr class="entry_cont">
2252            <td class="entry_details" colspan="5">
2253              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2254and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2255<p>Note that even when AE is locked,<wbr/> the flash may be fired if
2256the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2257ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2258<p>When <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> is changed,<wbr/> even if the AE lock
2259is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2260<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2261when AE is already locked,<wbr/> the camera device will not change the exposure time
2262(<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) and sensitivity (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
2263parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2264is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2265<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> the scene may become overexposed.<wbr/>
2266Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2267<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2268the AE if AE is locked by the camera device internally during precapture metering
2269sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2270ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2271will never succeed in a sequence of preview requests where AE lock is always set
2272to <code>false</code>.<wbr/></p>
2273<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2274get locked do not necessarily correspond to the settings that were present in the
2275latest capture result received from the camera device,<wbr/> since additional captures
2276and AE updates may have occurred even before the result was sent out.<wbr/> If an
2277application is switching between automatic and manual control and wishes to eliminate
2278any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2279<ol>
2280<li>Starting in auto-AE mode:</li>
2281<li>Lock AE</li>
2282<li>Wait for the first result to be output that has the AE locked</li>
2283<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2284<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2285</ol>
2286<p>See <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE lock related state transition details.<wbr/></p>
2287            </td>
2288          </tr>
2289
2290
2291          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2292           <!-- end of entry -->
2293
2294
2295          <tr class="entry" id="controls_android.control.aeMode">
2296            <td class="entry_name
2297             " rowspan="3">
2298              android.<wbr/>control.<wbr/>ae<wbr/>Mode
2299            </td>
2300            <td class="entry_type">
2301                <span class="entry_type_name entry_type_name_enum">byte</span>
2302
2303              <span class="entry_type_visibility"> [public]</span>
2304
2305
2306              <span class="entry_type_hwlevel">[legacy] </span>
2307
2308
2309
2310                <ul class="entry_type_enum">
2311                  <li>
2312                    <span class="entry_type_enum_name">OFF</span>
2313                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2314<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2315<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2316<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2317device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2318a flash unit for this camera device.<wbr/></p>
2319<p>Note that auto-white balance (AWB) and auto-focus (AF)
2320behavior is device dependent when AE is in OFF mode.<wbr/>
2321To have consistent behavior across different devices,<wbr/>
2322it is recommended to either set AWB and AF to OFF mode
2323or lock AWB and AF before setting AE to OFF.<wbr/>
2324See <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/>
2325<a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>,<wbr/> and <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2326for more details.<wbr/></p>
2327<p>LEGACY devices do not support the OFF mode and will
2328override attempts to use this value to ON.<wbr/></p></span>
2329                  </li>
2330                  <li>
2331                    <span class="entry_type_enum_name">ON</span>
2332                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2333with no flash control.<wbr/></p>
2334<p>The application's values for
2335<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2336<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2337<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2338application has control over the various
2339android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2340                  </li>
2341                  <li>
2342                    <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
2343                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2344the camera's flash unit,<wbr/> firing it in low-light
2345conditions.<wbr/></p>
2346<p>The flash may be fired during a precapture sequence
2347(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2348may be fired for captures for which the
2349<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2350STILL_<wbr/>CAPTURE</p></span>
2351                  </li>
2352                  <li>
2353                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
2354                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2355the camera's flash unit,<wbr/> always firing it for still
2356captures.<wbr/></p>
2357<p>The flash may be fired during a precapture sequence
2358(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2359will always be fired for captures for which the
2360<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2361STILL_<wbr/>CAPTURE</p></span>
2362                  </li>
2363                  <li>
2364                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
2365                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2366reduction.<wbr/></p>
2367<p>If deemed necessary by the camera device,<wbr/> a red eye
2368reduction flash will fire during the precapture
2369sequence.<wbr/></p></span>
2370                  </li>
2371                </ul>
2372
2373            </td> <!-- entry_type -->
2374
2375            <td class="entry_description">
2376              <p>The desired mode for the camera device's
2377auto-exposure routine.<wbr/></p>
2378            </td>
2379
2380            <td class="entry_units">
2381            </td>
2382
2383            <td class="entry_range">
2384              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2385            </td>
2386
2387            <td class="entry_tags">
2388              <ul class="entry_tags">
2389                  <li><a href="#tag_BC">BC</a></li>
2390              </ul>
2391            </td>
2392
2393          </tr>
2394          <tr class="entries_header">
2395            <th class="th_details" colspan="5">Details</th>
2396          </tr>
2397          <tr class="entry_cont">
2398            <td class="entry_details" colspan="5">
2399              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2400AUTO.<wbr/></p>
2401<p>When set to any of the ON modes,<wbr/> the camera device's
2402auto-exposure routine is enabled,<wbr/> overriding the
2403application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2404and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2405<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2406<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2407is selected,<wbr/> the camera device's flash unit controls are
2408also overridden.<wbr/></p>
2409<p>The FLASH modes are only available if the camera device
2410has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
2411<p>If flash TORCH mode is desired,<wbr/> this field must be set to
2412ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2413<p>When set to any of the ON modes,<wbr/> the values chosen by the
2414camera device auto-exposure routine for the overridden
2415fields for a given capture will be available in its
2416CaptureResult.<wbr/></p>
2417            </td>
2418          </tr>
2419
2420
2421          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2422           <!-- end of entry -->
2423
2424
2425          <tr class="entry" id="controls_android.control.aeRegions">
2426            <td class="entry_name
2427             " rowspan="5">
2428              android.<wbr/>control.<wbr/>ae<wbr/>Regions
2429            </td>
2430            <td class="entry_type">
2431                <span class="entry_type_name">int32</span>
2432                <span class="entry_type_container">x</span>
2433
2434                <span class="entry_type_array">
2435                  5 x area_count
2436                </span>
2437              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2438
2439
2440
2441
2442
2443
2444            </td> <!-- entry_type -->
2445
2446            <td class="entry_description">
2447              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2448            </td>
2449
2450            <td class="entry_units">
2451              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2452            </td>
2453
2454            <td class="entry_range">
2455              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2456<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2457            </td>
2458
2459            <td class="entry_tags">
2460              <ul class="entry_tags">
2461                  <li><a href="#tag_BC">BC</a></li>
2462              </ul>
2463            </td>
2464
2465          </tr>
2466          <tr class="entries_header">
2467            <th class="th_details" colspan="5">Details</th>
2468          </tr>
2469          <tr class="entry_cont">
2470            <td class="entry_details" colspan="5">
2471              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2472Otherwise will always be present.<wbr/></p>
2473<p>The maximum number of regions supported by the device is determined by the value
2474of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2475<p>The coordinate system is based on the active pixel array,<wbr/>
2476with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2477(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2478<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2479bottom-right pixel in the active pixel array.<wbr/></p>
2480<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2481for every pixel in the area.<wbr/> This means that a large metering area
2482with the same weight as a smaller area will have more effect in
2483the metering result.<wbr/> Metering areas can partially overlap and the
2484camera device will add the weights in the overlap region.<wbr/></p>
2485<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2486region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2487weight is ignored.<wbr/></p>
2488<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2489camera device.<wbr/></p>
2490<p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
2491capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2492region and output only the intersection rectangle as the metering region in the result
2493metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
2494not reported in the result metadata.<wbr/></p>
2495            </td>
2496          </tr>
2497
2498          <tr class="entries_header">
2499            <th class="th_details" colspan="5">HAL Implementation Details</th>
2500          </tr>
2501          <tr class="entry_cont">
2502            <td class="entry_details" colspan="5">
2503              <p>The HAL level representation of MeteringRectangle[] is a
2504int[5 * area_<wbr/>count].<wbr/>
2505Every five elements represent a metering region of
2506(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2507The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2508exclusive on xmax and ymax.<wbr/></p>
2509            </td>
2510          </tr>
2511
2512          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2513           <!-- end of entry -->
2514
2515
2516          <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2517            <td class="entry_name
2518             " rowspan="3">
2519              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2520            </td>
2521            <td class="entry_type">
2522                <span class="entry_type_name">int32</span>
2523                <span class="entry_type_container">x</span>
2524
2525                <span class="entry_type_array">
2526                  2
2527                </span>
2528              <span class="entry_type_visibility"> [public as rangeInt]</span>
2529
2530
2531              <span class="entry_type_hwlevel">[legacy] </span>
2532
2533
2534
2535
2536            </td> <!-- entry_type -->
2537
2538            <td class="entry_description">
2539              <p>Range over which the auto-exposure routine can
2540adjust the capture frame rate to maintain good
2541exposure.<wbr/></p>
2542            </td>
2543
2544            <td class="entry_units">
2545              Frames per second (FPS)
2546            </td>
2547
2548            <td class="entry_range">
2549              <p>Any of the entries in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p>
2550            </td>
2551
2552            <td class="entry_tags">
2553              <ul class="entry_tags">
2554                  <li><a href="#tag_BC">BC</a></li>
2555              </ul>
2556            </td>
2557
2558          </tr>
2559          <tr class="entries_header">
2560            <th class="th_details" colspan="5">Details</th>
2561          </tr>
2562          <tr class="entry_cont">
2563            <td class="entry_details" colspan="5">
2564              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2565manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2566<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2567            </td>
2568          </tr>
2569
2570
2571          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2572           <!-- end of entry -->
2573
2574
2575          <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2576            <td class="entry_name
2577             " rowspan="5">
2578              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2579            </td>
2580            <td class="entry_type">
2581                <span class="entry_type_name entry_type_name_enum">byte</span>
2582
2583              <span class="entry_type_visibility"> [public]</span>
2584
2585
2586              <span class="entry_type_hwlevel">[limited] </span>
2587
2588
2589
2590                <ul class="entry_type_enum">
2591                  <li>
2592                    <span class="entry_type_enum_name">IDLE</span>
2593                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2594                  </li>
2595                  <li>
2596                    <span class="entry_type_enum_name">START</span>
2597                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2598by the camera device.<wbr/></p>
2599<p>The exact effect of the precapture trigger depends on
2600the current AE mode and state.<wbr/></p></span>
2601                  </li>
2602                  <li>
2603                    <span class="entry_type_enum_name">CANCEL</span>
2604                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2605precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2606initial state.<wbr/></p></span>
2607                  </li>
2608                </ul>
2609
2610            </td> <!-- entry_type -->
2611
2612            <td class="entry_description">
2613              <p>Whether the camera device will trigger a precapture
2614metering sequence when it processes this request.<wbr/></p>
2615            </td>
2616
2617            <td class="entry_units">
2618            </td>
2619
2620            <td class="entry_range">
2621            </td>
2622
2623            <td class="entry_tags">
2624              <ul class="entry_tags">
2625                  <li><a href="#tag_BC">BC</a></li>
2626              </ul>
2627            </td>
2628
2629          </tr>
2630          <tr class="entries_header">
2631            <th class="th_details" colspan="5">Details</th>
2632          </tr>
2633          <tr class="entry_cont">
2634            <td class="entry_details" colspan="5">
2635              <p>This entry is normally set to IDLE,<wbr/> or is not
2636included at all in the request settings.<wbr/> When included and
2637set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2638precapture metering sequence.<wbr/></p>
2639<p>When set to CANCEL,<wbr/> the camera device will cancel any active
2640precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2641If a precapture metering sequence is already completed,<wbr/> and the camera
2642device has implicitly locked the AE for subsequent still capture,<wbr/> the
2643CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2644<p>The precapture sequence should be triggered before starting a
2645high-quality still capture for final metering decisions to
2646be made,<wbr/> and for firing pre-capture flash pulses to estimate
2647scene brightness and required final capture flash power,<wbr/> when
2648the flash is enabled.<wbr/></p>
2649<p>Normally,<wbr/> this entry should be set to START for only a
2650single request,<wbr/> and the application should wait until the
2651sequence completes before starting a new one.<wbr/></p>
2652<p>When a precapture metering sequence is finished,<wbr/> the camera device
2653may lock the auto-exposure routine internally to be able to accurately expose the
2654subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2655For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2656submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2657submit a request with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == true</code>,<wbr/> followed by a request
2658with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == false</code>,<wbr/> if the application decides not to submit a
2659still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2660API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2661internally locked AE if the application doesn't submit a still capture request after
2662the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2663be used in devices that have earlier API levels.<wbr/></p>
2664<p>The exact effect of auto-exposure (AE) precapture trigger
2665depends on the current AE mode and state; see
2666<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2667details.<wbr/></p>
2668<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2669capturing a high-resolution JPEG image will automatically trigger a
2670precapture sequence before the high-resolution capture,<wbr/> including
2671potentially firing a pre-capture flash.<wbr/></p>
2672<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2673simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2674the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2675focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2676trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2677changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
2678example.<wbr/></p>
2679<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2680the camera device will complete them in the optimal order for that device.<wbr/></p>
2681            </td>
2682          </tr>
2683
2684          <tr class="entries_header">
2685            <th class="th_details" colspan="5">HAL Implementation Details</th>
2686          </tr>
2687          <tr class="entry_cont">
2688            <td class="entry_details" colspan="5">
2689              <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2690(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
2691treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2692AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2693to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2694            </td>
2695          </tr>
2696
2697          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2698           <!-- end of entry -->
2699
2700
2701          <tr class="entry" id="controls_android.control.afMode">
2702            <td class="entry_name
2703             " rowspan="5">
2704              android.<wbr/>control.<wbr/>af<wbr/>Mode
2705            </td>
2706            <td class="entry_type">
2707                <span class="entry_type_name entry_type_name_enum">byte</span>
2708
2709              <span class="entry_type_visibility"> [public]</span>
2710
2711
2712              <span class="entry_type_hwlevel">[legacy] </span>
2713
2714
2715
2716                <ul class="entry_type_enum">
2717                  <li>
2718                    <span class="entry_type_enum_name">OFF</span>
2719                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2720<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2721application.<wbr/></p></span>
2722                  </li>
2723                  <li>
2724                    <span class="entry_type_enum_name">AUTO</span>
2725                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2726<p>In this mode,<wbr/> the lens does not move unless
2727the autofocus trigger action is called.<wbr/> When that trigger
2728is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2729the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2730<p>Always supported if lens is not fixed focus.<wbr/></p>
2731<p>Use <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> to determine if lens
2732is fixed-focus.<wbr/></p>
2733<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2734and sets the AF state to INACTIVE.<wbr/></p></span>
2735                  </li>
2736                  <li>
2737                    <span class="entry_type_enum_name">MACRO</span>
2738                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2739<p>In this mode,<wbr/> the lens does not move unless the
2740autofocus trigger action is called.<wbr/> When that trigger is
2741activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2742the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2743mode is optimized for focusing on objects very close to
2744the camera.<wbr/></p>
2745<p>When that trigger is activated,<wbr/> AF will transition to
2746ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2747NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2748position to default,<wbr/> and sets the AF state to
2749INACTIVE.<wbr/></p></span>
2750                  </li>
2751                  <li>
2752                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
2753                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2754position continually to attempt to provide a
2755constantly-in-focus image stream.<wbr/></p>
2756<p>The focusing behavior should be suitable for good quality
2757video recording; typically this means slower focus
2758movement and no overshoots.<wbr/> When the AF trigger is not
2759involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2760and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2761states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2762the algorithm should immediately transition into
2763AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2764lens position until a cancel AF trigger is received.<wbr/></p>
2765<p>Once cancel is received,<wbr/> the algorithm should transition
2766back to INACTIVE and resume passive scan.<wbr/> Note that this
2767behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2768ongoing PASSIVE_<wbr/>SCAN must immediately be
2769canceled.<wbr/></p></span>
2770                  </li>
2771                  <li>
2772                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
2773                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2774position continually to attempt to provide a
2775constantly-in-focus image stream.<wbr/></p>
2776<p>The focusing behavior should be suitable for still image
2777capture; typically this means focusing as fast as
2778possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2779algorithm should start in INACTIVE state,<wbr/> and then
2780transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2781appropriate as it attempts to maintain focus.<wbr/> When the AF
2782trigger is activated,<wbr/> the algorithm should finish its
2783PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2784AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2785lens position until a cancel AF trigger is received.<wbr/></p>
2786<p>When the AF cancel trigger is activated,<wbr/> the algorithm
2787should transition back to INACTIVE and then act as if it
2788has just been started.<wbr/></p></span>
2789                  </li>
2790                  <li>
2791                    <span class="entry_type_enum_name">EDOF</span>
2792                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2793<p>The camera device will produce images with an extended
2794depth of field automatically; no special focusing
2795operations need to be done before taking a picture.<wbr/></p>
2796<p>AF triggers are ignored,<wbr/> and the AF state will always be
2797INACTIVE.<wbr/></p></span>
2798                  </li>
2799                </ul>
2800
2801            </td> <!-- entry_type -->
2802
2803            <td class="entry_description">
2804              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2805mode it is set to.<wbr/></p>
2806            </td>
2807
2808            <td class="entry_units">
2809            </td>
2810
2811            <td class="entry_range">
2812              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2813            </td>
2814
2815            <td class="entry_tags">
2816              <ul class="entry_tags">
2817                  <li><a href="#tag_BC">BC</a></li>
2818              </ul>
2819            </td>
2820
2821          </tr>
2822          <tr class="entries_header">
2823            <th class="th_details" colspan="5">Details</th>
2824          </tr>
2825          <tr class="entry_cont">
2826            <td class="entry_details" colspan="5">
2827              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2828(i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> &gt; 0</code>).<wbr/> Also note that
2829when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2830dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
2831setting <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> to OFF,<wbr/> or set AF mode to OFF when AE is OFF.<wbr/></p>
2832<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2833the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2834in result metadata.<wbr/></p>
2835            </td>
2836          </tr>
2837
2838          <tr class="entries_header">
2839            <th class="th_details" colspan="5">HAL Implementation Details</th>
2840          </tr>
2841          <tr class="entry_cont">
2842            <td class="entry_details" colspan="5">
2843              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2844request (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> <code>==</code> START).<wbr/> After an AF trigger,<wbr/> the afState will end
2845up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2846<a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> which indicates that the lens is
2847locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2848after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2849the same focal plane remains in focus.<wbr/></p>
2850<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2851scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2852(see <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> the HAL should maintain the
2853same lock behavior as above.<wbr/></p>
2854<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2855focus distance control depends on the <a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a>.<wbr/>
2856However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2857manual control.<wbr/></p>
2858<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2859camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
2860remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
2861by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
2862that will arise on camera modules with open-loop VCMs.<wbr/></p>
2863            </td>
2864          </tr>
2865
2866          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2867           <!-- end of entry -->
2868
2869
2870          <tr class="entry" id="controls_android.control.afRegions">
2871            <td class="entry_name
2872             " rowspan="5">
2873              android.<wbr/>control.<wbr/>af<wbr/>Regions
2874            </td>
2875            <td class="entry_type">
2876                <span class="entry_type_name">int32</span>
2877                <span class="entry_type_container">x</span>
2878
2879                <span class="entry_type_array">
2880                  5 x area_count
2881                </span>
2882              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2883
2884
2885
2886
2887
2888
2889            </td> <!-- entry_type -->
2890
2891            <td class="entry_description">
2892              <p>List of metering areas to use for auto-focus.<wbr/></p>
2893            </td>
2894
2895            <td class="entry_units">
2896              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2897            </td>
2898
2899            <td class="entry_range">
2900              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2901<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2902            </td>
2903
2904            <td class="entry_tags">
2905              <ul class="entry_tags">
2906                  <li><a href="#tag_BC">BC</a></li>
2907              </ul>
2908            </td>
2909
2910          </tr>
2911          <tr class="entries_header">
2912            <th class="th_details" colspan="5">Details</th>
2913          </tr>
2914          <tr class="entry_cont">
2915            <td class="entry_details" colspan="5">
2916              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
2917Otherwise will always be present.<wbr/></p>
2918<p>The maximum number of focus areas supported by the device is determined by the value
2919of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
2920<p>The coordinate system is based on the active pixel array,<wbr/>
2921with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2922(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2923<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2924bottom-right pixel in the active pixel array.<wbr/></p>
2925<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2926for every pixel in the area.<wbr/> This means that a large metering area
2927with the same weight as a smaller area will have more effect in
2928the metering result.<wbr/> Metering areas can partially overlap and the
2929camera device will add the weights in the overlap region.<wbr/></p>
2930<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
2931is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
2932ignored.<wbr/></p>
2933<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2934camera device.<wbr/></p>
2935<p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
2936capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2937region and output only the intersection rectangle as the metering region in the result
2938metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
2939not reported in the result metadata.<wbr/></p>
2940            </td>
2941          </tr>
2942
2943          <tr class="entries_header">
2944            <th class="th_details" colspan="5">HAL Implementation Details</th>
2945          </tr>
2946          <tr class="entry_cont">
2947            <td class="entry_details" colspan="5">
2948              <p>The HAL level representation of MeteringRectangle[] is a
2949int[5 * area_<wbr/>count].<wbr/>
2950Every five elements represent a metering region of
2951(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2952The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2953exclusive on xmax and ymax.<wbr/></p>
2954            </td>
2955          </tr>
2956
2957          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2958           <!-- end of entry -->
2959
2960
2961          <tr class="entry" id="controls_android.control.afTrigger">
2962            <td class="entry_name
2963             " rowspan="5">
2964              android.<wbr/>control.<wbr/>af<wbr/>Trigger
2965            </td>
2966            <td class="entry_type">
2967                <span class="entry_type_name entry_type_name_enum">byte</span>
2968
2969              <span class="entry_type_visibility"> [public]</span>
2970
2971
2972              <span class="entry_type_hwlevel">[legacy] </span>
2973
2974
2975
2976                <ul class="entry_type_enum">
2977                  <li>
2978                    <span class="entry_type_enum_name">IDLE</span>
2979                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2980                  </li>
2981                  <li>
2982                    <span class="entry_type_enum_name">START</span>
2983                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
2984                  </li>
2985                  <li>
2986                    <span class="entry_type_enum_name">CANCEL</span>
2987                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
2988state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
2989                  </li>
2990                </ul>
2991
2992            </td> <!-- entry_type -->
2993
2994            <td class="entry_description">
2995              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
2996            </td>
2997
2998            <td class="entry_units">
2999            </td>
3000
3001            <td class="entry_range">
3002            </td>
3003
3004            <td class="entry_tags">
3005              <ul class="entry_tags">
3006                  <li><a href="#tag_BC">BC</a></li>
3007              </ul>
3008            </td>
3009
3010          </tr>
3011          <tr class="entries_header">
3012            <th class="th_details" colspan="5">Details</th>
3013          </tr>
3014          <tr class="entry_cont">
3015            <td class="entry_details" colspan="5">
3016              <p>This entry is normally set to IDLE,<wbr/> or is not
3017included at all in the request settings.<wbr/></p>
3018<p>When included and set to START,<wbr/> the camera device will trigger the
3019autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3020<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3021and return to its initial AF state.<wbr/></p>
3022<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3023single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3024START for multiple captures in a row means restarting the AF operation over
3025and over again.<wbr/></p>
3026<p>See <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for what the trigger means for each AF mode.<wbr/></p>
3027<p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>
3028simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3029the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3030focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3031trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3032changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3033            </td>
3034          </tr>
3035
3036          <tr class="entries_header">
3037            <th class="th_details" colspan="5">HAL Implementation Details</th>
3038          </tr>
3039          <tr class="entry_cont">
3040            <td class="entry_details" colspan="5">
3041              <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3042(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
3043treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3044AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3045to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3046            </td>
3047          </tr>
3048
3049          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3050           <!-- end of entry -->
3051
3052
3053          <tr class="entry" id="controls_android.control.awbLock">
3054            <td class="entry_name
3055             " rowspan="3">
3056              android.<wbr/>control.<wbr/>awb<wbr/>Lock
3057            </td>
3058            <td class="entry_type">
3059                <span class="entry_type_name entry_type_name_enum">byte</span>
3060
3061              <span class="entry_type_visibility"> [public as boolean]</span>
3062
3063
3064              <span class="entry_type_hwlevel">[legacy] </span>
3065
3066
3067
3068                <ul class="entry_type_enum">
3069                  <li>
3070                    <span class="entry_type_enum_name">OFF</span>
3071                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3072algorithm is free to update its parameters if in AUTO
3073mode.<wbr/></p></span>
3074                  </li>
3075                  <li>
3076                    <span class="entry_type_enum_name">ON</span>
3077                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3078algorithm will not update its parameters while the lock
3079is active.<wbr/></p></span>
3080                  </li>
3081                </ul>
3082
3083            </td> <!-- entry_type -->
3084
3085            <td class="entry_description">
3086              <p>Whether auto-white balance (AWB) is currently locked to its
3087latest calculated values.<wbr/></p>
3088            </td>
3089
3090            <td class="entry_units">
3091            </td>
3092
3093            <td class="entry_range">
3094            </td>
3095
3096            <td class="entry_tags">
3097              <ul class="entry_tags">
3098                  <li><a href="#tag_BC">BC</a></li>
3099              </ul>
3100            </td>
3101
3102          </tr>
3103          <tr class="entries_header">
3104            <th class="th_details" colspan="5">Details</th>
3105          </tr>
3106          <tr class="entry_cont">
3107            <td class="entry_details" colspan="5">
3108              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3109and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3110<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3111get locked do not necessarily correspond to the settings that were present in the
3112latest capture result received from the camera device,<wbr/> since additional captures
3113and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3114application is switching between automatic and manual control and wishes to eliminate
3115any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3116<ol>
3117<li>Starting in auto-AWB mode:</li>
3118<li>Lock AWB</li>
3119<li>Wait for the first result to be output that has the AWB locked</li>
3120<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3121<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3122</ol>
3123<p>Note that AWB lock is only meaningful when
3124<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3125AWB is already fixed to a specific setting.<wbr/></p>
3126<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3127            </td>
3128          </tr>
3129
3130
3131          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3132           <!-- end of entry -->
3133
3134
3135          <tr class="entry" id="controls_android.control.awbMode">
3136            <td class="entry_name
3137             " rowspan="3">
3138              android.<wbr/>control.<wbr/>awb<wbr/>Mode
3139            </td>
3140            <td class="entry_type">
3141                <span class="entry_type_name entry_type_name_enum">byte</span>
3142
3143              <span class="entry_type_visibility"> [public]</span>
3144
3145
3146              <span class="entry_type_hwlevel">[legacy] </span>
3147
3148
3149
3150                <ul class="entry_type_enum">
3151                  <li>
3152                    <span class="entry_type_enum_name">OFF</span>
3153                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3154<p>The application-selected color transform matrix
3155(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3156(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3157device for manual white balance control.<wbr/></p></span>
3158                  </li>
3159                  <li>
3160                    <span class="entry_type_enum_name">AUTO</span>
3161                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3162<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3163and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3164For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3165values used by the camera device for the transform and gains
3166will be available in the capture result for this request.<wbr/></p></span>
3167                  </li>
3168                  <li>
3169                    <span class="entry_type_enum_name">INCANDESCENT</span>
3170                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3171the camera device uses incandescent light as the assumed scene
3172illumination for white balance.<wbr/></p>
3173<p>While the exact white balance transforms are up to the
3174camera device,<wbr/> they will approximately match the CIE
3175standard illuminant A.<wbr/></p>
3176<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3177and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3178For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3179values used by the camera device for the transform and gains
3180will be available in the capture result for this request.<wbr/></p></span>
3181                  </li>
3182                  <li>
3183                    <span class="entry_type_enum_name">FLUORESCENT</span>
3184                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3185the camera device uses fluorescent light as the assumed scene
3186illumination for white balance.<wbr/></p>
3187<p>While the exact white balance transforms are up to the
3188camera device,<wbr/> they will approximately match the CIE
3189standard illuminant F2.<wbr/></p>
3190<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3191and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3192For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3193values used by the camera device for the transform and gains
3194will be available in the capture result for this request.<wbr/></p></span>
3195                  </li>
3196                  <li>
3197                    <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
3198                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3199the camera device uses warm fluorescent light as the assumed scene
3200illumination for white balance.<wbr/></p>
3201<p>While the exact white balance transforms are up to the
3202camera device,<wbr/> they will approximately match the CIE
3203standard illuminant F4.<wbr/></p>
3204<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3205and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3206For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3207values used by the camera device for the transform and gains
3208will be available in the capture result for this request.<wbr/></p></span>
3209                  </li>
3210                  <li>
3211                    <span class="entry_type_enum_name">DAYLIGHT</span>
3212                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3213the camera device uses daylight light as the assumed scene
3214illumination for white balance.<wbr/></p>
3215<p>While the exact white balance transforms are up to the
3216camera device,<wbr/> they will approximately match the CIE
3217standard illuminant D65.<wbr/></p>
3218<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3219and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3220For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3221values used by the camera device for the transform and gains
3222will be available in the capture result for this request.<wbr/></p></span>
3223                  </li>
3224                  <li>
3225                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
3226                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3227the camera device uses cloudy daylight light as the assumed scene
3228illumination for white balance.<wbr/></p>
3229<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3230and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3231For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3232values used by the camera device for the transform and gains
3233will be available in the capture result for this request.<wbr/></p></span>
3234                  </li>
3235                  <li>
3236                    <span class="entry_type_enum_name">TWILIGHT</span>
3237                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3238the camera device uses twilight light as the assumed scene
3239illumination for white balance.<wbr/></p>
3240<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3241and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3242For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3243values used by the camera device for the transform and gains
3244will be available in the capture result for this request.<wbr/></p></span>
3245                  </li>
3246                  <li>
3247                    <span class="entry_type_enum_name">SHADE</span>
3248                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3249the camera device uses shade light as the assumed scene
3250illumination for white balance.<wbr/></p>
3251<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3252and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3253For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3254values used by the camera device for the transform and gains
3255will be available in the capture result for this request.<wbr/></p></span>
3256                  </li>
3257                </ul>
3258
3259            </td> <!-- entry_type -->
3260
3261            <td class="entry_description">
3262              <p>Whether auto-white balance (AWB) is currently setting the color
3263transform fields,<wbr/> and what its illumination target
3264is.<wbr/></p>
3265            </td>
3266
3267            <td class="entry_units">
3268            </td>
3269
3270            <td class="entry_range">
3271              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3272            </td>
3273
3274            <td class="entry_tags">
3275              <ul class="entry_tags">
3276                  <li><a href="#tag_BC">BC</a></li>
3277              </ul>
3278            </td>
3279
3280          </tr>
3281          <tr class="entries_header">
3282            <th class="th_details" colspan="5">Details</th>
3283          </tr>
3284          <tr class="entry_cont">
3285            <td class="entry_details" colspan="5">
3286              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3287<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3288routine is enabled,<wbr/> overriding the application's selected
3289<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3290<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/> Note that when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
3291is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3292also set AWB mode to OFF or lock AWB by using <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> before
3293setting AE mode to OFF.<wbr/></p>
3294<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3295routine is disabled.<wbr/> The application manually controls the white
3296balance by <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>
3297and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3298<p>When set to any other modes,<wbr/> the camera device's auto-white
3299balance routine is disabled.<wbr/> The camera device uses each
3300particular illumination target for white balance
3301adjustment.<wbr/> The application's values for
3302<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3303<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3304<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3305            </td>
3306          </tr>
3307
3308
3309          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3310           <!-- end of entry -->
3311
3312
3313          <tr class="entry" id="controls_android.control.awbRegions">
3314            <td class="entry_name
3315             " rowspan="5">
3316              android.<wbr/>control.<wbr/>awb<wbr/>Regions
3317            </td>
3318            <td class="entry_type">
3319                <span class="entry_type_name">int32</span>
3320                <span class="entry_type_container">x</span>
3321
3322                <span class="entry_type_array">
3323                  5 x area_count
3324                </span>
3325              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3326
3327
3328
3329
3330
3331
3332            </td> <!-- entry_type -->
3333
3334            <td class="entry_description">
3335              <p>List of metering areas to use for auto-white-balance illuminant
3336estimation.<wbr/></p>
3337            </td>
3338
3339            <td class="entry_units">
3340              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3341            </td>
3342
3343            <td class="entry_range">
3344              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3345<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3346            </td>
3347
3348            <td class="entry_tags">
3349              <ul class="entry_tags">
3350                  <li><a href="#tag_BC">BC</a></li>
3351              </ul>
3352            </td>
3353
3354          </tr>
3355          <tr class="entries_header">
3356            <th class="th_details" colspan="5">Details</th>
3357          </tr>
3358          <tr class="entry_cont">
3359            <td class="entry_details" colspan="5">
3360              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3361Otherwise will always be present.<wbr/></p>
3362<p>The maximum number of regions supported by the device is determined by the value
3363of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3364<p>The coordinate system is based on the active pixel array,<wbr/>
3365with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3366(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3367<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3368bottom-right pixel in the active pixel array.<wbr/></p>
3369<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3370for every pixel in the area.<wbr/> This means that a large metering area
3371with the same weight as a smaller area will have more effect in
3372the metering result.<wbr/> Metering areas can partially overlap and the
3373camera device will add the weights in the overlap region.<wbr/></p>
3374<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3375only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
33760 weight is ignored.<wbr/></p>
3377<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3378camera device.<wbr/></p>
3379<p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
3380capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3381region and output only the intersection rectangle as the metering region in the result
3382metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3383not reported in the result metadata.<wbr/></p>
3384            </td>
3385          </tr>
3386
3387          <tr class="entries_header">
3388            <th class="th_details" colspan="5">HAL Implementation Details</th>
3389          </tr>
3390          <tr class="entry_cont">
3391            <td class="entry_details" colspan="5">
3392              <p>The HAL level representation of MeteringRectangle[] is a
3393int[5 * area_<wbr/>count].<wbr/>
3394Every five elements represent a metering region of
3395(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3396The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3397exclusive on xmax and ymax.<wbr/></p>
3398            </td>
3399          </tr>
3400
3401          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3402           <!-- end of entry -->
3403
3404
3405          <tr class="entry" id="controls_android.control.captureIntent">
3406            <td class="entry_name
3407             " rowspan="3">
3408              android.<wbr/>control.<wbr/>capture<wbr/>Intent
3409            </td>
3410            <td class="entry_type">
3411                <span class="entry_type_name entry_type_name_enum">byte</span>
3412
3413              <span class="entry_type_visibility"> [public]</span>
3414
3415
3416              <span class="entry_type_hwlevel">[legacy] </span>
3417
3418
3419
3420                <ul class="entry_type_enum">
3421                  <li>
3422                    <span class="entry_type_enum_name">CUSTOM</span>
3423                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3424categories.<wbr/> The camera device will default to preview-like
3425behavior.<wbr/></p></span>
3426                  </li>
3427                  <li>
3428                    <span class="entry_type_enum_name">PREVIEW</span>
3429                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3430<p>The precapture trigger may be used to start off a metering
3431w/<wbr/>flash sequence.<wbr/></p></span>
3432                  </li>
3433                  <li>
3434                    <span class="entry_type_enum_name">STILL_CAPTURE</span>
3435                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3436use case.<wbr/></p>
3437<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3438                  </li>
3439                  <li>
3440                    <span class="entry_type_enum_name">VIDEO_RECORD</span>
3441                    <span class="entry_type_enum_notes"><p>This request is for a video recording
3442use case.<wbr/></p></span>
3443                  </li>
3444                  <li>
3445                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
3446                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3447image while recording video) use case.<wbr/></p>
3448<p>The camera device should take the highest-quality image
3449possible (given the other settings) without disrupting the
3450frame rate of video recording.<wbr/>  </p></span>
3451                  </li>
3452                  <li>
3453                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
3454                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3455application will stream full-resolution images and
3456reprocess one or several later for a final
3457capture.<wbr/></p></span>
3458                  </li>
3459                  <li>
3460                    <span class="entry_type_enum_name">MANUAL</span>
3461                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3462the applications want to directly control the capture parameters.<wbr/></p>
3463<p>For example,<wbr/> the application may wish to manually control
3464<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> etc.<wbr/></p></span>
3465                  </li>
3466                </ul>
3467
3468            </td> <!-- entry_type -->
3469
3470            <td class="entry_description">
3471              <p>Information to the camera device 3A (auto-exposure,<wbr/>
3472auto-focus,<wbr/> auto-white balance) routines about the purpose
3473of this capture,<wbr/> to help the camera device to decide optimal 3A
3474strategy.<wbr/></p>
3475            </td>
3476
3477            <td class="entry_units">
3478            </td>
3479
3480            <td class="entry_range">
3481            </td>
3482
3483            <td class="entry_tags">
3484              <ul class="entry_tags">
3485                  <li><a href="#tag_BC">BC</a></li>
3486              </ul>
3487            </td>
3488
3489          </tr>
3490          <tr class="entries_header">
3491            <th class="th_details" colspan="5">Details</th>
3492          </tr>
3493          <tr class="entry_cont">
3494            <td class="entry_details" colspan="5">
3495              <p>This control (except for MANUAL) is only effective if
3496<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3497<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
3498contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
3499<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
3500always supported.<wbr/></p>
3501            </td>
3502          </tr>
3503
3504
3505          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3506           <!-- end of entry -->
3507
3508
3509          <tr class="entry" id="controls_android.control.effectMode">
3510            <td class="entry_name
3511             " rowspan="3">
3512              android.<wbr/>control.<wbr/>effect<wbr/>Mode
3513            </td>
3514            <td class="entry_type">
3515                <span class="entry_type_name entry_type_name_enum">byte</span>
3516
3517              <span class="entry_type_visibility"> [public]</span>
3518
3519
3520              <span class="entry_type_hwlevel">[legacy] </span>
3521
3522
3523
3524                <ul class="entry_type_enum">
3525                  <li>
3526                    <span class="entry_type_enum_name">OFF</span>
3527                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3528                  </li>
3529                  <li>
3530                    <span class="entry_type_enum_name">MONO</span>
3531                    <span class="entry_type_enum_optional">[optional]</span>
3532                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3533a single color.<wbr/></p>
3534<p>This will typically be grayscale.<wbr/></p></span>
3535                  </li>
3536                  <li>
3537                    <span class="entry_type_enum_name">NEGATIVE</span>
3538                    <span class="entry_type_enum_optional">[optional]</span>
3539                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3540are inverted.<wbr/></p></span>
3541                  </li>
3542                  <li>
3543                    <span class="entry_type_enum_name">SOLARIZE</span>
3544                    <span class="entry_type_enum_optional">[optional]</span>
3545                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3546image is wholly or partially reversed in
3547tone.<wbr/></p></span>
3548                  </li>
3549                  <li>
3550                    <span class="entry_type_enum_name">SEPIA</span>
3551                    <span class="entry_type_enum_optional">[optional]</span>
3552                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3553gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3554                  </li>
3555                  <li>
3556                    <span class="entry_type_enum_name">POSTERIZE</span>
3557                    <span class="entry_type_enum_optional">[optional]</span>
3558                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3559discrete regions of tone rather than a continuous
3560gradient of tones.<wbr/></p></span>
3561                  </li>
3562                  <li>
3563                    <span class="entry_type_enum_name">WHITEBOARD</span>
3564                    <span class="entry_type_enum_optional">[optional]</span>
3565                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3566as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3567                  </li>
3568                  <li>
3569                    <span class="entry_type_enum_name">BLACKBOARD</span>
3570                    <span class="entry_type_enum_optional">[optional]</span>
3571                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3572as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3573                  </li>
3574                  <li>
3575                    <span class="entry_type_enum_name">AQUA</span>
3576                    <span class="entry_type_enum_optional">[optional]</span>
3577                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3578                  </li>
3579                </ul>
3580
3581            </td> <!-- entry_type -->
3582
3583            <td class="entry_description">
3584              <p>A special color effect to apply.<wbr/></p>
3585            </td>
3586
3587            <td class="entry_units">
3588            </td>
3589
3590            <td class="entry_range">
3591              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3592            </td>
3593
3594            <td class="entry_tags">
3595              <ul class="entry_tags">
3596                  <li><a href="#tag_BC">BC</a></li>
3597              </ul>
3598            </td>
3599
3600          </tr>
3601          <tr class="entries_header">
3602            <th class="th_details" colspan="5">Details</th>
3603          </tr>
3604          <tr class="entry_cont">
3605            <td class="entry_details" colspan="5">
3606              <p>When this mode is set,<wbr/> a color effect will be applied
3607to images produced by the camera device.<wbr/> The interpretation
3608and implementation of these color effects is left to the
3609implementor of the camera device,<wbr/> and should not be
3610depended on to be consistent (or present) across all
3611devices.<wbr/></p>
3612            </td>
3613          </tr>
3614
3615
3616          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3617           <!-- end of entry -->
3618
3619
3620          <tr class="entry" id="controls_android.control.mode">
3621            <td class="entry_name
3622             " rowspan="3">
3623              android.<wbr/>control.<wbr/>mode
3624            </td>
3625            <td class="entry_type">
3626                <span class="entry_type_name entry_type_name_enum">byte</span>
3627
3628              <span class="entry_type_visibility"> [public]</span>
3629
3630
3631              <span class="entry_type_hwlevel">[legacy] </span>
3632
3633
3634
3635                <ul class="entry_type_enum">
3636                  <li>
3637                    <span class="entry_type_enum_name">OFF</span>
3638                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3639<p>All control by the device's metering and focusing (3A)
3640routines is disabled,<wbr/> and no other settings in
3641android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3642<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3643device to select post-processing values for processing
3644blocks that do not allow for manual control,<wbr/> or are not
3645exposed by the camera API.<wbr/></p>
3646<p>However,<wbr/> the camera device's 3A routines may continue to
3647collect statistics and update their internal state so that
3648when control is switched to AUTO mode,<wbr/> good control values
3649can be immediately applied.<wbr/></p></span>
3650                  </li>
3651                  <li>
3652                    <span class="entry_type_enum_name">AUTO</span>
3653                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3654<p>Manual control of capture parameters is disabled.<wbr/> All
3655controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3656effect.<wbr/></p></span>
3657                  </li>
3658                  <li>
3659                    <span class="entry_type_enum_name">USE_SCENE_MODE</span>
3660                    <span class="entry_type_enum_optional">[optional]</span>
3661                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3662<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3663control.<wbr/>afMode controls; the camera device will ignore
3664those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3665FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3666This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3667<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3668contain some modes other than DISABLED).<wbr/></p></span>
3669                  </li>
3670                  <li>
3671                    <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
3672                    <span class="entry_type_enum_optional">[optional]</span>
3673                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3674used by camera device background auto-exposure,<wbr/> auto-white balance and
3675auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3676<p>Specifically,<wbr/> the 3A routines are locked to the last
3677values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3678USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3679collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3680discarded by the camera device.<wbr/></p></span>
3681                  </li>
3682                </ul>
3683
3684            </td> <!-- entry_type -->
3685
3686            <td class="entry_description">
3687              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3688routines.<wbr/></p>
3689            </td>
3690
3691            <td class="entry_units">
3692            </td>
3693
3694            <td class="entry_range">
3695              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3696            </td>
3697
3698            <td class="entry_tags">
3699              <ul class="entry_tags">
3700                  <li><a href="#tag_BC">BC</a></li>
3701              </ul>
3702            </td>
3703
3704          </tr>
3705          <tr class="entries_header">
3706            <th class="th_details" colspan="5">Details</th>
3707          </tr>
3708          <tr class="entry_cont">
3709            <td class="entry_details" colspan="5">
3710              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3711by the camera device is disabled.<wbr/> The application must set the fields for
3712capture parameters itself.<wbr/></p>
3713<p>When set to AUTO,<wbr/> the individual algorithm controls in
3714android.<wbr/>control.<wbr/>* are in effect,<wbr/> such as <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p>
3715<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3716android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
3717one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
3718as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
3719<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3720<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3721is that this frame will not be used by camera device background 3A statistics
3722update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3723where the application doesn't want a 3A manual control capture to affect
3724the subsequent auto 3A capture results.<wbr/></p>
3725            </td>
3726          </tr>
3727
3728
3729          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3730           <!-- end of entry -->
3731
3732
3733          <tr class="entry" id="controls_android.control.sceneMode">
3734            <td class="entry_name
3735             " rowspan="5">
3736              android.<wbr/>control.<wbr/>scene<wbr/>Mode
3737            </td>
3738            <td class="entry_type">
3739                <span class="entry_type_name entry_type_name_enum">byte</span>
3740
3741              <span class="entry_type_visibility"> [public]</span>
3742
3743
3744              <span class="entry_type_hwlevel">[legacy] </span>
3745
3746
3747
3748                <ul class="entry_type_enum">
3749                  <li>
3750                    <span class="entry_type_enum_name">DISABLED</span>
3751                    <span class="entry_type_enum_value">0</span>
3752                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3753                  </li>
3754                  <li>
3755                    <span class="entry_type_enum_name">FACE_PRIORITY</span>
3756                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3757detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3758auto-exposure routines.<wbr/></p>
3759<p>If face detection statistics are disabled
3760(i.<wbr/>e.<wbr/> <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> is set to OFF),<wbr/>
3761this should still operate correctly (but will not return
3762face detection statistics to the framework).<wbr/></p>
3763<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3764<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
3765remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3766                  </li>
3767                  <li>
3768                    <span class="entry_type_enum_name">ACTION</span>
3769                    <span class="entry_type_enum_optional">[optional]</span>
3770                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3771<p>Similar to SPORTS.<wbr/></p></span>
3772                  </li>
3773                  <li>
3774                    <span class="entry_type_enum_name">PORTRAIT</span>
3775                    <span class="entry_type_enum_optional">[optional]</span>
3776                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3777                  </li>
3778                  <li>
3779                    <span class="entry_type_enum_name">LANDSCAPE</span>
3780                    <span class="entry_type_enum_optional">[optional]</span>
3781                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3782                  </li>
3783                  <li>
3784                    <span class="entry_type_enum_name">NIGHT</span>
3785                    <span class="entry_type_enum_optional">[optional]</span>
3786                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3787                  </li>
3788                  <li>
3789                    <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
3790                    <span class="entry_type_enum_optional">[optional]</span>
3791                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3792settings.<wbr/></p></span>
3793                  </li>
3794                  <li>
3795                    <span class="entry_type_enum_name">THEATRE</span>
3796                    <span class="entry_type_enum_optional">[optional]</span>
3797                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3798remain off.<wbr/></p></span>
3799                  </li>
3800                  <li>
3801                    <span class="entry_type_enum_name">BEACH</span>
3802                    <span class="entry_type_enum_optional">[optional]</span>
3803                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3804                  </li>
3805                  <li>
3806                    <span class="entry_type_enum_name">SNOW</span>
3807                    <span class="entry_type_enum_optional">[optional]</span>
3808                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3809                  </li>
3810                  <li>
3811                    <span class="entry_type_enum_name">SUNSET</span>
3812                    <span class="entry_type_enum_optional">[optional]</span>
3813                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3814                  </li>
3815                  <li>
3816                    <span class="entry_type_enum_name">STEADYPHOTO</span>
3817                    <span class="entry_type_enum_optional">[optional]</span>
3818                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
3819device motion (for example: due to hand shake).<wbr/></p></span>
3820                  </li>
3821                  <li>
3822                    <span class="entry_type_enum_name">FIREWORKS</span>
3823                    <span class="entry_type_enum_optional">[optional]</span>
3824                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
3825                  </li>
3826                  <li>
3827                    <span class="entry_type_enum_name">SPORTS</span>
3828                    <span class="entry_type_enum_optional">[optional]</span>
3829                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
3830<p>Similar to ACTION.<wbr/></p></span>
3831                  </li>
3832                  <li>
3833                    <span class="entry_type_enum_name">PARTY</span>
3834                    <span class="entry_type_enum_optional">[optional]</span>
3835                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
3836people.<wbr/></p></span>
3837                  </li>
3838                  <li>
3839                    <span class="entry_type_enum_name">CANDLELIGHT</span>
3840                    <span class="entry_type_enum_optional">[optional]</span>
3841                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
3842is a flame.<wbr/></p></span>
3843                  </li>
3844                  <li>
3845                    <span class="entry_type_enum_name">BARCODE</span>
3846                    <span class="entry_type_enum_optional">[optional]</span>
3847                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
3848for use by camera applications that wish to read the
3849barcode value.<wbr/></p></span>
3850                  </li>
3851                  <li>
3852                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
3853                    <span class="entry_type_enum_deprecated">[deprecated]</span>
3854                    <span class="entry_type_enum_optional">[optional]</span>
3855                    <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
3856and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
3857for high speed video recording.<wbr/></p>
3858<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
3859<p>The supported high speed video sizes and fps ranges are specified in
3860<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
3861output frame rates,<wbr/> the application is only allowed to select video size
3862and fps range combinations listed in this static metadata.<wbr/> The fps range
3863can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
3864<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
3865ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
3866controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
3867and post-processing parameters is possible.<wbr/> All other controls operate the
3868same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
3869android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
3870<ul>
3871<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
3872<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
3873<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
3874<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
3875<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
3876<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
3877<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
3878<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
3879<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
3880<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
3881</ul>
3882<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
3883<ul>
3884<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (automatic flash for still capture will not work since aeMode is ON)</li>
3885<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
3886<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
3887<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
3888</ul>
3889<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
3890be lower than what camera can output,<wbr/> depending on the destination Surfaces for
3891the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
3892the application need check if the video encoder is capable of supporting the
3893high frame rate for a given video size,<wbr/> or it will end up with lower recording
3894frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
3895rate will be bounded by the screen refresh rate.<wbr/></p>
3896<p>The camera device will only support up to 2 output high speed streams
3897(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
3898in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
3899<ul>
3900<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
3901format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
3902min(2,<wbr/> <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>[Processed (but not-stalling)]).<wbr/></li>
3903<li>The stream sizes are selected from the sizes reported by
3904<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
3905<li>No processed non-stalling or raw streams are configured.<wbr/></li>
3906</ul>
3907<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
3908<a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> will be ignored by the camera device,<wbr/>
3909the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
3910and the returned capture result metadata will give the fps range choosen
3911by the camera device.<wbr/></p>
3912<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
3913reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
3914the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
3915                  </li>
3916                  <li>
3917                    <span class="entry_type_enum_name">HDR</span>
3918                    <span class="entry_type_enum_optional">[optional]</span>
3919                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
3920<p>In this scene mode,<wbr/> the camera device captures images
3921that keep a larger range of scene illumination levels
3922visible in the final image.<wbr/> For example,<wbr/> when taking a
3923picture of a object in front of a bright window,<wbr/> both
3924the object and the scene through the window may be
3925visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
3926one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
3927HDR mode generally takes much longer to capture a single
3928image,<wbr/> has no user control,<wbr/> and may have other artifacts
3929depending on the HDR method used.<wbr/></p>
3930<p>Therefore,<wbr/> HDR captures operate at a much slower rate
3931than regular captures.<wbr/></p>
3932<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
3933is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
3934STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
3935using a high dynamic range capture technique.<wbr/>  On LEGACY
3936devices,<wbr/> captures that target a JPEG-format output will
3937be captured with HDR,<wbr/> and the capture intent is not
3938relevant.<wbr/></p>
3939<p>The HDR capture may involve the device capturing a burst
3940of images internally and combining them into one,<wbr/> or it
3941may involve the device using specialized high dynamic
3942range capture hardware.<wbr/> In all cases,<wbr/> a single image is
3943produced in response to a capture request submitted
3944while in HDR mode.<wbr/></p>
3945<p>Since substantial post-processing is generally needed to
3946produce an HDR image,<wbr/> only YUV and JPEG outputs are
3947supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only
3948JPEG outputs are supported for LEGACY HDR
3949captures.<wbr/> Using a RAW output for HDR capture is not
3950supported.<wbr/></p></span>
3951                  </li>
3952                  <li>
3953                    <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
3954                    <span class="entry_type_enum_optional">[optional]</span>
3955                    <span class="entry_type_enum_hidden">[hidden]</span>
3956                    <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
3957device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
3958under low light conditions.<wbr/></p>
3959<p>The camera device may be tuned to expose the images in a reduced
3960sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
3961if the <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> gives range of [100,<wbr/> 1600],<wbr/>
3962the camera device auto-exposure routine tuning process may limit the actual
3963exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
3964exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
3965low light may be under-exposed when the sensor max exposure time (bounded by the
3966<a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the
3967ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
3968camera device auto-exposure routine to increase the sensitivity up to the max
3969sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
3970dark and the max exposure time is reached.<wbr/> The captured images may be noisier
3971compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
3972recommended that the application only use this scene mode when it is capable of
3973reducing the noise level of the captured images.<wbr/></p>
3974<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3975<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
3976remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
3977                  </li>
3978                </ul>
3979
3980            </td> <!-- entry_type -->
3981
3982            <td class="entry_description">
3983              <p>Control for which scene mode is currently active.<wbr/></p>
3984            </td>
3985
3986            <td class="entry_units">
3987            </td>
3988
3989            <td class="entry_range">
3990              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
3991            </td>
3992
3993            <td class="entry_tags">
3994              <ul class="entry_tags">
3995                  <li><a href="#tag_BC">BC</a></li>
3996              </ul>
3997            </td>
3998
3999          </tr>
4000          <tr class="entries_header">
4001            <th class="th_details" colspan="5">Details</th>
4002          </tr>
4003          <tr class="entry_cont">
4004            <td class="entry_details" colspan="5">
4005              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4006capture settings.<wbr/></p>
4007<p>This is the mode that that is active when
4008<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will
4009disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
4010while in use.<wbr/></p>
4011<p>The interpretation and implementation of these scene modes is left
4012to the implementor of the camera device.<wbr/> Their behavior will not be
4013consistent across all devices,<wbr/> and any given device may only implement
4014a subset of these modes.<wbr/></p>
4015            </td>
4016          </tr>
4017
4018          <tr class="entries_header">
4019            <th class="th_details" colspan="5">HAL Implementation Details</th>
4020          </tr>
4021          <tr class="entry_cont">
4022            <td class="entry_details" colspan="5">
4023              <p>HAL implementations that include scene modes are expected to provide
4024the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4025<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> in
4026<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4027<p>For HIGH_<wbr/>SPEED_<wbr/>VIDEO mode,<wbr/> if it is included in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/>
4028the HAL must list supported video size and fps range in
4029<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> For a given size,<wbr/> e.<wbr/>g.<wbr/>
40301280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
4031mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
4032requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
4033This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4034<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO
4035capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4036            </td>
4037          </tr>
4038
4039          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4040           <!-- end of entry -->
4041
4042
4043          <tr class="entry" id="controls_android.control.videoStabilizationMode">
4044            <td class="entry_name
4045             " rowspan="3">
4046              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4047            </td>
4048            <td class="entry_type">
4049                <span class="entry_type_name entry_type_name_enum">byte</span>
4050
4051              <span class="entry_type_visibility"> [public]</span>
4052
4053
4054              <span class="entry_type_hwlevel">[legacy] </span>
4055
4056
4057
4058                <ul class="entry_type_enum">
4059                  <li>
4060                    <span class="entry_type_enum_name">OFF</span>
4061                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4062                  </li>
4063                  <li>
4064                    <span class="entry_type_enum_name">ON</span>
4065                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4066                  </li>
4067                </ul>
4068
4069            </td> <!-- entry_type -->
4070
4071            <td class="entry_description">
4072              <p>Whether video stabilization is
4073active.<wbr/></p>
4074            </td>
4075
4076            <td class="entry_units">
4077            </td>
4078
4079            <td class="entry_range">
4080            </td>
4081
4082            <td class="entry_tags">
4083              <ul class="entry_tags">
4084                  <li><a href="#tag_BC">BC</a></li>
4085              </ul>
4086            </td>
4087
4088          </tr>
4089          <tr class="entries_header">
4090            <th class="th_details" colspan="5">Details</th>
4091          </tr>
4092          <tr class="entry_cont">
4093            <td class="entry_details" colspan="5">
4094              <p>Video stabilization automatically warps images from
4095the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4096<p>If enabled,<wbr/> video stabilization can modify the
4097<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4098<p>Switching between different video stabilization modes may take several
4099frames to initialize,<wbr/> the camera device will report the current mode
4100in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4101the video stabilization modes in the first several capture results may
4102still be "OFF",<wbr/> and it will become "ON" when the initialization is
4103done.<wbr/></p>
4104<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4105stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4106that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4107the recording resolution is less than or equal to 1920 x 1080 (width less than
4108or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4109frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
4110<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4111OFF if the recording output is not stabilized,<wbr/> or if there are no output
4112Surface types that can be stabilized.<wbr/></p>
4113<p>If a camera device supports both this mode and OIS
4114(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4115produce undesirable interaction,<wbr/> so it is recommended not to enable
4116both at the same time.<wbr/></p>
4117            </td>
4118          </tr>
4119
4120
4121          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4122           <!-- end of entry -->
4123
4124
4125
4126      <!-- end of kind -->
4127      </tbody>
4128      <tr><td colspan="6" class="kind">static</td></tr>
4129
4130      <thead class="entries_header">
4131        <tr>
4132          <th class="th_name">Property Name</th>
4133          <th class="th_type">Type</th>
4134          <th class="th_description">Description</th>
4135          <th class="th_units">Units</th>
4136          <th class="th_range">Range</th>
4137          <th class="th_tags">Tags</th>
4138        </tr>
4139      </thead>
4140
4141      <tbody>
4142
4143
4144
4145
4146
4147
4148
4149
4150
4151
4152          <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4153            <td class="entry_name
4154             " rowspan="3">
4155              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4156            </td>
4157            <td class="entry_type">
4158                <span class="entry_type_name">byte</span>
4159                <span class="entry_type_container">x</span>
4160
4161                <span class="entry_type_array">
4162                  n
4163                </span>
4164              <span class="entry_type_visibility"> [public as enumList]</span>
4165
4166
4167              <span class="entry_type_hwlevel">[legacy] </span>
4168
4169
4170                <div class="entry_type_notes">list of enums</div>
4171
4172
4173            </td> <!-- entry_type -->
4174
4175            <td class="entry_description">
4176              <p>List of auto-exposure antibanding modes for <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> that are
4177supported by this camera device.<wbr/></p>
4178            </td>
4179
4180            <td class="entry_units">
4181            </td>
4182
4183            <td class="entry_range">
4184              <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4185            </td>
4186
4187            <td class="entry_tags">
4188              <ul class="entry_tags">
4189                  <li><a href="#tag_BC">BC</a></li>
4190              </ul>
4191            </td>
4192
4193          </tr>
4194          <tr class="entries_header">
4195            <th class="th_details" colspan="5">Details</th>
4196          </tr>
4197          <tr class="entry_cont">
4198            <td class="entry_details" colspan="5">
4199              <p>Not all of the auto-exposure anti-banding modes may be
4200supported by a given camera device.<wbr/> This field lists the
4201valid anti-banding modes that the application may request
4202for this camera device with the
4203<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4204            </td>
4205          </tr>
4206
4207
4208          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4209           <!-- end of entry -->
4210
4211
4212          <tr class="entry" id="static_android.control.aeAvailableModes">
4213            <td class="entry_name
4214             " rowspan="3">
4215              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4216            </td>
4217            <td class="entry_type">
4218                <span class="entry_type_name">byte</span>
4219                <span class="entry_type_container">x</span>
4220
4221                <span class="entry_type_array">
4222                  n
4223                </span>
4224              <span class="entry_type_visibility"> [public as enumList]</span>
4225
4226
4227              <span class="entry_type_hwlevel">[legacy] </span>
4228
4229
4230                <div class="entry_type_notes">list of enums</div>
4231
4232
4233            </td> <!-- entry_type -->
4234
4235            <td class="entry_description">
4236              <p>List of auto-exposure modes for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> that are supported by this camera
4237device.<wbr/></p>
4238            </td>
4239
4240            <td class="entry_units">
4241            </td>
4242
4243            <td class="entry_range">
4244              <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4245            </td>
4246
4247            <td class="entry_tags">
4248              <ul class="entry_tags">
4249                  <li><a href="#tag_BC">BC</a></li>
4250              </ul>
4251            </td>
4252
4253          </tr>
4254          <tr class="entries_header">
4255            <th class="th_details" colspan="5">Details</th>
4256          </tr>
4257          <tr class="entry_cont">
4258            <td class="entry_details" colspan="5">
4259              <p>Not all the auto-exposure modes may be supported by a
4260given camera device,<wbr/> especially if no flash unit is
4261available.<wbr/> This entry lists the valid modes for
4262<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4263<p>All camera devices support ON,<wbr/> and all camera devices with flash
4264units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4265<p>FULL mode camera devices always support OFF mode,<wbr/>
4266which enables application control of camera exposure time,<wbr/>
4267sensitivity,<wbr/> and frame duration.<wbr/></p>
4268<p>LEGACY mode camera devices never support OFF mode.<wbr/>
4269LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4270capability.<wbr/></p>
4271            </td>
4272          </tr>
4273
4274
4275          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4276           <!-- end of entry -->
4277
4278
4279          <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4280            <td class="entry_name
4281             " rowspan="3">
4282              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4283            </td>
4284            <td class="entry_type">
4285                <span class="entry_type_name">int32</span>
4286                <span class="entry_type_container">x</span>
4287
4288                <span class="entry_type_array">
4289                  2 x n
4290                </span>
4291              <span class="entry_type_visibility"> [public as rangeInt]</span>
4292
4293
4294              <span class="entry_type_hwlevel">[legacy] </span>
4295
4296
4297                <div class="entry_type_notes">list of pairs of frame rates</div>
4298
4299
4300            </td> <!-- entry_type -->
4301
4302            <td class="entry_description">
4303              <p>List of frame rate ranges for <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> supported by
4304this camera device.<wbr/></p>
4305            </td>
4306
4307            <td class="entry_units">
4308              Frames per second (FPS)
4309            </td>
4310
4311            <td class="entry_range">
4312            </td>
4313
4314            <td class="entry_tags">
4315              <ul class="entry_tags">
4316                  <li><a href="#tag_BC">BC</a></li>
4317              </ul>
4318            </td>
4319
4320          </tr>
4321          <tr class="entries_header">
4322            <th class="th_details" colspan="5">Details</th>
4323          </tr>
4324          <tr class="entry_cont">
4325            <td class="entry_details" colspan="5">
4326              <p>For devices at the LEGACY level or above:</p>
4327<ul>
4328<li>This list will always include (30,<wbr/> 30).<wbr/></li>
4329<li>Also,<wbr/> for constant-framerate recording,<wbr/> for each normal
4330<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4331<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4332the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4333<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4334supported by the device and has
4335<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4336always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></li>
4337<li>For preview streaming use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>) where
4338<code>min</code> &lt;= 15 and <code>max</code> &gt;= 30.<wbr/></li>
4339</ul>
4340<p>For devices at the LIMITED level or above:</p>
4341<ul>
4342<li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4343and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> &lt;= 15 and <code>max</code> = the maximum output frame rate of the
4344maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4345</ul>
4346            </td>
4347          </tr>
4348
4349
4350          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4351           <!-- end of entry -->
4352
4353
4354          <tr class="entry" id="static_android.control.aeCompensationRange">
4355            <td class="entry_name
4356             " rowspan="1">
4357              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4358            </td>
4359            <td class="entry_type">
4360                <span class="entry_type_name">int32</span>
4361                <span class="entry_type_container">x</span>
4362
4363                <span class="entry_type_array">
4364                  2
4365                </span>
4366              <span class="entry_type_visibility"> [public as rangeInt]</span>
4367
4368
4369              <span class="entry_type_hwlevel">[legacy] </span>
4370
4371
4372
4373
4374            </td> <!-- entry_type -->
4375
4376            <td class="entry_description">
4377              <p>Maximum and minimum exposure compensation values for
4378<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/>
4379that are supported by this camera device.<wbr/></p>
4380            </td>
4381
4382            <td class="entry_units">
4383            </td>
4384
4385            <td class="entry_range">
4386              <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4387<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4388compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4389<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>
4390<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>
4391<p>LEGACY devices may support a smaller range than this.<wbr/></p>
4392            </td>
4393
4394            <td class="entry_tags">
4395              <ul class="entry_tags">
4396                  <li><a href="#tag_BC">BC</a></li>
4397              </ul>
4398            </td>
4399
4400          </tr>
4401
4402
4403          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4404           <!-- end of entry -->
4405
4406
4407          <tr class="entry" id="static_android.control.aeCompensationStep">
4408            <td class="entry_name
4409             " rowspan="5">
4410              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4411            </td>
4412            <td class="entry_type">
4413                <span class="entry_type_name">rational</span>
4414
4415              <span class="entry_type_visibility"> [public]</span>
4416
4417
4418              <span class="entry_type_hwlevel">[legacy] </span>
4419
4420
4421
4422
4423            </td> <!-- entry_type -->
4424
4425            <td class="entry_description">
4426              <p>Smallest step by which the exposure compensation
4427can be changed.<wbr/></p>
4428            </td>
4429
4430            <td class="entry_units">
4431              Exposure Value (EV)
4432            </td>
4433
4434            <td class="entry_range">
4435            </td>
4436
4437            <td class="entry_tags">
4438              <ul class="entry_tags">
4439                  <li><a href="#tag_BC">BC</a></li>
4440              </ul>
4441            </td>
4442
4443          </tr>
4444          <tr class="entries_header">
4445            <th class="th_details" colspan="5">Details</th>
4446          </tr>
4447          <tr class="entry_cont">
4448            <td class="entry_details" colspan="5">
4449              <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
4450a 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
4451that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4452<p>One unit of EV compensation changes the brightness of the captured image by a factor
4453of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4454            </td>
4455          </tr>
4456
4457          <tr class="entries_header">
4458            <th class="th_details" colspan="5">HAL Implementation Details</th>
4459          </tr>
4460          <tr class="entry_cont">
4461            <td class="entry_details" colspan="5">
4462              <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4463            </td>
4464          </tr>
4465
4466          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4467           <!-- end of entry -->
4468
4469
4470          <tr class="entry" id="static_android.control.afAvailableModes">
4471            <td class="entry_name
4472             " rowspan="3">
4473              android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4474            </td>
4475            <td class="entry_type">
4476                <span class="entry_type_name">byte</span>
4477                <span class="entry_type_container">x</span>
4478
4479                <span class="entry_type_array">
4480                  n
4481                </span>
4482              <span class="entry_type_visibility"> [public as enumList]</span>
4483
4484
4485              <span class="entry_type_hwlevel">[legacy] </span>
4486
4487
4488                <div class="entry_type_notes">List of enums</div>
4489
4490
4491            </td> <!-- entry_type -->
4492
4493            <td class="entry_description">
4494              <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4495supported by this camera device.<wbr/></p>
4496            </td>
4497
4498            <td class="entry_units">
4499            </td>
4500
4501            <td class="entry_range">
4502              <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4503            </td>
4504
4505            <td class="entry_tags">
4506              <ul class="entry_tags">
4507                  <li><a href="#tag_BC">BC</a></li>
4508              </ul>
4509            </td>
4510
4511          </tr>
4512          <tr class="entries_header">
4513            <th class="th_details" colspan="5">Details</th>
4514          </tr>
4515          <tr class="entry_cont">
4516            <td class="entry_details" colspan="5">
4517              <p>Not all the auto-focus modes may be supported by a
4518given camera device.<wbr/> This entry lists the valid modes for
4519<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4520<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4521camera devices with adjustable focuser units
4522(<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>
4523<p>LEGACY devices will support OFF mode only if they support
4524focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4525<code>0.<wbr/>0f</code>).<wbr/></p>
4526            </td>
4527          </tr>
4528
4529
4530          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4531           <!-- end of entry -->
4532
4533
4534          <tr class="entry" id="static_android.control.availableEffects">
4535            <td class="entry_name
4536             " rowspan="3">
4537              android.<wbr/>control.<wbr/>available<wbr/>Effects
4538            </td>
4539            <td class="entry_type">
4540                <span class="entry_type_name">byte</span>
4541                <span class="entry_type_container">x</span>
4542
4543                <span class="entry_type_array">
4544                  n
4545                </span>
4546              <span class="entry_type_visibility"> [public as enumList]</span>
4547
4548
4549              <span class="entry_type_hwlevel">[legacy] </span>
4550
4551
4552                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4553
4554
4555            </td> <!-- entry_type -->
4556
4557            <td class="entry_description">
4558              <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
4559device.<wbr/></p>
4560            </td>
4561
4562            <td class="entry_units">
4563            </td>
4564
4565            <td class="entry_range">
4566              <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4567            </td>
4568
4569            <td class="entry_tags">
4570              <ul class="entry_tags">
4571                  <li><a href="#tag_BC">BC</a></li>
4572              </ul>
4573            </td>
4574
4575          </tr>
4576          <tr class="entries_header">
4577            <th class="th_details" colspan="5">Details</th>
4578          </tr>
4579          <tr class="entry_cont">
4580            <td class="entry_details" colspan="5">
4581              <p>This list contains the color effect modes that can be applied to
4582images produced by the camera device.<wbr/>
4583Implementations are not expected to be consistent across all devices.<wbr/>
4584If no color effect modes are available for a device,<wbr/> this will only list
4585OFF.<wbr/></p>
4586<p>A color effect will only be applied if
4587<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
4588<p>This control has no effect on the operation of other control routines such
4589as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
4590            </td>
4591          </tr>
4592
4593
4594          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4595           <!-- end of entry -->
4596
4597
4598          <tr class="entry" id="static_android.control.availableSceneModes">
4599            <td class="entry_name
4600             " rowspan="3">
4601              android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
4602            </td>
4603            <td class="entry_type">
4604                <span class="entry_type_name">byte</span>
4605                <span class="entry_type_container">x</span>
4606
4607                <span class="entry_type_array">
4608                  n
4609                </span>
4610              <span class="entry_type_visibility"> [public as enumList]</span>
4611
4612
4613              <span class="entry_type_hwlevel">[legacy] </span>
4614
4615
4616                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
4617
4618
4619            </td> <!-- entry_type -->
4620
4621            <td class="entry_description">
4622              <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
4623device.<wbr/></p>
4624            </td>
4625
4626            <td class="entry_units">
4627            </td>
4628
4629            <td class="entry_range">
4630              <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
4631            </td>
4632
4633            <td class="entry_tags">
4634              <ul class="entry_tags">
4635                  <li><a href="#tag_BC">BC</a></li>
4636              </ul>
4637            </td>
4638
4639          </tr>
4640          <tr class="entries_header">
4641            <th class="th_details" colspan="5">Details</th>
4642          </tr>
4643          <tr class="entry_cont">
4644            <td class="entry_details" colspan="5">
4645              <p>This list contains scene modes that can be set for the camera device.<wbr/>
4646Only scene modes that have been fully implemented for the
4647camera device may be included here.<wbr/> Implementations are not expected
4648to be consistent across all devices.<wbr/></p>
4649<p>If no scene modes are supported by the camera device,<wbr/> this
4650will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
4651<p>FACE_<wbr/>PRIORITY is always listed if face detection is
4652supported (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;
46530</code>).<wbr/></p>
4654            </td>
4655          </tr>
4656
4657
4658          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4659           <!-- end of entry -->
4660
4661
4662          <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
4663            <td class="entry_name
4664             " rowspan="3">
4665              android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
4666            </td>
4667            <td class="entry_type">
4668                <span class="entry_type_name">byte</span>
4669                <span class="entry_type_container">x</span>
4670
4671                <span class="entry_type_array">
4672                  n
4673                </span>
4674              <span class="entry_type_visibility"> [public as enumList]</span>
4675
4676
4677              <span class="entry_type_hwlevel">[legacy] </span>
4678
4679
4680                <div class="entry_type_notes">List of enums.<wbr/></div>
4681
4682
4683            </td> <!-- entry_type -->
4684
4685            <td class="entry_description">
4686              <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
4687that are supported by this camera device.<wbr/></p>
4688            </td>
4689
4690            <td class="entry_units">
4691            </td>
4692
4693            <td class="entry_range">
4694              <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
4695            </td>
4696
4697            <td class="entry_tags">
4698              <ul class="entry_tags">
4699                  <li><a href="#tag_BC">BC</a></li>
4700              </ul>
4701            </td>
4702
4703          </tr>
4704          <tr class="entries_header">
4705            <th class="th_details" colspan="5">Details</th>
4706          </tr>
4707          <tr class="entry_cont">
4708            <td class="entry_details" colspan="5">
4709              <p>OFF will always be listed.<wbr/></p>
4710            </td>
4711          </tr>
4712
4713
4714          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4715           <!-- end of entry -->
4716
4717
4718          <tr class="entry" id="static_android.control.awbAvailableModes">
4719            <td class="entry_name
4720             " rowspan="3">
4721              android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
4722            </td>
4723            <td class="entry_type">
4724                <span class="entry_type_name">byte</span>
4725                <span class="entry_type_container">x</span>
4726
4727                <span class="entry_type_array">
4728                  n
4729                </span>
4730              <span class="entry_type_visibility"> [public as enumList]</span>
4731
4732
4733              <span class="entry_type_hwlevel">[legacy] </span>
4734
4735
4736                <div class="entry_type_notes">List of enums</div>
4737
4738
4739            </td> <!-- entry_type -->
4740
4741            <td class="entry_description">
4742              <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
4743camera device.<wbr/></p>
4744            </td>
4745
4746            <td class="entry_units">
4747            </td>
4748
4749            <td class="entry_range">
4750              <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
4751            </td>
4752
4753            <td class="entry_tags">
4754              <ul class="entry_tags">
4755                  <li><a href="#tag_BC">BC</a></li>
4756              </ul>
4757            </td>
4758
4759          </tr>
4760          <tr class="entries_header">
4761            <th class="th_details" colspan="5">Details</th>
4762          </tr>
4763          <tr class="entry_cont">
4764            <td class="entry_details" colspan="5">
4765              <p>Not all the auto-white-balance modes may be supported by a
4766given camera device.<wbr/> This entry lists the valid modes for
4767<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
4768<p>All camera devices will support ON mode.<wbr/></p>
4769<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
4770mode,<wbr/> which enables application control of white balance,<wbr/> by using
4771<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
4772mode camera devices.<wbr/></p>
4773            </td>
4774          </tr>
4775
4776
4777          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4778           <!-- end of entry -->
4779
4780
4781          <tr class="entry" id="static_android.control.maxRegions">
4782            <td class="entry_name
4783             " rowspan="1">
4784              android.<wbr/>control.<wbr/>max<wbr/>Regions
4785            </td>
4786            <td class="entry_type">
4787                <span class="entry_type_name">int32</span>
4788                <span class="entry_type_container">x</span>
4789
4790                <span class="entry_type_array">
4791                  3
4792                </span>
4793              <span class="entry_type_visibility"> [hidden]</span>
4794
4795
4796              <span class="entry_type_hwlevel">[legacy] </span>
4797
4798
4799
4800
4801            </td> <!-- entry_type -->
4802
4803            <td class="entry_description">
4804              <p>List of the maximum number of regions that can be used for metering in
4805auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
4806this corresponds to the the maximum number of elements in
4807<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/>
4808and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
4809            </td>
4810
4811            <td class="entry_units">
4812            </td>
4813
4814            <td class="entry_range">
4815              <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
4816this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
4817<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
4818            </td>
4819
4820            <td class="entry_tags">
4821              <ul class="entry_tags">
4822                  <li><a href="#tag_BC">BC</a></li>
4823              </ul>
4824            </td>
4825
4826          </tr>
4827
4828
4829          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4830           <!-- end of entry -->
4831
4832
4833          <tr class="entry" id="static_android.control.maxRegionsAe">
4834            <td class="entry_name
4835             " rowspan="5">
4836              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
4837            </td>
4838            <td class="entry_type">
4839                <span class="entry_type_name">int32</span>
4840
4841              <span class="entry_type_visibility"> [public]</span>
4842
4843              <span class="entry_type_synthetic">[synthetic] </span>
4844
4845              <span class="entry_type_hwlevel">[legacy] </span>
4846
4847
4848
4849
4850            </td> <!-- entry_type -->
4851
4852            <td class="entry_description">
4853              <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
4854routine.<wbr/></p>
4855            </td>
4856
4857            <td class="entry_units">
4858            </td>
4859
4860            <td class="entry_range">
4861              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
4862value will be &gt;= 1.<wbr/></p>
4863            </td>
4864
4865            <td class="entry_tags">
4866            </td>
4867
4868          </tr>
4869          <tr class="entries_header">
4870            <th class="th_details" colspan="5">Details</th>
4871          </tr>
4872          <tr class="entry_cont">
4873            <td class="entry_details" colspan="5">
4874              <p>This corresponds to the the maximum allowed number of elements in
4875<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
4876            </td>
4877          </tr>
4878
4879          <tr class="entries_header">
4880            <th class="th_details" colspan="5">HAL Implementation Details</th>
4881          </tr>
4882          <tr class="entry_cont">
4883            <td class="entry_details" colspan="5">
4884              <p>This entry is private to the framework.<wbr/> Fill in
4885maxRegions to have this entry be automatically populated.<wbr/></p>
4886            </td>
4887          </tr>
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.maxRegionsAwb">
4894            <td class="entry_name
4895             " rowspan="5">
4896              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
4897            </td>
4898            <td class="entry_type">
4899                <span class="entry_type_name">int32</span>
4900
4901              <span class="entry_type_visibility"> [public]</span>
4902
4903              <span class="entry_type_synthetic">[synthetic] </span>
4904
4905              <span class="entry_type_hwlevel">[legacy] </span>
4906
4907
4908
4909
4910            </td> <!-- entry_type -->
4911
4912            <td class="entry_description">
4913              <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
4914routine.<wbr/></p>
4915            </td>
4916
4917            <td class="entry_units">
4918            </td>
4919
4920            <td class="entry_range">
4921              <p>Value will be &gt;= 0.<wbr/></p>
4922            </td>
4923
4924            <td class="entry_tags">
4925            </td>
4926
4927          </tr>
4928          <tr class="entries_header">
4929            <th class="th_details" colspan="5">Details</th>
4930          </tr>
4931          <tr class="entry_cont">
4932            <td class="entry_details" colspan="5">
4933              <p>This corresponds to the the maximum allowed number of elements in
4934<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
4935            </td>
4936          </tr>
4937
4938          <tr class="entries_header">
4939            <th class="th_details" colspan="5">HAL Implementation Details</th>
4940          </tr>
4941          <tr class="entry_cont">
4942            <td class="entry_details" colspan="5">
4943              <p>This entry is private to the framework.<wbr/> Fill in
4944maxRegions to have this entry be automatically populated.<wbr/></p>
4945            </td>
4946          </tr>
4947
4948          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4949           <!-- end of entry -->
4950
4951
4952          <tr class="entry" id="static_android.control.maxRegionsAf">
4953            <td class="entry_name
4954             " rowspan="5">
4955              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
4956            </td>
4957            <td class="entry_type">
4958                <span class="entry_type_name">int32</span>
4959
4960              <span class="entry_type_visibility"> [public]</span>
4961
4962              <span class="entry_type_synthetic">[synthetic] </span>
4963
4964              <span class="entry_type_hwlevel">[legacy] </span>
4965
4966
4967
4968
4969            </td> <!-- entry_type -->
4970
4971            <td class="entry_description">
4972              <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
4973            </td>
4974
4975            <td class="entry_units">
4976            </td>
4977
4978            <td class="entry_range">
4979              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
4980value will be &gt;= 1.<wbr/></p>
4981            </td>
4982
4983            <td class="entry_tags">
4984            </td>
4985
4986          </tr>
4987          <tr class="entries_header">
4988            <th class="th_details" colspan="5">Details</th>
4989          </tr>
4990          <tr class="entry_cont">
4991            <td class="entry_details" colspan="5">
4992              <p>This corresponds to the the maximum allowed number of elements in
4993<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
4994            </td>
4995          </tr>
4996
4997          <tr class="entries_header">
4998            <th class="th_details" colspan="5">HAL Implementation Details</th>
4999          </tr>
5000          <tr class="entry_cont">
5001            <td class="entry_details" colspan="5">
5002              <p>This entry is private to the framework.<wbr/> Fill in
5003maxRegions to have this entry be automatically populated.<wbr/></p>
5004            </td>
5005          </tr>
5006
5007          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5008           <!-- end of entry -->
5009
5010
5011          <tr class="entry" id="static_android.control.sceneModeOverrides">
5012            <td class="entry_name
5013             " rowspan="5">
5014              android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5015            </td>
5016            <td class="entry_type">
5017                <span class="entry_type_name">byte</span>
5018                <span class="entry_type_container">x</span>
5019
5020                <span class="entry_type_array">
5021                  3 x length(availableSceneModes)
5022                </span>
5023              <span class="entry_type_visibility"> [system]</span>
5024
5025
5026              <span class="entry_type_hwlevel">[limited] </span>
5027
5028
5029
5030
5031            </td> <!-- entry_type -->
5032
5033            <td class="entry_description">
5034              <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5035settings to use with each available scene mode.<wbr/></p>
5036            </td>
5037
5038            <td class="entry_units">
5039            </td>
5040
5041            <td class="entry_range">
5042              <p>For each available scene mode,<wbr/> the list must contain three
5043entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5044<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
5045by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5046where aeMode has the lowest index position.<wbr/></p>
5047            </td>
5048
5049            <td class="entry_tags">
5050              <ul class="entry_tags">
5051                  <li><a href="#tag_BC">BC</a></li>
5052              </ul>
5053            </td>
5054
5055          </tr>
5056          <tr class="entries_header">
5057            <th class="th_details" colspan="5">Details</th>
5058          </tr>
5059          <tr class="entry_cont">
5060            <td class="entry_details" colspan="5">
5061              <p>When a scene mode is enabled,<wbr/> the camera device is expected
5062to 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/>
5063and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5064that scene mode.<wbr/></p>
5065<p>The order of this list matches that of availableSceneModes,<wbr/>
5066with 3 entries for each mode.<wbr/>  The overrides listed
5067for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5068since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5069<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
5070used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5071is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5072FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5073<p>For example,<wbr/> if availableSceneModes contains
5074<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
5075expects sceneModeOverrides to have 9 entries formatted like:
5076<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5077ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5078            </td>
5079          </tr>
5080
5081          <tr class="entries_header">
5082            <th class="th_details" colspan="5">HAL Implementation Details</th>
5083          </tr>
5084          <tr class="entry_cont">
5085            <td class="entry_details" colspan="5">
5086              <p>To maintain backward compatibility,<wbr/> this list will be made available
5087in the static metadata of the camera service.<wbr/>  The camera service will
5088use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5089<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
5090mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5091            </td>
5092          </tr>
5093
5094          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5095           <!-- end of entry -->
5096
5097
5098          <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5099            <td class="entry_name
5100             " rowspan="5">
5101              android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5102            </td>
5103            <td class="entry_type">
5104                <span class="entry_type_name">int32</span>
5105                <span class="entry_type_container">x</span>
5106
5107                <span class="entry_type_array">
5108                  5 x n
5109                </span>
5110              <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5111
5112
5113              <span class="entry_type_hwlevel">[limited] </span>
5114
5115
5116
5117
5118            </td> <!-- entry_type -->
5119
5120            <td class="entry_description">
5121              <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5122supported 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>
5123            </td>
5124
5125            <td class="entry_units">
5126            </td>
5127
5128            <td class="entry_range">
5129              <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
5130            </td>
5131
5132            <td class="entry_tags">
5133              <ul class="entry_tags">
5134                  <li><a href="#tag_V1">V1</a></li>
5135              </ul>
5136            </td>
5137
5138          </tr>
5139          <tr class="entries_header">
5140            <th class="th_details" colspan="5">Details</th>
5141          </tr>
5142          <tr class="entry_cont">
5143            <td class="entry_details" colspan="5">
5144              <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/>
5145this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5146configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5147reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5148for processed non-stalling formats.<wbr/></p>
5149<p>For the high speed video use case,<wbr/> the application must
5150select the video size and fps range from this metadata to configure the recording and
5151preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5152to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5153configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5154by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5155recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5156must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5157must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5158<p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5159<p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5160to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5161multiple frames together and send to camera device for processing where the request
5162controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5163the max possible number of frames the camera device will group together for this high
5164speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5165recording request list by
5166<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5167The max batch size for each configuration will satisfy below conditions:</p>
5168<ul>
5169<li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5170if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5171<li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5172the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5173size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li>
5174<li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5175</ul>
5176<p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5177in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5178<p>This fps ranges in this configuration list can only be used to create requests
5179that are submitted to a high speed camera capture session created by
5180<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5181The fps ranges reported in this metadata must not be used to setup capture requests for
5182normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5183            </td>
5184          </tr>
5185
5186          <tr class="entries_header">
5187            <th class="th_details" colspan="5">HAL Implementation Details</th>
5188          </tr>
5189          <tr class="entry_cont">
5190            <td class="entry_details" colspan="5">
5191              <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5192<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5193Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5194of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5195<p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5196sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5197usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5198stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5199the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5200the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5201For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5202[30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5203do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5204recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5205values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5206values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5207switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5208            </td>
5209          </tr>
5210
5211          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5212           <!-- end of entry -->
5213
5214
5215          <tr class="entry" id="static_android.control.aeLockAvailable">
5216            <td class="entry_name
5217             " rowspan="3">
5218              android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5219            </td>
5220            <td class="entry_type">
5221                <span class="entry_type_name entry_type_name_enum">byte</span>
5222
5223              <span class="entry_type_visibility"> [public as boolean]</span>
5224
5225
5226              <span class="entry_type_hwlevel">[legacy] </span>
5227
5228
5229
5230                <ul class="entry_type_enum">
5231                  <li>
5232                    <span class="entry_type_enum_name">FALSE</span>
5233                  </li>
5234                  <li>
5235                    <span class="entry_type_enum_name">TRUE</span>
5236                  </li>
5237                </ul>
5238
5239            </td> <!-- entry_type -->
5240
5241            <td class="entry_description">
5242              <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5243            </td>
5244
5245            <td class="entry_units">
5246            </td>
5247
5248            <td class="entry_range">
5249            </td>
5250
5251            <td class="entry_tags">
5252              <ul class="entry_tags">
5253                  <li><a href="#tag_BC">BC</a></li>
5254              </ul>
5255            </td>
5256
5257          </tr>
5258          <tr class="entries_header">
5259            <th class="th_details" colspan="5">Details</th>
5260          </tr>
5261          <tr class="entry_cont">
5262            <td class="entry_details" colspan="5">
5263              <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5264list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5265            </td>
5266          </tr>
5267
5268
5269          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5270           <!-- end of entry -->
5271
5272
5273          <tr class="entry" id="static_android.control.awbLockAvailable">
5274            <td class="entry_name
5275             " rowspan="3">
5276              android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5277            </td>
5278            <td class="entry_type">
5279                <span class="entry_type_name entry_type_name_enum">byte</span>
5280
5281              <span class="entry_type_visibility"> [public as boolean]</span>
5282
5283
5284              <span class="entry_type_hwlevel">[legacy] </span>
5285
5286
5287
5288                <ul class="entry_type_enum">
5289                  <li>
5290                    <span class="entry_type_enum_name">FALSE</span>
5291                  </li>
5292                  <li>
5293                    <span class="entry_type_enum_name">TRUE</span>
5294                  </li>
5295                </ul>
5296
5297            </td> <!-- entry_type -->
5298
5299            <td class="entry_description">
5300              <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5301            </td>
5302
5303            <td class="entry_units">
5304            </td>
5305
5306            <td class="entry_range">
5307            </td>
5308
5309            <td class="entry_tags">
5310              <ul class="entry_tags">
5311                  <li><a href="#tag_BC">BC</a></li>
5312              </ul>
5313            </td>
5314
5315          </tr>
5316          <tr class="entries_header">
5317            <th class="th_details" colspan="5">Details</th>
5318          </tr>
5319          <tr class="entry_cont">
5320            <td class="entry_details" colspan="5">
5321              <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5322always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5323            </td>
5324          </tr>
5325
5326
5327          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5328           <!-- end of entry -->
5329
5330
5331          <tr class="entry" id="static_android.control.availableModes">
5332            <td class="entry_name
5333             " rowspan="3">
5334              android.<wbr/>control.<wbr/>available<wbr/>Modes
5335            </td>
5336            <td class="entry_type">
5337                <span class="entry_type_name">byte</span>
5338                <span class="entry_type_container">x</span>
5339
5340                <span class="entry_type_array">
5341                  n
5342                </span>
5343              <span class="entry_type_visibility"> [public as enumList]</span>
5344
5345
5346              <span class="entry_type_hwlevel">[legacy] </span>
5347
5348
5349                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5350
5351
5352            </td> <!-- entry_type -->
5353
5354            <td class="entry_description">
5355              <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5356device.<wbr/></p>
5357            </td>
5358
5359            <td class="entry_units">
5360            </td>
5361
5362            <td class="entry_range">
5363              <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5364            </td>
5365
5366            <td class="entry_tags">
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>This list contains control modes that can be set for the camera device.<wbr/>
5376LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5377devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5378            </td>
5379          </tr>
5380
5381
5382          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5383           <!-- end of entry -->
5384
5385
5386
5387      <!-- end of kind -->
5388      </tbody>
5389      <tr><td colspan="6" class="kind">dynamic</td></tr>
5390
5391      <thead class="entries_header">
5392        <tr>
5393          <th class="th_name">Property Name</th>
5394          <th class="th_type">Type</th>
5395          <th class="th_description">Description</th>
5396          <th class="th_units">Units</th>
5397          <th class="th_range">Range</th>
5398          <th class="th_tags">Tags</th>
5399        </tr>
5400      </thead>
5401
5402      <tbody>
5403
5404
5405
5406
5407
5408
5409
5410
5411
5412
5413          <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5414            <td class="entry_name
5415                entry_name_deprecated
5416             " rowspan="3">
5417              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5418            </td>
5419            <td class="entry_type">
5420                <span class="entry_type_name">int32</span>
5421
5422              <span class="entry_type_visibility"> [system]</span>
5423
5424
5425
5426              <span class="entry_type_deprecated">[deprecated] </span>
5427
5428
5429
5430            </td> <!-- entry_type -->
5431
5432            <td class="entry_description">
5433              <p>The ID sent with the latest
5434CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
5435            </td>
5436
5437            <td class="entry_units">
5438            </td>
5439
5440            <td class="entry_range">
5441              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5442            </td>
5443
5444            <td class="entry_tags">
5445            </td>
5446
5447          </tr>
5448          <tr class="entries_header">
5449            <th class="th_details" colspan="5">Details</th>
5450          </tr>
5451          <tr class="entry_cont">
5452            <td class="entry_details" colspan="5">
5453              <p>Must be 0 if no
5454CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5455by HAL.<wbr/> Always updated even if AE algorithm ignores the
5456trigger</p>
5457            </td>
5458          </tr>
5459
5460
5461          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5462           <!-- end of entry -->
5463
5464
5465          <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
5466            <td class="entry_name
5467             " rowspan="5">
5468              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
5469            </td>
5470            <td class="entry_type">
5471                <span class="entry_type_name entry_type_name_enum">byte</span>
5472
5473              <span class="entry_type_visibility"> [public]</span>
5474
5475
5476              <span class="entry_type_hwlevel">[legacy] </span>
5477
5478
5479
5480                <ul class="entry_type_enum">
5481                  <li>
5482                    <span class="entry_type_enum_name">OFF</span>
5483                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
5484avoid banding problems.<wbr/></p></span>
5485                  </li>
5486                  <li>
5487                    <span class="entry_type_enum_name">50HZ</span>
5488                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5489avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
5490                  </li>
5491                  <li>
5492                    <span class="entry_type_enum_name">60HZ</span>
5493                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5494avoid banding problems with 60Hz illumination
5495sources.<wbr/></p></span>
5496                  </li>
5497                  <li>
5498                    <span class="entry_type_enum_name">AUTO</span>
5499                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
5500antibanding routine to the current illumination
5501condition.<wbr/> This is the default mode if AUTO is
5502available on given camera device.<wbr/></p></span>
5503                  </li>
5504                </ul>
5505
5506            </td> <!-- entry_type -->
5507
5508            <td class="entry_description">
5509              <p>The desired setting for the camera device's auto-exposure
5510algorithm's antibanding compensation.<wbr/></p>
5511            </td>
5512
5513            <td class="entry_units">
5514            </td>
5515
5516            <td class="entry_range">
5517              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
5518            </td>
5519
5520            <td class="entry_tags">
5521              <ul class="entry_tags">
5522                  <li><a href="#tag_BC">BC</a></li>
5523              </ul>
5524            </td>
5525
5526          </tr>
5527          <tr class="entries_header">
5528            <th class="th_details" colspan="5">Details</th>
5529          </tr>
5530          <tr class="entry_cont">
5531            <td class="entry_details" colspan="5">
5532              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
5533lights,<wbr/> flicker at the rate of the power supply frequency
5534(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
5535typically not noticeable to a person,<wbr/> it can be visible to
5536a camera device.<wbr/> If a camera sets its exposure time to the
5537wrong value,<wbr/> the flicker may become visible in the
5538viewfinder as flicker or in a final captured image,<wbr/> as a
5539set of variable-brightness bands across the image.<wbr/></p>
5540<p>Therefore,<wbr/> the auto-exposure routines of camera devices
5541include antibanding routines that ensure that the chosen
5542exposure value will not cause such banding.<wbr/> The choice of
5543exposure time depends on the rate of flicker,<wbr/> which the
5544camera device can detect automatically,<wbr/> or the expected
5545rate can be selected by the application using this
5546control.<wbr/></p>
5547<p>A given camera device may not support all of the possible
5548options for the antibanding mode.<wbr/> The
5549<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
5550the available modes for a given camera device.<wbr/></p>
5551<p>AUTO mode is the default if it is available on given
5552camera device.<wbr/> When AUTO mode is not available,<wbr/> the
5553default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
5554and 60HZ will be available.<wbr/></p>
5555<p>If manual exposure control is enabled (by setting
5556<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/>
5557then this setting has no effect,<wbr/> and the application must
5558ensure it selects exposure times that do not cause banding
5559issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
5560the application in this.<wbr/></p>
5561            </td>
5562          </tr>
5563
5564          <tr class="entries_header">
5565            <th class="th_details" colspan="5">HAL Implementation Details</th>
5566          </tr>
5567          <tr class="entry_cont">
5568            <td class="entry_details" colspan="5">
5569              <p>For all capture request templates,<wbr/> this field must be set
5570to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
5571the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
557260HZ must be available.<wbr/></p>
5573<p>If manual exposure control is enabled (by setting
5574<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/>
5575then the exposure values provided by the application must not be
5576adjusted for antibanding.<wbr/></p>
5577            </td>
5578          </tr>
5579
5580          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5581           <!-- end of entry -->
5582
5583
5584          <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
5585            <td class="entry_name
5586             " rowspan="3">
5587              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
5588            </td>
5589            <td class="entry_type">
5590                <span class="entry_type_name">int32</span>
5591
5592              <span class="entry_type_visibility"> [public]</span>
5593
5594
5595              <span class="entry_type_hwlevel">[legacy] </span>
5596
5597
5598
5599
5600            </td> <!-- entry_type -->
5601
5602            <td class="entry_description">
5603              <p>Adjustment to auto-exposure (AE) target image
5604brightness.<wbr/></p>
5605            </td>
5606
5607            <td class="entry_units">
5608              Compensation steps
5609            </td>
5610
5611            <td class="entry_range">
5612              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
5613            </td>
5614
5615            <td class="entry_tags">
5616              <ul class="entry_tags">
5617                  <li><a href="#tag_BC">BC</a></li>
5618              </ul>
5619            </td>
5620
5621          </tr>
5622          <tr class="entries_header">
5623            <th class="th_details" colspan="5">Details</th>
5624          </tr>
5625          <tr class="entry_cont">
5626            <td class="entry_details" colspan="5">
5627              <p>The adjustment is measured as a count of steps,<wbr/> with the
5628step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
5629allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
5630<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
5631will mean an exposure compensation of +2 EV; -3 will mean an
5632exposure compensation of -1 EV.<wbr/> One EV represents a doubling
5633of image brightness.<wbr/> Note that this control will only be
5634effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
5635will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
5636<p>In the event of exposure compensation value being changed,<wbr/> camera device
5637may take several frames to reach the newly requested exposure target.<wbr/>
5638During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
5639state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
5640change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
5641FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
5642            </td>
5643          </tr>
5644
5645
5646          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5647           <!-- end of entry -->
5648
5649
5650          <tr class="entry" id="dynamic_android.control.aeLock">
5651            <td class="entry_name
5652             " rowspan="3">
5653              android.<wbr/>control.<wbr/>ae<wbr/>Lock
5654            </td>
5655            <td class="entry_type">
5656                <span class="entry_type_name entry_type_name_enum">byte</span>
5657
5658              <span class="entry_type_visibility"> [public as boolean]</span>
5659
5660
5661              <span class="entry_type_hwlevel">[legacy] </span>
5662
5663
5664
5665                <ul class="entry_type_enum">
5666                  <li>
5667                    <span class="entry_type_enum_name">OFF</span>
5668                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
5669is free to update its parameters.<wbr/></p></span>
5670                  </li>
5671                  <li>
5672                    <span class="entry_type_enum_name">ON</span>
5673                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
5674must not update the exposure and sensitivity parameters
5675while the lock is active.<wbr/></p>
5676<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
5677will still take effect while auto-exposure is locked.<wbr/></p>
5678<p>Some rare LEGACY devices may not support
5679this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
5680                  </li>
5681                </ul>
5682
5683            </td> <!-- entry_type -->
5684
5685            <td class="entry_description">
5686              <p>Whether auto-exposure (AE) is currently locked to its latest
5687calculated values.<wbr/></p>
5688            </td>
5689
5690            <td class="entry_units">
5691            </td>
5692
5693            <td class="entry_range">
5694            </td>
5695
5696            <td class="entry_tags">
5697              <ul class="entry_tags">
5698                  <li><a href="#tag_BC">BC</a></li>
5699              </ul>
5700            </td>
5701
5702          </tr>
5703          <tr class="entries_header">
5704            <th class="th_details" colspan="5">Details</th>
5705          </tr>
5706          <tr class="entry_cont">
5707            <td class="entry_details" colspan="5">
5708              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
5709and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
5710<p>Note that even when AE is locked,<wbr/> the flash may be fired if
5711the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
5712ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
5713<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
5714is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
5715<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
5716when AE is already locked,<wbr/> the camera device will not change the exposure time
5717(<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>)
5718parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
5719is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
5720<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/>
5721Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
5722<p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
5723the AE if AE is locked by the camera device internally during precapture metering
5724sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
5725ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
5726will never succeed in a sequence of preview requests where AE lock is always set
5727to <code>false</code>.<wbr/></p>
5728<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
5729get locked do not necessarily correspond to the settings that were present in the
5730latest capture result received from the camera device,<wbr/> since additional captures
5731and AE updates may have occurred even before the result was sent out.<wbr/> If an
5732application is switching between automatic and manual control and wishes to eliminate
5733any flicker during the switch,<wbr/> the following procedure is recommended:</p>
5734<ol>
5735<li>Starting in auto-AE mode:</li>
5736<li>Lock AE</li>
5737<li>Wait for the first result to be output that has the AE locked</li>
5738<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
5739<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
5740</ol>
5741<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>
5742            </td>
5743          </tr>
5744
5745
5746          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5747           <!-- end of entry -->
5748
5749
5750          <tr class="entry" id="dynamic_android.control.aeMode">
5751            <td class="entry_name
5752             " rowspan="3">
5753              android.<wbr/>control.<wbr/>ae<wbr/>Mode
5754            </td>
5755            <td class="entry_type">
5756                <span class="entry_type_name entry_type_name_enum">byte</span>
5757
5758              <span class="entry_type_visibility"> [public]</span>
5759
5760
5761              <span class="entry_type_hwlevel">[legacy] </span>
5762
5763
5764
5765                <ul class="entry_type_enum">
5766                  <li>
5767                    <span class="entry_type_enum_name">OFF</span>
5768                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
5769<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5770<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
5771<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
5772device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
5773a flash unit for this camera device.<wbr/></p>
5774<p>Note that auto-white balance (AWB) and auto-focus (AF)
5775behavior is device dependent when AE is in OFF mode.<wbr/>
5776To have consistent behavior across different devices,<wbr/>
5777it is recommended to either set AWB and AF to OFF mode
5778or lock AWB and AF before setting AE to OFF.<wbr/>
5779See <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/>
5780<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>
5781for more details.<wbr/></p>
5782<p>LEGACY devices do not support the OFF mode and will
5783override attempts to use this value to ON.<wbr/></p></span>
5784                  </li>
5785                  <li>
5786                    <span class="entry_type_enum_name">ON</span>
5787                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
5788with no flash control.<wbr/></p>
5789<p>The application's values for
5790<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5791<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
5792<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
5793application has control over the various
5794android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
5795                  </li>
5796                  <li>
5797                    <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
5798                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
5799the camera's flash unit,<wbr/> firing it in low-light
5800conditions.<wbr/></p>
5801<p>The flash may be fired during a precapture sequence
5802(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
5803may be fired for captures for which the
5804<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
5805STILL_<wbr/>CAPTURE</p></span>
5806                  </li>
5807                  <li>
5808                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
5809                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
5810the camera's flash unit,<wbr/> always firing it for still
5811captures.<wbr/></p>
5812<p>The flash may be fired during a precapture sequence
5813(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
5814will always be fired for captures for which the
5815<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
5816STILL_<wbr/>CAPTURE</p></span>
5817                  </li>
5818                  <li>
5819                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
5820                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
5821reduction.<wbr/></p>
5822<p>If deemed necessary by the camera device,<wbr/> a red eye
5823reduction flash will fire during the precapture
5824sequence.<wbr/></p></span>
5825                  </li>
5826                </ul>
5827
5828            </td> <!-- entry_type -->
5829
5830            <td class="entry_description">
5831              <p>The desired mode for the camera device's
5832auto-exposure routine.<wbr/></p>
5833            </td>
5834
5835            <td class="entry_units">
5836            </td>
5837
5838            <td class="entry_range">
5839              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
5840            </td>
5841
5842            <td class="entry_tags">
5843              <ul class="entry_tags">
5844                  <li><a href="#tag_BC">BC</a></li>
5845              </ul>
5846            </td>
5847
5848          </tr>
5849          <tr class="entries_header">
5850            <th class="th_details" colspan="5">Details</th>
5851          </tr>
5852          <tr class="entry_cont">
5853            <td class="entry_details" colspan="5">
5854              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
5855AUTO.<wbr/></p>
5856<p>When set to any of the ON modes,<wbr/> the camera device's
5857auto-exposure routine is enabled,<wbr/> overriding the
5858application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
5859and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5860<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
5861<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
5862is selected,<wbr/> the camera device's flash unit controls are
5863also overridden.<wbr/></p>
5864<p>The FLASH modes are only available if the camera device
5865has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
5866<p>If flash TORCH mode is desired,<wbr/> this field must be set to
5867ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
5868<p>When set to any of the ON modes,<wbr/> the values chosen by the
5869camera device auto-exposure routine for the overridden
5870fields for a given capture will be available in its
5871CaptureResult.<wbr/></p>
5872            </td>
5873          </tr>
5874
5875
5876          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5877           <!-- end of entry -->
5878
5879
5880          <tr class="entry" id="dynamic_android.control.aeRegions">
5881            <td class="entry_name
5882             " rowspan="5">
5883              android.<wbr/>control.<wbr/>ae<wbr/>Regions
5884            </td>
5885            <td class="entry_type">
5886                <span class="entry_type_name">int32</span>
5887                <span class="entry_type_container">x</span>
5888
5889                <span class="entry_type_array">
5890                  5 x area_count
5891                </span>
5892              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
5893
5894
5895
5896
5897
5898
5899            </td> <!-- entry_type -->
5900
5901            <td class="entry_description">
5902              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
5903            </td>
5904
5905            <td class="entry_units">
5906              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
5907            </td>
5908
5909            <td class="entry_range">
5910              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
5911<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
5912            </td>
5913
5914            <td class="entry_tags">
5915              <ul class="entry_tags">
5916                  <li><a href="#tag_BC">BC</a></li>
5917              </ul>
5918            </td>
5919
5920          </tr>
5921          <tr class="entries_header">
5922            <th class="th_details" colspan="5">Details</th>
5923          </tr>
5924          <tr class="entry_cont">
5925            <td class="entry_details" colspan="5">
5926              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
5927Otherwise will always be present.<wbr/></p>
5928<p>The maximum number of regions supported by the device is determined by the value
5929of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
5930<p>The coordinate system is based on the active pixel array,<wbr/>
5931with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
5932(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
5933<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
5934bottom-right pixel in the active pixel array.<wbr/></p>
5935<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
5936for every pixel in the area.<wbr/> This means that a large metering area
5937with the same weight as a smaller area will have more effect in
5938the metering result.<wbr/> Metering areas can partially overlap and the
5939camera device will add the weights in the overlap region.<wbr/></p>
5940<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
5941region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
5942weight is ignored.<wbr/></p>
5943<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
5944camera device.<wbr/></p>
5945<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
5946capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
5947region and output only the intersection rectangle as the metering region in the result
5948metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
5949not reported in the result metadata.<wbr/></p>
5950            </td>
5951          </tr>
5952
5953          <tr class="entries_header">
5954            <th class="th_details" colspan="5">HAL Implementation Details</th>
5955          </tr>
5956          <tr class="entry_cont">
5957            <td class="entry_details" colspan="5">
5958              <p>The HAL level representation of MeteringRectangle[] is a
5959int[5 * area_<wbr/>count].<wbr/>
5960Every five elements represent a metering region of
5961(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
5962The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
5963exclusive on xmax and ymax.<wbr/></p>
5964            </td>
5965          </tr>
5966
5967          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5968           <!-- end of entry -->
5969
5970
5971          <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
5972            <td class="entry_name
5973             " rowspan="3">
5974              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
5975            </td>
5976            <td class="entry_type">
5977                <span class="entry_type_name">int32</span>
5978                <span class="entry_type_container">x</span>
5979
5980                <span class="entry_type_array">
5981                  2
5982                </span>
5983              <span class="entry_type_visibility"> [public as rangeInt]</span>
5984
5985
5986              <span class="entry_type_hwlevel">[legacy] </span>
5987
5988
5989
5990
5991            </td> <!-- entry_type -->
5992
5993            <td class="entry_description">
5994              <p>Range over which the auto-exposure routine can
5995adjust the capture frame rate to maintain good
5996exposure.<wbr/></p>
5997            </td>
5998
5999            <td class="entry_units">
6000              Frames per second (FPS)
6001            </td>
6002
6003            <td class="entry_range">
6004              <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>
6005            </td>
6006
6007            <td class="entry_tags">
6008              <ul class="entry_tags">
6009                  <li><a href="#tag_BC">BC</a></li>
6010              </ul>
6011            </td>
6012
6013          </tr>
6014          <tr class="entries_header">
6015            <th class="th_details" colspan="5">Details</th>
6016          </tr>
6017          <tr class="entry_cont">
6018            <td class="entry_details" colspan="5">
6019              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6020manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6021<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6022            </td>
6023          </tr>
6024
6025
6026          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6027           <!-- end of entry -->
6028
6029
6030          <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6031            <td class="entry_name
6032             " rowspan="5">
6033              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6034            </td>
6035            <td class="entry_type">
6036                <span class="entry_type_name entry_type_name_enum">byte</span>
6037
6038              <span class="entry_type_visibility"> [public]</span>
6039
6040
6041              <span class="entry_type_hwlevel">[limited] </span>
6042
6043
6044
6045                <ul class="entry_type_enum">
6046                  <li>
6047                    <span class="entry_type_enum_name">IDLE</span>
6048                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6049                  </li>
6050                  <li>
6051                    <span class="entry_type_enum_name">START</span>
6052                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6053by the camera device.<wbr/></p>
6054<p>The exact effect of the precapture trigger depends on
6055the current AE mode and state.<wbr/></p></span>
6056                  </li>
6057                  <li>
6058                    <span class="entry_type_enum_name">CANCEL</span>
6059                    <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6060precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6061initial state.<wbr/></p></span>
6062                  </li>
6063                </ul>
6064
6065            </td> <!-- entry_type -->
6066
6067            <td class="entry_description">
6068              <p>Whether the camera device will trigger a precapture
6069metering sequence when it processes this request.<wbr/></p>
6070            </td>
6071
6072            <td class="entry_units">
6073            </td>
6074
6075            <td class="entry_range">
6076            </td>
6077
6078            <td class="entry_tags">
6079              <ul class="entry_tags">
6080                  <li><a href="#tag_BC">BC</a></li>
6081              </ul>
6082            </td>
6083
6084          </tr>
6085          <tr class="entries_header">
6086            <th class="th_details" colspan="5">Details</th>
6087          </tr>
6088          <tr class="entry_cont">
6089            <td class="entry_details" colspan="5">
6090              <p>This entry is normally set to IDLE,<wbr/> or is not
6091included at all in the request settings.<wbr/> When included and
6092set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6093precapture metering sequence.<wbr/></p>
6094<p>When set to CANCEL,<wbr/> the camera device will cancel any active
6095precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6096If a precapture metering sequence is already completed,<wbr/> and the camera
6097device has implicitly locked the AE for subsequent still capture,<wbr/> the
6098CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6099<p>The precapture sequence should be triggered before starting a
6100high-quality still capture for final metering decisions to
6101be made,<wbr/> and for firing pre-capture flash pulses to estimate
6102scene brightness and required final capture flash power,<wbr/> when
6103the flash is enabled.<wbr/></p>
6104<p>Normally,<wbr/> this entry should be set to START for only a
6105single request,<wbr/> and the application should wait until the
6106sequence completes before starting a new one.<wbr/></p>
6107<p>When a precapture metering sequence is finished,<wbr/> the camera device
6108may lock the auto-exposure routine internally to be able to accurately expose the
6109subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6110For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6111submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6112submit 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
6113with <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
6114still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6115API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6116internally locked AE if the application doesn't submit a still capture request after
6117the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6118be used in devices that have earlier API levels.<wbr/></p>
6119<p>The exact effect of auto-exposure (AE) precapture trigger
6120depends on the current AE mode and state; see
6121<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6122details.<wbr/></p>
6123<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6124capturing a high-resolution JPEG image will automatically trigger a
6125precapture sequence before the high-resolution capture,<wbr/> including
6126potentially firing a pre-capture flash.<wbr/></p>
6127<p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6128simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6129the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6130focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6131trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6132changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
6133example.<wbr/></p>
6134<p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6135the camera device will complete them in the optimal order for that device.<wbr/></p>
6136            </td>
6137          </tr>
6138
6139          <tr class="entries_header">
6140            <th class="th_details" colspan="5">HAL Implementation Details</th>
6141          </tr>
6142          <tr class="entry_cont">
6143            <td class="entry_details" colspan="5">
6144              <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6145(and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
6146treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6147AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6148to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6149            </td>
6150          </tr>
6151
6152          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6153           <!-- end of entry -->
6154
6155
6156          <tr class="entry" id="dynamic_android.control.aeState">
6157            <td class="entry_name
6158             " rowspan="3">
6159              android.<wbr/>control.<wbr/>ae<wbr/>State
6160            </td>
6161            <td class="entry_type">
6162                <span class="entry_type_name entry_type_name_enum">byte</span>
6163
6164              <span class="entry_type_visibility"> [public]</span>
6165
6166
6167              <span class="entry_type_hwlevel">[limited] </span>
6168
6169
6170
6171                <ul class="entry_type_enum">
6172                  <li>
6173                    <span class="entry_type_enum_name">INACTIVE</span>
6174                    <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6175<p>When a camera device is opened,<wbr/> it starts in
6176this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6177this state in capture result.<wbr/></p></span>
6178                  </li>
6179                  <li>
6180                    <span class="entry_type_enum_name">SEARCHING</span>
6181                    <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6182for the current scene.<wbr/></p>
6183<p>This is a transient state,<wbr/> the camera device may skip
6184reporting this state in capture result.<wbr/></p></span>
6185                  </li>
6186                  <li>
6187                    <span class="entry_type_enum_name">CONVERGED</span>
6188                    <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6189current scene.<wbr/></p></span>
6190                  </li>
6191                  <li>
6192                    <span class="entry_type_enum_name">LOCKED</span>
6193                    <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6194                  </li>
6195                  <li>
6196                    <span class="entry_type_enum_name">FLASH_REQUIRED</span>
6197                    <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6198needs to be fired for good quality still
6199capture.<wbr/></p></span>
6200                  </li>
6201                  <li>
6202                    <span class="entry_type_enum_name">PRECAPTURE</span>
6203                    <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6204and is currently executing it.<wbr/></p>
6205<p>Precapture can be triggered through setting
6206<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6207active and completed (if it causes camera device internal AE lock) precapture
6208metering sequence can be canceled through setting
6209<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6210<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6211or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6212state,<wbr/> the camera device may skip reporting this state in
6213capture result.<wbr/></p></span>
6214                  </li>
6215                </ul>
6216
6217            </td> <!-- entry_type -->
6218
6219            <td class="entry_description">
6220              <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6221            </td>
6222
6223            <td class="entry_units">
6224            </td>
6225
6226            <td class="entry_range">
6227            </td>
6228
6229            <td class="entry_tags">
6230            </td>
6231
6232          </tr>
6233          <tr class="entries_header">
6234            <th class="th_details" colspan="5">Details</th>
6235          </tr>
6236          <tr class="entry_cont">
6237            <td class="entry_details" colspan="5">
6238              <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6239resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6240or <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
6241the algorithm states to INACTIVE.<wbr/></p>
6242<p>The camera device can do several state transitions between two results,<wbr/> if it is
6243allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6244seen in a result.<wbr/></p>
6245<p>The state in the result is the state for this image (in sync with this image): if
6246AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6247be good to use.<wbr/></p>
6248<p>Below are state transition tables for different AE modes.<wbr/></p>
6249<table>
6250<thead>
6251<tr>
6252<th align="center">State</th>
6253<th align="center">Transition Cause</th>
6254<th align="center">New State</th>
6255<th align="center">Notes</th>
6256</tr>
6257</thead>
6258<tbody>
6259<tr>
6260<td align="center">INACTIVE</td>
6261<td align="center"></td>
6262<td align="center">INACTIVE</td>
6263<td align="center">Camera device auto exposure algorithm is disabled</td>
6264</tr>
6265</tbody>
6266</table>
6267<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p>
6268<table>
6269<thead>
6270<tr>
6271<th align="center">State</th>
6272<th align="center">Transition Cause</th>
6273<th align="center">New State</th>
6274<th align="center">Notes</th>
6275</tr>
6276</thead>
6277<tbody>
6278<tr>
6279<td align="center">INACTIVE</td>
6280<td align="center">Camera device initiates AE scan</td>
6281<td align="center">SEARCHING</td>
6282<td align="center">Values changing</td>
6283</tr>
6284<tr>
6285<td align="center">INACTIVE</td>
6286<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6287<td align="center">LOCKED</td>
6288<td align="center">Values locked</td>
6289</tr>
6290<tr>
6291<td align="center">SEARCHING</td>
6292<td align="center">Camera device finishes AE scan</td>
6293<td align="center">CONVERGED</td>
6294<td align="center">Good values,<wbr/> not changing</td>
6295</tr>
6296<tr>
6297<td align="center">SEARCHING</td>
6298<td align="center">Camera device finishes AE scan</td>
6299<td align="center">FLASH_<wbr/>REQUIRED</td>
6300<td align="center">Converged but too dark w/<wbr/>o flash</td>
6301</tr>
6302<tr>
6303<td align="center">SEARCHING</td>
6304<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6305<td align="center">LOCKED</td>
6306<td align="center">Values locked</td>
6307</tr>
6308<tr>
6309<td align="center">CONVERGED</td>
6310<td align="center">Camera device initiates AE scan</td>
6311<td align="center">SEARCHING</td>
6312<td align="center">Values changing</td>
6313</tr>
6314<tr>
6315<td align="center">CONVERGED</td>
6316<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6317<td align="center">LOCKED</td>
6318<td align="center">Values locked</td>
6319</tr>
6320<tr>
6321<td align="center">FLASH_<wbr/>REQUIRED</td>
6322<td align="center">Camera device initiates AE scan</td>
6323<td align="center">SEARCHING</td>
6324<td align="center">Values changing</td>
6325</tr>
6326<tr>
6327<td align="center">FLASH_<wbr/>REQUIRED</td>
6328<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6329<td align="center">LOCKED</td>
6330<td align="center">Values locked</td>
6331</tr>
6332<tr>
6333<td align="center">LOCKED</td>
6334<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6335<td align="center">SEARCHING</td>
6336<td align="center">Values not good after unlock</td>
6337</tr>
6338<tr>
6339<td align="center">LOCKED</td>
6340<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6341<td align="center">CONVERGED</td>
6342<td align="center">Values good after unlock</td>
6343</tr>
6344<tr>
6345<td align="center">LOCKED</td>
6346<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6347<td align="center">FLASH_<wbr/>REQUIRED</td>
6348<td align="center">Exposure good,<wbr/> but too dark</td>
6349</tr>
6350<tr>
6351<td align="center">PRECAPTURE</td>
6352<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6353<td align="center">CONVERGED</td>
6354<td align="center">Ready for high-quality capture</td>
6355</tr>
6356<tr>
6357<td align="center">PRECAPTURE</td>
6358<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6359<td align="center">LOCKED</td>
6360<td align="center">Ready for high-quality capture</td>
6361</tr>
6362<tr>
6363<td align="center">LOCKED</td>
6364<td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6365<td align="center">LOCKED</td>
6366<td align="center">Precapture trigger is ignored when AE is already locked</td>
6367</tr>
6368<tr>
6369<td align="center">LOCKED</td>
6370<td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6371<td align="center">LOCKED</td>
6372<td align="center">Precapture trigger is ignored when AE is already locked</td>
6373</tr>
6374<tr>
6375<td align="center">Any state (excluding LOCKED)</td>
6376<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6377<td align="center">PRECAPTURE</td>
6378<td align="center">Start AE precapture metering sequence</td>
6379</tr>
6380<tr>
6381<td align="center">Any state (excluding LOCKED)</td>
6382<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
6383<td align="center">INACTIVE</td>
6384<td align="center">Currently active precapture metering sequence is canceled</td>
6385</tr>
6386</tbody>
6387</table>
6388<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6389without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6390can be skipped in that manner is called a transient state.<wbr/></p>
6391<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
6392listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6393transient states between two results.<wbr/> See below table for examples:</p>
6394<table>
6395<thead>
6396<tr>
6397<th align="center">State</th>
6398<th align="center">Transition Cause</th>
6399<th align="center">New State</th>
6400<th align="center">Notes</th>
6401</tr>
6402</thead>
6403<tbody>
6404<tr>
6405<td align="center">INACTIVE</td>
6406<td align="center">Camera device finished AE scan</td>
6407<td align="center">CONVERGED</td>
6408<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6409</tr>
6410<tr>
6411<td align="center">Any state (excluding LOCKED)</td>
6412<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>
6413<td align="center">FLASH_<wbr/>REQUIRED</td>
6414<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>
6415</tr>
6416<tr>
6417<td align="center">Any state (excluding LOCKED)</td>
6418<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>
6419<td align="center">CONVERGED</td>
6420<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
6421</tr>
6422<tr>
6423<td align="center">Any state (excluding LOCKED)</td>
6424<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6425<td align="center">FLASH_<wbr/>REQUIRED</td>
6426<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>
6427</tr>
6428<tr>
6429<td align="center">Any state (excluding LOCKED)</td>
6430<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6431<td align="center">CONVERGED</td>
6432<td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
6433</tr>
6434<tr>
6435<td align="center">CONVERGED</td>
6436<td align="center">Camera device finished AE scan</td>
6437<td align="center">FLASH_<wbr/>REQUIRED</td>
6438<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>
6439</tr>
6440<tr>
6441<td align="center">FLASH_<wbr/>REQUIRED</td>
6442<td align="center">Camera device finished AE scan</td>
6443<td align="center">CONVERGED</td>
6444<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
6445</tr>
6446</tbody>
6447</table>
6448            </td>
6449          </tr>
6450
6451
6452          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6453           <!-- end of entry -->
6454
6455
6456          <tr class="entry" id="dynamic_android.control.afMode">
6457            <td class="entry_name
6458             " rowspan="5">
6459              android.<wbr/>control.<wbr/>af<wbr/>Mode
6460            </td>
6461            <td class="entry_type">
6462                <span class="entry_type_name entry_type_name_enum">byte</span>
6463
6464              <span class="entry_type_visibility"> [public]</span>
6465
6466
6467              <span class="entry_type_hwlevel">[legacy] </span>
6468
6469
6470
6471                <ul class="entry_type_enum">
6472                  <li>
6473                    <span class="entry_type_enum_name">OFF</span>
6474                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
6475<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
6476application.<wbr/></p></span>
6477                  </li>
6478                  <li>
6479                    <span class="entry_type_enum_name">AUTO</span>
6480                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
6481<p>In this mode,<wbr/> the lens does not move unless
6482the autofocus trigger action is called.<wbr/> When that trigger
6483is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6484the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
6485<p>Always supported if lens is not fixed focus.<wbr/></p>
6486<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
6487is fixed-focus.<wbr/></p>
6488<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
6489and sets the AF state to INACTIVE.<wbr/></p></span>
6490                  </li>
6491                  <li>
6492                    <span class="entry_type_enum_name">MACRO</span>
6493                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
6494<p>In this mode,<wbr/> the lens does not move unless the
6495autofocus trigger action is called.<wbr/> When that trigger is
6496activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6497the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
6498mode is optimized for focusing on objects very close to
6499the camera.<wbr/></p>
6500<p>When that trigger is activated,<wbr/> AF will transition to
6501ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
6502NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
6503position to default,<wbr/> and sets the AF state to
6504INACTIVE.<wbr/></p></span>
6505                  </li>
6506                  <li>
6507                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
6508                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6509position continually to attempt to provide a
6510constantly-in-focus image stream.<wbr/></p>
6511<p>The focusing behavior should be suitable for good quality
6512video recording; typically this means slower focus
6513movement and no overshoots.<wbr/> When the AF trigger is not
6514involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
6515and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
6516states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
6517the algorithm should immediately transition into
6518AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6519lens position until a cancel AF trigger is received.<wbr/></p>
6520<p>Once cancel is received,<wbr/> the algorithm should transition
6521back to INACTIVE and resume passive scan.<wbr/> Note that this
6522behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
6523ongoing PASSIVE_<wbr/>SCAN must immediately be
6524canceled.<wbr/></p></span>
6525                  </li>
6526                  <li>
6527                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
6528                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6529position continually to attempt to provide a
6530constantly-in-focus image stream.<wbr/></p>
6531<p>The focusing behavior should be suitable for still image
6532capture; typically this means focusing as fast as
6533possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
6534algorithm should start in INACTIVE state,<wbr/> and then
6535transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
6536appropriate as it attempts to maintain focus.<wbr/> When the AF
6537trigger is activated,<wbr/> the algorithm should finish its
6538PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
6539AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6540lens position until a cancel AF trigger is received.<wbr/></p>
6541<p>When the AF cancel trigger is activated,<wbr/> the algorithm
6542should transition back to INACTIVE and then act as if it
6543has just been started.<wbr/></p></span>
6544                  </li>
6545                  <li>
6546                    <span class="entry_type_enum_name">EDOF</span>
6547                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
6548<p>The camera device will produce images with an extended
6549depth of field automatically; no special focusing
6550operations need to be done before taking a picture.<wbr/></p>
6551<p>AF triggers are ignored,<wbr/> and the AF state will always be
6552INACTIVE.<wbr/></p></span>
6553                  </li>
6554                </ul>
6555
6556            </td> <!-- entry_type -->
6557
6558            <td class="entry_description">
6559              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
6560mode it is set to.<wbr/></p>
6561            </td>
6562
6563            <td class="entry_units">
6564            </td>
6565
6566            <td class="entry_range">
6567              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
6568            </td>
6569
6570            <td class="entry_tags">
6571              <ul class="entry_tags">
6572                  <li><a href="#tag_BC">BC</a></li>
6573              </ul>
6574            </td>
6575
6576          </tr>
6577          <tr class="entries_header">
6578            <th class="th_details" colspan="5">Details</th>
6579          </tr>
6580          <tr class="entry_cont">
6581            <td class="entry_details" colspan="5">
6582              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
6583(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
6584when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
6585dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
6586setting <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>
6587<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
6588the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
6589in result metadata.<wbr/></p>
6590            </td>
6591          </tr>
6592
6593          <tr class="entries_header">
6594            <th class="th_details" colspan="5">HAL Implementation Details</th>
6595          </tr>
6596          <tr class="entry_cont">
6597            <td class="entry_details" colspan="5">
6598              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
6599request (<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
6600up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
6601<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
6602locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
6603after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
6604the same focal plane remains in focus.<wbr/></p>
6605<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
6606scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
6607(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
6608same lock behavior as above.<wbr/></p>
6609<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
6610focus 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/>
6611However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
6612manual control.<wbr/></p>
6613<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
6614camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
6615remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
6616by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
6617that will arise on camera modules with open-loop VCMs.<wbr/></p>
6618            </td>
6619          </tr>
6620
6621          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6622           <!-- end of entry -->
6623
6624
6625          <tr class="entry" id="dynamic_android.control.afRegions">
6626            <td class="entry_name
6627             " rowspan="5">
6628              android.<wbr/>control.<wbr/>af<wbr/>Regions
6629            </td>
6630            <td class="entry_type">
6631                <span class="entry_type_name">int32</span>
6632                <span class="entry_type_container">x</span>
6633
6634                <span class="entry_type_array">
6635                  5 x area_count
6636                </span>
6637              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6638
6639
6640
6641
6642
6643
6644            </td> <!-- entry_type -->
6645
6646            <td class="entry_description">
6647              <p>List of metering areas to use for auto-focus.<wbr/></p>
6648            </td>
6649
6650            <td class="entry_units">
6651              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6652            </td>
6653
6654            <td class="entry_range">
6655              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6656<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6657            </td>
6658
6659            <td class="entry_tags">
6660              <ul class="entry_tags">
6661                  <li><a href="#tag_BC">BC</a></li>
6662              </ul>
6663            </td>
6664
6665          </tr>
6666          <tr class="entries_header">
6667            <th class="th_details" colspan="5">Details</th>
6668          </tr>
6669          <tr class="entry_cont">
6670            <td class="entry_details" colspan="5">
6671              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
6672Otherwise will always be present.<wbr/></p>
6673<p>The maximum number of focus areas supported by the device is determined by the value
6674of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
6675<p>The coordinate system is based on the active pixel array,<wbr/>
6676with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6677(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6678<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6679bottom-right pixel in the active pixel array.<wbr/></p>
6680<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6681for every pixel in the area.<wbr/> This means that a large metering area
6682with the same weight as a smaller area will have more effect in
6683the metering result.<wbr/> Metering areas can partially overlap and the
6684camera device will add the weights in the overlap region.<wbr/></p>
6685<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
6686is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
6687ignored.<wbr/></p>
6688<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6689camera device.<wbr/></p>
6690<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
6691capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6692region and output only the intersection rectangle as the metering region in the result
6693metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
6694not reported in the result metadata.<wbr/></p>
6695            </td>
6696          </tr>
6697
6698          <tr class="entries_header">
6699            <th class="th_details" colspan="5">HAL Implementation Details</th>
6700          </tr>
6701          <tr class="entry_cont">
6702            <td class="entry_details" colspan="5">
6703              <p>The HAL level representation of MeteringRectangle[] is a
6704int[5 * area_<wbr/>count].<wbr/>
6705Every five elements represent a metering region of
6706(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6707The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6708exclusive on xmax and ymax.<wbr/></p>
6709            </td>
6710          </tr>
6711
6712          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6713           <!-- end of entry -->
6714
6715
6716          <tr class="entry" id="dynamic_android.control.afTrigger">
6717            <td class="entry_name
6718             " rowspan="5">
6719              android.<wbr/>control.<wbr/>af<wbr/>Trigger
6720            </td>
6721            <td class="entry_type">
6722                <span class="entry_type_name entry_type_name_enum">byte</span>
6723
6724              <span class="entry_type_visibility"> [public]</span>
6725
6726
6727              <span class="entry_type_hwlevel">[legacy] </span>
6728
6729
6730
6731                <ul class="entry_type_enum">
6732                  <li>
6733                    <span class="entry_type_enum_name">IDLE</span>
6734                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6735                  </li>
6736                  <li>
6737                    <span class="entry_type_enum_name">START</span>
6738                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
6739                  </li>
6740                  <li>
6741                    <span class="entry_type_enum_name">CANCEL</span>
6742                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
6743state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
6744                  </li>
6745                </ul>
6746
6747            </td> <!-- entry_type -->
6748
6749            <td class="entry_description">
6750              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
6751            </td>
6752
6753            <td class="entry_units">
6754            </td>
6755
6756            <td class="entry_range">
6757            </td>
6758
6759            <td class="entry_tags">
6760              <ul class="entry_tags">
6761                  <li><a href="#tag_BC">BC</a></li>
6762              </ul>
6763            </td>
6764
6765          </tr>
6766          <tr class="entries_header">
6767            <th class="th_details" colspan="5">Details</th>
6768          </tr>
6769          <tr class="entry_cont">
6770            <td class="entry_details" colspan="5">
6771              <p>This entry is normally set to IDLE,<wbr/> or is not
6772included at all in the request settings.<wbr/></p>
6773<p>When included and set to START,<wbr/> the camera device will trigger the
6774autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
6775<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
6776and return to its initial AF state.<wbr/></p>
6777<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
6778single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
6779START for multiple captures in a row means restarting the AF operation over
6780and over again.<wbr/></p>
6781<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>
6782<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>
6783simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6784the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6785focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6786trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6787changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
6788            </td>
6789          </tr>
6790
6791          <tr class="entries_header">
6792            <th class="th_details" colspan="5">HAL Implementation Details</th>
6793          </tr>
6794          <tr class="entry_cont">
6795            <td class="entry_details" colspan="5">
6796              <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
6797(and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
6798treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6799AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6800to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6801            </td>
6802          </tr>
6803
6804          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6805           <!-- end of entry -->
6806
6807
6808          <tr class="entry" id="dynamic_android.control.afState">
6809            <td class="entry_name
6810             " rowspan="3">
6811              android.<wbr/>control.<wbr/>af<wbr/>State
6812            </td>
6813            <td class="entry_type">
6814                <span class="entry_type_name entry_type_name_enum">byte</span>
6815
6816              <span class="entry_type_visibility"> [public]</span>
6817
6818
6819              <span class="entry_type_hwlevel">[legacy] </span>
6820
6821
6822
6823                <ul class="entry_type_enum">
6824                  <li>
6825                    <span class="entry_type_enum_name">INACTIVE</span>
6826                    <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
6827to scan.<wbr/></p>
6828<p>When a camera device is opened,<wbr/> it starts in this
6829state.<wbr/> This is a transient state,<wbr/> the camera device may
6830skip reporting this state in capture
6831result.<wbr/></p></span>
6832                  </li>
6833                  <li>
6834                    <span class="entry_type_enum_name">PASSIVE_SCAN</span>
6835                    <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
6836camera device in a continuous autofocus mode.<wbr/></p>
6837<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
6838state,<wbr/> the camera device may skip reporting this state in
6839capture result.<wbr/></p></span>
6840                  </li>
6841                  <li>
6842                    <span class="entry_type_enum_name">PASSIVE_FOCUSED</span>
6843                    <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
6844restart scanning at any time.<wbr/></p>
6845<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
6846state,<wbr/> the camera device may skip reporting this state in
6847capture result.<wbr/></p></span>
6848                  </li>
6849                  <li>
6850                    <span class="entry_type_enum_name">ACTIVE_SCAN</span>
6851                    <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
6852triggered by AF trigger.<wbr/></p>
6853<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
6854state,<wbr/> the camera device may skip reporting this state in
6855capture result.<wbr/></p></span>
6856                  </li>
6857                  <li>
6858                    <span class="entry_type_enum_name">FOCUSED_LOCKED</span>
6859                    <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
6860focus.<wbr/></p>
6861<p>This state is reached only after an explicit START AF trigger has been
6862sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
6863<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
6864a 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>
6865                  </li>
6866                  <li>
6867                    <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span>
6868                    <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
6869focus.<wbr/></p>
6870<p>This state is reached only after an explicit START AF trigger has been
6871sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
6872<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
6873a 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>
6874                  </li>
6875                  <li>
6876                    <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span>
6877                    <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
6878and may restart scanning at any time.<wbr/></p>
6879<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
6880device may skip reporting this state in capture result.<wbr/></p>
6881<p>LEGACY camera devices do not support this state.<wbr/> When a passive
6882scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
6883                  </li>
6884                </ul>
6885
6886            </td> <!-- entry_type -->
6887
6888            <td class="entry_description">
6889              <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
6890            </td>
6891
6892            <td class="entry_units">
6893            </td>
6894
6895            <td class="entry_range">
6896            </td>
6897
6898            <td class="entry_tags">
6899            </td>
6900
6901          </tr>
6902          <tr class="entries_header">
6903            <th class="th_details" colspan="5">Details</th>
6904          </tr>
6905          <tr class="entry_cont">
6906            <td class="entry_details" colspan="5">
6907              <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
6908resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6909or <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
6910the algorithm states to INACTIVE.<wbr/></p>
6911<p>The camera device can do several state transitions between two results,<wbr/> if it is
6912allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6913seen in a result.<wbr/></p>
6914<p>The state in the result is the state for this image (in sync with this image): if
6915AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
6916be sharp.<wbr/></p>
6917<p>Below are state transition tables for different AF modes.<wbr/></p>
6918<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>
6919<table>
6920<thead>
6921<tr>
6922<th align="center">State</th>
6923<th align="center">Transition Cause</th>
6924<th align="center">New State</th>
6925<th align="center">Notes</th>
6926</tr>
6927</thead>
6928<tbody>
6929<tr>
6930<td align="center">INACTIVE</td>
6931<td align="center"></td>
6932<td align="center">INACTIVE</td>
6933<td align="center">Never changes</td>
6934</tr>
6935</tbody>
6936</table>
6937<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>
6938<table>
6939<thead>
6940<tr>
6941<th align="center">State</th>
6942<th align="center">Transition Cause</th>
6943<th align="center">New State</th>
6944<th align="center">Notes</th>
6945</tr>
6946</thead>
6947<tbody>
6948<tr>
6949<td align="center">INACTIVE</td>
6950<td align="center">AF_<wbr/>TRIGGER</td>
6951<td align="center">ACTIVE_<wbr/>SCAN</td>
6952<td align="center">Start AF sweep,<wbr/> Lens now moving</td>
6953</tr>
6954<tr>
6955<td align="center">ACTIVE_<wbr/>SCAN</td>
6956<td align="center">AF sweep done</td>
6957<td align="center">FOCUSED_<wbr/>LOCKED</td>
6958<td align="center">Focused,<wbr/> Lens now locked</td>
6959</tr>
6960<tr>
6961<td align="center">ACTIVE_<wbr/>SCAN</td>
6962<td align="center">AF sweep done</td>
6963<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6964<td align="center">Not focused,<wbr/> Lens now locked</td>
6965</tr>
6966<tr>
6967<td align="center">ACTIVE_<wbr/>SCAN</td>
6968<td align="center">AF_<wbr/>CANCEL</td>
6969<td align="center">INACTIVE</td>
6970<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
6971</tr>
6972<tr>
6973<td align="center">FOCUSED_<wbr/>LOCKED</td>
6974<td align="center">AF_<wbr/>CANCEL</td>
6975<td align="center">INACTIVE</td>
6976<td align="center">Cancel/<wbr/>reset AF</td>
6977</tr>
6978<tr>
6979<td align="center">FOCUSED_<wbr/>LOCKED</td>
6980<td align="center">AF_<wbr/>TRIGGER</td>
6981<td align="center">ACTIVE_<wbr/>SCAN</td>
6982<td align="center">Start new sweep,<wbr/> Lens now moving</td>
6983</tr>
6984<tr>
6985<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6986<td align="center">AF_<wbr/>CANCEL</td>
6987<td align="center">INACTIVE</td>
6988<td align="center">Cancel/<wbr/>reset AF</td>
6989</tr>
6990<tr>
6991<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6992<td align="center">AF_<wbr/>TRIGGER</td>
6993<td align="center">ACTIVE_<wbr/>SCAN</td>
6994<td align="center">Start new sweep,<wbr/> Lens now moving</td>
6995</tr>
6996<tr>
6997<td align="center">Any state</td>
6998<td align="center">Mode change</td>
6999<td align="center">INACTIVE</td>
7000<td align="center"></td>
7001</tr>
7002</tbody>
7003</table>
7004<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7005without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7006can be skipped in that manner is called a transient state.<wbr/></p>
7007<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7008state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7009one or more transient states between two results.<wbr/> See below table for examples:</p>
7010<table>
7011<thead>
7012<tr>
7013<th align="center">State</th>
7014<th align="center">Transition Cause</th>
7015<th align="center">New State</th>
7016<th align="center">Notes</th>
7017</tr>
7018</thead>
7019<tbody>
7020<tr>
7021<td align="center">INACTIVE</td>
7022<td align="center">AF_<wbr/>TRIGGER</td>
7023<td align="center">FOCUSED_<wbr/>LOCKED</td>
7024<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7025</tr>
7026<tr>
7027<td align="center">INACTIVE</td>
7028<td align="center">AF_<wbr/>TRIGGER</td>
7029<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7030<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7031</tr>
7032<tr>
7033<td align="center">FOCUSED_<wbr/>LOCKED</td>
7034<td align="center">AF_<wbr/>TRIGGER</td>
7035<td align="center">FOCUSED_<wbr/>LOCKED</td>
7036<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7037</tr>
7038<tr>
7039<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7040<td align="center">AF_<wbr/>TRIGGER</td>
7041<td align="center">FOCUSED_<wbr/>LOCKED</td>
7042<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7043</tr>
7044</tbody>
7045</table>
7046<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>
7047<table>
7048<thead>
7049<tr>
7050<th align="center">State</th>
7051<th align="center">Transition Cause</th>
7052<th align="center">New State</th>
7053<th align="center">Notes</th>
7054</tr>
7055</thead>
7056<tbody>
7057<tr>
7058<td align="center">INACTIVE</td>
7059<td align="center">Camera device initiates new scan</td>
7060<td align="center">PASSIVE_<wbr/>SCAN</td>
7061<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7062</tr>
7063<tr>
7064<td align="center">INACTIVE</td>
7065<td align="center">AF_<wbr/>TRIGGER</td>
7066<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7067<td align="center">AF state query,<wbr/> Lens now locked</td>
7068</tr>
7069<tr>
7070<td align="center">PASSIVE_<wbr/>SCAN</td>
7071<td align="center">Camera device completes current scan</td>
7072<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7073<td align="center">End AF scan,<wbr/> Lens now locked</td>
7074</tr>
7075<tr>
7076<td align="center">PASSIVE_<wbr/>SCAN</td>
7077<td align="center">Camera device fails current scan</td>
7078<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7079<td align="center">End AF scan,<wbr/> Lens now locked</td>
7080</tr>
7081<tr>
7082<td align="center">PASSIVE_<wbr/>SCAN</td>
7083<td align="center">AF_<wbr/>TRIGGER</td>
7084<td align="center">FOCUSED_<wbr/>LOCKED</td>
7085<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7086</tr>
7087<tr>
7088<td align="center">PASSIVE_<wbr/>SCAN</td>
7089<td align="center">AF_<wbr/>TRIGGER</td>
7090<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7091<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7092</tr>
7093<tr>
7094<td align="center">PASSIVE_<wbr/>SCAN</td>
7095<td align="center">AF_<wbr/>CANCEL</td>
7096<td align="center">INACTIVE</td>
7097<td align="center">Reset lens position,<wbr/> Lens now locked</td>
7098</tr>
7099<tr>
7100<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7101<td align="center">Camera device initiates new scan</td>
7102<td align="center">PASSIVE_<wbr/>SCAN</td>
7103<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7104</tr>
7105<tr>
7106<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7107<td align="center">Camera device initiates new scan</td>
7108<td align="center">PASSIVE_<wbr/>SCAN</td>
7109<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7110</tr>
7111<tr>
7112<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7113<td align="center">AF_<wbr/>TRIGGER</td>
7114<td align="center">FOCUSED_<wbr/>LOCKED</td>
7115<td align="center">Immediate transition,<wbr/> lens now locked</td>
7116</tr>
7117<tr>
7118<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7119<td align="center">AF_<wbr/>TRIGGER</td>
7120<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7121<td align="center">Immediate transition,<wbr/> lens now locked</td>
7122</tr>
7123<tr>
7124<td align="center">FOCUSED_<wbr/>LOCKED</td>
7125<td align="center">AF_<wbr/>TRIGGER</td>
7126<td align="center">FOCUSED_<wbr/>LOCKED</td>
7127<td align="center">No effect</td>
7128</tr>
7129<tr>
7130<td align="center">FOCUSED_<wbr/>LOCKED</td>
7131<td align="center">AF_<wbr/>CANCEL</td>
7132<td align="center">INACTIVE</td>
7133<td align="center">Restart AF scan</td>
7134</tr>
7135<tr>
7136<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7137<td align="center">AF_<wbr/>TRIGGER</td>
7138<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7139<td align="center">No effect</td>
7140</tr>
7141<tr>
7142<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7143<td align="center">AF_<wbr/>CANCEL</td>
7144<td align="center">INACTIVE</td>
7145<td align="center">Restart AF scan</td>
7146</tr>
7147</tbody>
7148</table>
7149<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>
7150<table>
7151<thead>
7152<tr>
7153<th align="center">State</th>
7154<th align="center">Transition Cause</th>
7155<th align="center">New State</th>
7156<th align="center">Notes</th>
7157</tr>
7158</thead>
7159<tbody>
7160<tr>
7161<td align="center">INACTIVE</td>
7162<td align="center">Camera device initiates new scan</td>
7163<td align="center">PASSIVE_<wbr/>SCAN</td>
7164<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7165</tr>
7166<tr>
7167<td align="center">INACTIVE</td>
7168<td align="center">AF_<wbr/>TRIGGER</td>
7169<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7170<td align="center">AF state query,<wbr/> Lens now locked</td>
7171</tr>
7172<tr>
7173<td align="center">PASSIVE_<wbr/>SCAN</td>
7174<td align="center">Camera device completes current scan</td>
7175<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7176<td align="center">End AF scan,<wbr/> Lens now locked</td>
7177</tr>
7178<tr>
7179<td align="center">PASSIVE_<wbr/>SCAN</td>
7180<td align="center">Camera device fails current scan</td>
7181<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7182<td align="center">End AF scan,<wbr/> Lens now locked</td>
7183</tr>
7184<tr>
7185<td align="center">PASSIVE_<wbr/>SCAN</td>
7186<td align="center">AF_<wbr/>TRIGGER</td>
7187<td align="center">FOCUSED_<wbr/>LOCKED</td>
7188<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7189</tr>
7190<tr>
7191<td align="center">PASSIVE_<wbr/>SCAN</td>
7192<td align="center">AF_<wbr/>TRIGGER</td>
7193<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7194<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7195</tr>
7196<tr>
7197<td align="center">PASSIVE_<wbr/>SCAN</td>
7198<td align="center">AF_<wbr/>CANCEL</td>
7199<td align="center">INACTIVE</td>
7200<td align="center">Reset lens position,<wbr/> Lens now locked</td>
7201</tr>
7202<tr>
7203<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7204<td align="center">Camera device initiates new scan</td>
7205<td align="center">PASSIVE_<wbr/>SCAN</td>
7206<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7207</tr>
7208<tr>
7209<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7210<td align="center">Camera device initiates new scan</td>
7211<td align="center">PASSIVE_<wbr/>SCAN</td>
7212<td align="center">Start AF scan,<wbr/> Lens now moving</td>
7213</tr>
7214<tr>
7215<td align="center">PASSIVE_<wbr/>FOCUSED</td>
7216<td align="center">AF_<wbr/>TRIGGER</td>
7217<td align="center">FOCUSED_<wbr/>LOCKED</td>
7218<td align="center">Immediate trans.<wbr/> Lens now locked</td>
7219</tr>
7220<tr>
7221<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7222<td align="center">AF_<wbr/>TRIGGER</td>
7223<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7224<td align="center">Immediate trans.<wbr/> Lens now locked</td>
7225</tr>
7226<tr>
7227<td align="center">FOCUSED_<wbr/>LOCKED</td>
7228<td align="center">AF_<wbr/>TRIGGER</td>
7229<td align="center">FOCUSED_<wbr/>LOCKED</td>
7230<td align="center">No effect</td>
7231</tr>
7232<tr>
7233<td align="center">FOCUSED_<wbr/>LOCKED</td>
7234<td align="center">AF_<wbr/>CANCEL</td>
7235<td align="center">INACTIVE</td>
7236<td align="center">Restart AF scan</td>
7237</tr>
7238<tr>
7239<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7240<td align="center">AF_<wbr/>TRIGGER</td>
7241<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7242<td align="center">No effect</td>
7243</tr>
7244<tr>
7245<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7246<td align="center">AF_<wbr/>CANCEL</td>
7247<td align="center">INACTIVE</td>
7248<td align="center">Restart AF scan</td>
7249</tr>
7250</tbody>
7251</table>
7252<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7253(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7254camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7255will be evaluated in the context of the new mode in the request.<wbr/>
7256See below table for examples:</p>
7257<table>
7258<thead>
7259<tr>
7260<th align="center">State</th>
7261<th align="center">Transition Cause</th>
7262<th align="center">New State</th>
7263<th align="center">Notes</th>
7264</tr>
7265</thead>
7266<tbody>
7267<tr>
7268<td align="center">any state</td>
7269<td align="center">CAF--&gt;AUTO mode switch</td>
7270<td align="center">INACTIVE</td>
7271<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7272</tr>
7273<tr>
7274<td align="center">any state</td>
7275<td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
7276<td align="center">trigger-reachable states from INACTIVE</td>
7277<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7278</tr>
7279<tr>
7280<td align="center">any state</td>
7281<td align="center">AUTO--&gt;CAF mode switch</td>
7282<td align="center">passively reachable states from INACTIVE</td>
7283<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7284</tr>
7285</tbody>
7286</table>
7287            </td>
7288          </tr>
7289
7290
7291          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7292           <!-- end of entry -->
7293
7294
7295          <tr class="entry" id="dynamic_android.control.afTriggerId">
7296            <td class="entry_name
7297                entry_name_deprecated
7298             " rowspan="3">
7299              android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7300            </td>
7301            <td class="entry_type">
7302                <span class="entry_type_name">int32</span>
7303
7304              <span class="entry_type_visibility"> [system]</span>
7305
7306
7307
7308              <span class="entry_type_deprecated">[deprecated] </span>
7309
7310
7311
7312            </td> <!-- entry_type -->
7313
7314            <td class="entry_description">
7315              <p>The ID sent with the latest
7316CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7317            </td>
7318
7319            <td class="entry_units">
7320            </td>
7321
7322            <td class="entry_range">
7323              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7324            </td>
7325
7326            <td class="entry_tags">
7327            </td>
7328
7329          </tr>
7330          <tr class="entries_header">
7331            <th class="th_details" colspan="5">Details</th>
7332          </tr>
7333          <tr class="entry_cont">
7334            <td class="entry_details" colspan="5">
7335              <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7336received yet by HAL.<wbr/> Always updated even if AF algorithm
7337ignores the trigger</p>
7338            </td>
7339          </tr>
7340
7341
7342          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7343           <!-- end of entry -->
7344
7345
7346          <tr class="entry" id="dynamic_android.control.awbLock">
7347            <td class="entry_name
7348             " rowspan="3">
7349              android.<wbr/>control.<wbr/>awb<wbr/>Lock
7350            </td>
7351            <td class="entry_type">
7352                <span class="entry_type_name entry_type_name_enum">byte</span>
7353
7354              <span class="entry_type_visibility"> [public as boolean]</span>
7355
7356
7357              <span class="entry_type_hwlevel">[legacy] </span>
7358
7359
7360
7361                <ul class="entry_type_enum">
7362                  <li>
7363                    <span class="entry_type_enum_name">OFF</span>
7364                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
7365algorithm is free to update its parameters if in AUTO
7366mode.<wbr/></p></span>
7367                  </li>
7368                  <li>
7369                    <span class="entry_type_enum_name">ON</span>
7370                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
7371algorithm will not update its parameters while the lock
7372is active.<wbr/></p></span>
7373                  </li>
7374                </ul>
7375
7376            </td> <!-- entry_type -->
7377
7378            <td class="entry_description">
7379              <p>Whether auto-white balance (AWB) is currently locked to its
7380latest calculated values.<wbr/></p>
7381            </td>
7382
7383            <td class="entry_units">
7384            </td>
7385
7386            <td class="entry_range">
7387            </td>
7388
7389            <td class="entry_tags">
7390              <ul class="entry_tags">
7391                  <li><a href="#tag_BC">BC</a></li>
7392              </ul>
7393            </td>
7394
7395          </tr>
7396          <tr class="entries_header">
7397            <th class="th_details" colspan="5">Details</th>
7398          </tr>
7399          <tr class="entry_cont">
7400            <td class="entry_details" colspan="5">
7401              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
7402and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
7403<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
7404get locked do not necessarily correspond to the settings that were present in the
7405latest capture result received from the camera device,<wbr/> since additional captures
7406and AWB updates may have occurred even before the result was sent out.<wbr/> If an
7407application is switching between automatic and manual control and wishes to eliminate
7408any flicker during the switch,<wbr/> the following procedure is recommended:</p>
7409<ol>
7410<li>Starting in auto-AWB mode:</li>
7411<li>Lock AWB</li>
7412<li>Wait for the first result to be output that has the AWB locked</li>
7413<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
7414<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
7415</ol>
7416<p>Note that AWB lock is only meaningful when
7417<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
7418AWB is already fixed to a specific setting.<wbr/></p>
7419<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
7420            </td>
7421          </tr>
7422
7423
7424          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7425           <!-- end of entry -->
7426
7427
7428          <tr class="entry" id="dynamic_android.control.awbMode">
7429            <td class="entry_name
7430             " rowspan="3">
7431              android.<wbr/>control.<wbr/>awb<wbr/>Mode
7432            </td>
7433            <td class="entry_type">
7434                <span class="entry_type_name entry_type_name_enum">byte</span>
7435
7436              <span class="entry_type_visibility"> [public]</span>
7437
7438
7439              <span class="entry_type_hwlevel">[legacy] </span>
7440
7441
7442
7443                <ul class="entry_type_enum">
7444                  <li>
7445                    <span class="entry_type_enum_name">OFF</span>
7446                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
7447<p>The application-selected color transform matrix
7448(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
7449(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
7450device for manual white balance control.<wbr/></p></span>
7451                  </li>
7452                  <li>
7453                    <span class="entry_type_enum_name">AUTO</span>
7454                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
7455<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7456and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7457For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7458values used by the camera device for the transform and gains
7459will be available in the capture result for this request.<wbr/></p></span>
7460                  </li>
7461                  <li>
7462                    <span class="entry_type_enum_name">INCANDESCENT</span>
7463                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7464the camera device uses incandescent light as the assumed scene
7465illumination for white balance.<wbr/></p>
7466<p>While the exact white balance transforms are up to the
7467camera device,<wbr/> they will approximately match the CIE
7468standard illuminant A.<wbr/></p>
7469<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7470and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7471For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7472values used by the camera device for the transform and gains
7473will be available in the capture result for this request.<wbr/></p></span>
7474                  </li>
7475                  <li>
7476                    <span class="entry_type_enum_name">FLUORESCENT</span>
7477                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7478the camera device uses fluorescent light as the assumed scene
7479illumination for white balance.<wbr/></p>
7480<p>While the exact white balance transforms are up to the
7481camera device,<wbr/> they will approximately match the CIE
7482standard illuminant F2.<wbr/></p>
7483<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7484and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7485For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7486values used by the camera device for the transform and gains
7487will be available in the capture result for this request.<wbr/></p></span>
7488                  </li>
7489                  <li>
7490                    <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
7491                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7492the camera device uses warm fluorescent light as the assumed scene
7493illumination for white balance.<wbr/></p>
7494<p>While the exact white balance transforms are up to the
7495camera device,<wbr/> they will approximately match the CIE
7496standard illuminant F4.<wbr/></p>
7497<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7498and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7499For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7500values used by the camera device for the transform and gains
7501will be available in the capture result for this request.<wbr/></p></span>
7502                  </li>
7503                  <li>
7504                    <span class="entry_type_enum_name">DAYLIGHT</span>
7505                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7506the camera device uses daylight light as the assumed scene
7507illumination for white balance.<wbr/></p>
7508<p>While the exact white balance transforms are up to the
7509camera device,<wbr/> they will approximately match the CIE
7510standard illuminant D65.<wbr/></p>
7511<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7512and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7513For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7514values used by the camera device for the transform and gains
7515will be available in the capture result for this request.<wbr/></p></span>
7516                  </li>
7517                  <li>
7518                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
7519                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7520the camera device uses cloudy daylight light as the assumed scene
7521illumination for white balance.<wbr/></p>
7522<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7523and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7524For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7525values used by the camera device for the transform and gains
7526will be available in the capture result for this request.<wbr/></p></span>
7527                  </li>
7528                  <li>
7529                    <span class="entry_type_enum_name">TWILIGHT</span>
7530                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7531the camera device uses twilight light as the assumed scene
7532illumination for white balance.<wbr/></p>
7533<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7534and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7535For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7536values used by the camera device for the transform and gains
7537will be available in the capture result for this request.<wbr/></p></span>
7538                  </li>
7539                  <li>
7540                    <span class="entry_type_enum_name">SHADE</span>
7541                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7542the camera device uses shade light as the assumed scene
7543illumination for white balance.<wbr/></p>
7544<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7545and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7546For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7547values used by the camera device for the transform and gains
7548will be available in the capture result for this request.<wbr/></p></span>
7549                  </li>
7550                </ul>
7551
7552            </td> <!-- entry_type -->
7553
7554            <td class="entry_description">
7555              <p>Whether auto-white balance (AWB) is currently setting the color
7556transform fields,<wbr/> and what its illumination target
7557is.<wbr/></p>
7558            </td>
7559
7560            <td class="entry_units">
7561            </td>
7562
7563            <td class="entry_range">
7564              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
7565            </td>
7566
7567            <td class="entry_tags">
7568              <ul class="entry_tags">
7569                  <li><a href="#tag_BC">BC</a></li>
7570              </ul>
7571            </td>
7572
7573          </tr>
7574          <tr class="entries_header">
7575            <th class="th_details" colspan="5">Details</th>
7576          </tr>
7577          <tr class="entry_cont">
7578            <td class="entry_details" colspan="5">
7579              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
7580<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
7581routine is enabled,<wbr/> overriding the application's selected
7582<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
7583<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>
7584is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
7585also 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
7586setting AE mode to OFF.<wbr/></p>
7587<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
7588routine is disabled.<wbr/> The application manually controls the white
7589balance 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>
7590and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
7591<p>When set to any other modes,<wbr/> the camera device's auto-white
7592balance routine is disabled.<wbr/> The camera device uses each
7593particular illumination target for white balance
7594adjustment.<wbr/> The application's values for
7595<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
7596<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
7597<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
7598            </td>
7599          </tr>
7600
7601
7602          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7603           <!-- end of entry -->
7604
7605
7606          <tr class="entry" id="dynamic_android.control.awbRegions">
7607            <td class="entry_name
7608             " rowspan="5">
7609              android.<wbr/>control.<wbr/>awb<wbr/>Regions
7610            </td>
7611            <td class="entry_type">
7612                <span class="entry_type_name">int32</span>
7613                <span class="entry_type_container">x</span>
7614
7615                <span class="entry_type_array">
7616                  5 x area_count
7617                </span>
7618              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7619
7620
7621
7622
7623
7624
7625            </td> <!-- entry_type -->
7626
7627            <td class="entry_description">
7628              <p>List of metering areas to use for auto-white-balance illuminant
7629estimation.<wbr/></p>
7630            </td>
7631
7632            <td class="entry_units">
7633              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7634            </td>
7635
7636            <td class="entry_range">
7637              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7638<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7639            </td>
7640
7641            <td class="entry_tags">
7642              <ul class="entry_tags">
7643                  <li><a href="#tag_BC">BC</a></li>
7644              </ul>
7645            </td>
7646
7647          </tr>
7648          <tr class="entries_header">
7649            <th class="th_details" colspan="5">Details</th>
7650          </tr>
7651          <tr class="entry_cont">
7652            <td class="entry_details" colspan="5">
7653              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
7654Otherwise will always be present.<wbr/></p>
7655<p>The maximum number of regions supported by the device is determined by the value
7656of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
7657<p>The coordinate system is based on the active pixel array,<wbr/>
7658with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7659(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7660<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7661bottom-right pixel in the active pixel array.<wbr/></p>
7662<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
7663for every pixel in the area.<wbr/> This means that a large metering area
7664with the same weight as a smaller area will have more effect in
7665the metering result.<wbr/> Metering areas can partially overlap and the
7666camera device will add the weights in the overlap region.<wbr/></p>
7667<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
7668only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
76690 weight is ignored.<wbr/></p>
7670<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7671camera device.<wbr/></p>
7672<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
7673capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7674region and output only the intersection rectangle as the metering region in the result
7675metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
7676not reported in the result metadata.<wbr/></p>
7677            </td>
7678          </tr>
7679
7680          <tr class="entries_header">
7681            <th class="th_details" colspan="5">HAL Implementation Details</th>
7682          </tr>
7683          <tr class="entry_cont">
7684            <td class="entry_details" colspan="5">
7685              <p>The HAL level representation of MeteringRectangle[] is a
7686int[5 * area_<wbr/>count].<wbr/>
7687Every five elements represent a metering region of
7688(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7689The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7690exclusive on xmax and ymax.<wbr/></p>
7691            </td>
7692          </tr>
7693
7694          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7695           <!-- end of entry -->
7696
7697
7698          <tr class="entry" id="dynamic_android.control.captureIntent">
7699            <td class="entry_name
7700             " rowspan="3">
7701              android.<wbr/>control.<wbr/>capture<wbr/>Intent
7702            </td>
7703            <td class="entry_type">
7704                <span class="entry_type_name entry_type_name_enum">byte</span>
7705
7706              <span class="entry_type_visibility"> [public]</span>
7707
7708
7709              <span class="entry_type_hwlevel">[legacy] </span>
7710
7711
7712
7713                <ul class="entry_type_enum">
7714                  <li>
7715                    <span class="entry_type_enum_name">CUSTOM</span>
7716                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
7717categories.<wbr/> The camera device will default to preview-like
7718behavior.<wbr/></p></span>
7719                  </li>
7720                  <li>
7721                    <span class="entry_type_enum_name">PREVIEW</span>
7722                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
7723<p>The precapture trigger may be used to start off a metering
7724w/<wbr/>flash sequence.<wbr/></p></span>
7725                  </li>
7726                  <li>
7727                    <span class="entry_type_enum_name">STILL_CAPTURE</span>
7728                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
7729use case.<wbr/></p>
7730<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
7731                  </li>
7732                  <li>
7733                    <span class="entry_type_enum_name">VIDEO_RECORD</span>
7734                    <span class="entry_type_enum_notes"><p>This request is for a video recording
7735use case.<wbr/></p></span>
7736                  </li>
7737                  <li>
7738                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
7739                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
7740image while recording video) use case.<wbr/></p>
7741<p>The camera device should take the highest-quality image
7742possible (given the other settings) without disrupting the
7743frame rate of video recording.<wbr/>  </p></span>
7744                  </li>
7745                  <li>
7746                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
7747                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
7748application will stream full-resolution images and
7749reprocess one or several later for a final
7750capture.<wbr/></p></span>
7751                  </li>
7752                  <li>
7753                    <span class="entry_type_enum_name">MANUAL</span>
7754                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
7755the applications want to directly control the capture parameters.<wbr/></p>
7756<p>For example,<wbr/> the application may wish to manually control
7757<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>
7758                  </li>
7759                </ul>
7760
7761            </td> <!-- entry_type -->
7762
7763            <td class="entry_description">
7764              <p>Information to the camera device 3A (auto-exposure,<wbr/>
7765auto-focus,<wbr/> auto-white balance) routines about the purpose
7766of this capture,<wbr/> to help the camera device to decide optimal 3A
7767strategy.<wbr/></p>
7768            </td>
7769
7770            <td class="entry_units">
7771            </td>
7772
7773            <td class="entry_range">
7774            </td>
7775
7776            <td class="entry_tags">
7777              <ul class="entry_tags">
7778                  <li><a href="#tag_BC">BC</a></li>
7779              </ul>
7780            </td>
7781
7782          </tr>
7783          <tr class="entries_header">
7784            <th class="th_details" colspan="5">Details</th>
7785          </tr>
7786          <tr class="entry_cont">
7787            <td class="entry_details" colspan="5">
7788              <p>This control (except for MANUAL) is only effective if
7789<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
7790<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
7791contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
7792<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
7793always supported.<wbr/></p>
7794            </td>
7795          </tr>
7796
7797
7798          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7799           <!-- end of entry -->
7800
7801
7802          <tr class="entry" id="dynamic_android.control.awbState">
7803            <td class="entry_name
7804             " rowspan="3">
7805              android.<wbr/>control.<wbr/>awb<wbr/>State
7806            </td>
7807            <td class="entry_type">
7808                <span class="entry_type_name entry_type_name_enum">byte</span>
7809
7810              <span class="entry_type_visibility"> [public]</span>
7811
7812
7813              <span class="entry_type_hwlevel">[limited] </span>
7814
7815
7816
7817                <ul class="entry_type_enum">
7818                  <li>
7819                    <span class="entry_type_enum_name">INACTIVE</span>
7820                    <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
7821<p>When a camera device is opened,<wbr/> it starts in this
7822state.<wbr/> This is a transient state,<wbr/> the camera device may
7823skip reporting this state in capture
7824result.<wbr/></p></span>
7825                  </li>
7826                  <li>
7827                    <span class="entry_type_enum_name">SEARCHING</span>
7828                    <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
7829values for the current scene.<wbr/></p>
7830<p>This is a transient state,<wbr/> the camera device
7831may skip reporting this state in capture result.<wbr/></p></span>
7832                  </li>
7833                  <li>
7834                    <span class="entry_type_enum_name">CONVERGED</span>
7835                    <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
7836current scene.<wbr/></p></span>
7837                  </li>
7838                  <li>
7839                    <span class="entry_type_enum_name">LOCKED</span>
7840                    <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
7841                  </li>
7842                </ul>
7843
7844            </td> <!-- entry_type -->
7845
7846            <td class="entry_description">
7847              <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
7848            </td>
7849
7850            <td class="entry_units">
7851            </td>
7852
7853            <td class="entry_range">
7854            </td>
7855
7856            <td class="entry_tags">
7857            </td>
7858
7859          </tr>
7860          <tr class="entries_header">
7861            <th class="th_details" colspan="5">Details</th>
7862          </tr>
7863          <tr class="entry_cont">
7864            <td class="entry_details" colspan="5">
7865              <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
7866resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7867or <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
7868the algorithm states to INACTIVE.<wbr/></p>
7869<p>The camera device can do several state transitions between two results,<wbr/> if it is
7870allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
7871a result.<wbr/></p>
7872<p>The state in the result is the state for this image (in sync with this image): if
7873AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
7874be good to use.<wbr/></p>
7875<p>Below are state transition tables for different AWB modes.<wbr/></p>
7876<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
7877<table>
7878<thead>
7879<tr>
7880<th align="center">State</th>
7881<th align="center">Transition Cause</th>
7882<th align="center">New State</th>
7883<th align="center">Notes</th>
7884</tr>
7885</thead>
7886<tbody>
7887<tr>
7888<td align="center">INACTIVE</td>
7889<td align="center"></td>
7890<td align="center">INACTIVE</td>
7891<td align="center">Camera device auto white balance algorithm is disabled</td>
7892</tr>
7893</tbody>
7894</table>
7895<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
7896<table>
7897<thead>
7898<tr>
7899<th align="center">State</th>
7900<th align="center">Transition Cause</th>
7901<th align="center">New State</th>
7902<th align="center">Notes</th>
7903</tr>
7904</thead>
7905<tbody>
7906<tr>
7907<td align="center">INACTIVE</td>
7908<td align="center">Camera device initiates AWB scan</td>
7909<td align="center">SEARCHING</td>
7910<td align="center">Values changing</td>
7911</tr>
7912<tr>
7913<td align="center">INACTIVE</td>
7914<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7915<td align="center">LOCKED</td>
7916<td align="center">Values locked</td>
7917</tr>
7918<tr>
7919<td align="center">SEARCHING</td>
7920<td align="center">Camera device finishes AWB scan</td>
7921<td align="center">CONVERGED</td>
7922<td align="center">Good values,<wbr/> not changing</td>
7923</tr>
7924<tr>
7925<td align="center">SEARCHING</td>
7926<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7927<td align="center">LOCKED</td>
7928<td align="center">Values locked</td>
7929</tr>
7930<tr>
7931<td align="center">CONVERGED</td>
7932<td align="center">Camera device initiates AWB scan</td>
7933<td align="center">SEARCHING</td>
7934<td align="center">Values changing</td>
7935</tr>
7936<tr>
7937<td align="center">CONVERGED</td>
7938<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7939<td align="center">LOCKED</td>
7940<td align="center">Values locked</td>
7941</tr>
7942<tr>
7943<td align="center">LOCKED</td>
7944<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
7945<td align="center">SEARCHING</td>
7946<td align="center">Values not good after unlock</td>
7947</tr>
7948</tbody>
7949</table>
7950<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7951without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7952can be skipped in that manner is called a transient state.<wbr/></p>
7953<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
7954listed in above table,<wbr/> it is also legal for the camera device to skip one or more
7955transient states between two results.<wbr/> See below table for examples:</p>
7956<table>
7957<thead>
7958<tr>
7959<th align="center">State</th>
7960<th align="center">Transition Cause</th>
7961<th align="center">New State</th>
7962<th align="center">Notes</th>
7963</tr>
7964</thead>
7965<tbody>
7966<tr>
7967<td align="center">INACTIVE</td>
7968<td align="center">Camera device finished AWB scan</td>
7969<td align="center">CONVERGED</td>
7970<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
7971</tr>
7972<tr>
7973<td align="center">LOCKED</td>
7974<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
7975<td align="center">CONVERGED</td>
7976<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
7977</tr>
7978</tbody>
7979</table>
7980            </td>
7981          </tr>
7982
7983
7984          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7985           <!-- end of entry -->
7986
7987
7988          <tr class="entry" id="dynamic_android.control.effectMode">
7989            <td class="entry_name
7990             " rowspan="3">
7991              android.<wbr/>control.<wbr/>effect<wbr/>Mode
7992            </td>
7993            <td class="entry_type">
7994                <span class="entry_type_name entry_type_name_enum">byte</span>
7995
7996              <span class="entry_type_visibility"> [public]</span>
7997
7998
7999              <span class="entry_type_hwlevel">[legacy] </span>
8000
8001
8002
8003                <ul class="entry_type_enum">
8004                  <li>
8005                    <span class="entry_type_enum_name">OFF</span>
8006                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8007                  </li>
8008                  <li>
8009                    <span class="entry_type_enum_name">MONO</span>
8010                    <span class="entry_type_enum_optional">[optional]</span>
8011                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8012a single color.<wbr/></p>
8013<p>This will typically be grayscale.<wbr/></p></span>
8014                  </li>
8015                  <li>
8016                    <span class="entry_type_enum_name">NEGATIVE</span>
8017                    <span class="entry_type_enum_optional">[optional]</span>
8018                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8019are inverted.<wbr/></p></span>
8020                  </li>
8021                  <li>
8022                    <span class="entry_type_enum_name">SOLARIZE</span>
8023                    <span class="entry_type_enum_optional">[optional]</span>
8024                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8025image is wholly or partially reversed in
8026tone.<wbr/></p></span>
8027                  </li>
8028                  <li>
8029                    <span class="entry_type_enum_name">SEPIA</span>
8030                    <span class="entry_type_enum_optional">[optional]</span>
8031                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8032gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8033                  </li>
8034                  <li>
8035                    <span class="entry_type_enum_name">POSTERIZE</span>
8036                    <span class="entry_type_enum_optional">[optional]</span>
8037                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8038discrete regions of tone rather than a continuous
8039gradient of tones.<wbr/></p></span>
8040                  </li>
8041                  <li>
8042                    <span class="entry_type_enum_name">WHITEBOARD</span>
8043                    <span class="entry_type_enum_optional">[optional]</span>
8044                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8045as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8046                  </li>
8047                  <li>
8048                    <span class="entry_type_enum_name">BLACKBOARD</span>
8049                    <span class="entry_type_enum_optional">[optional]</span>
8050                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8051as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8052                  </li>
8053                  <li>
8054                    <span class="entry_type_enum_name">AQUA</span>
8055                    <span class="entry_type_enum_optional">[optional]</span>
8056                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8057                  </li>
8058                </ul>
8059
8060            </td> <!-- entry_type -->
8061
8062            <td class="entry_description">
8063              <p>A special color effect to apply.<wbr/></p>
8064            </td>
8065
8066            <td class="entry_units">
8067            </td>
8068
8069            <td class="entry_range">
8070              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8071            </td>
8072
8073            <td class="entry_tags">
8074              <ul class="entry_tags">
8075                  <li><a href="#tag_BC">BC</a></li>
8076              </ul>
8077            </td>
8078
8079          </tr>
8080          <tr class="entries_header">
8081            <th class="th_details" colspan="5">Details</th>
8082          </tr>
8083          <tr class="entry_cont">
8084            <td class="entry_details" colspan="5">
8085              <p>When this mode is set,<wbr/> a color effect will be applied
8086to images produced by the camera device.<wbr/> The interpretation
8087and implementation of these color effects is left to the
8088implementor of the camera device,<wbr/> and should not be
8089depended on to be consistent (or present) across all
8090devices.<wbr/></p>
8091            </td>
8092          </tr>
8093
8094
8095          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8096           <!-- end of entry -->
8097
8098
8099          <tr class="entry" id="dynamic_android.control.mode">
8100            <td class="entry_name
8101             " rowspan="3">
8102              android.<wbr/>control.<wbr/>mode
8103            </td>
8104            <td class="entry_type">
8105                <span class="entry_type_name entry_type_name_enum">byte</span>
8106
8107              <span class="entry_type_visibility"> [public]</span>
8108
8109
8110              <span class="entry_type_hwlevel">[legacy] </span>
8111
8112
8113
8114                <ul class="entry_type_enum">
8115                  <li>
8116                    <span class="entry_type_enum_name">OFF</span>
8117                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8118<p>All control by the device's metering and focusing (3A)
8119routines is disabled,<wbr/> and no other settings in
8120android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8121<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8122device to select post-processing values for processing
8123blocks that do not allow for manual control,<wbr/> or are not
8124exposed by the camera API.<wbr/></p>
8125<p>However,<wbr/> the camera device's 3A routines may continue to
8126collect statistics and update their internal state so that
8127when control is switched to AUTO mode,<wbr/> good control values
8128can be immediately applied.<wbr/></p></span>
8129                  </li>
8130                  <li>
8131                    <span class="entry_type_enum_name">AUTO</span>
8132                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8133<p>Manual control of capture parameters is disabled.<wbr/> All
8134controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8135effect.<wbr/></p></span>
8136                  </li>
8137                  <li>
8138                    <span class="entry_type_enum_name">USE_SCENE_MODE</span>
8139                    <span class="entry_type_enum_optional">[optional]</span>
8140                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8141<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8142control.<wbr/>afMode controls; the camera device will ignore
8143those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8144FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8145This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8146<a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8147contain some modes other than DISABLED).<wbr/></p></span>
8148                  </li>
8149                  <li>
8150                    <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
8151                    <span class="entry_type_enum_optional">[optional]</span>
8152                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8153used by camera device background auto-exposure,<wbr/> auto-white balance and
8154auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8155<p>Specifically,<wbr/> the 3A routines are locked to the last
8156values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8157USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8158collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8159discarded by the camera device.<wbr/></p></span>
8160                  </li>
8161                </ul>
8162
8163            </td> <!-- entry_type -->
8164
8165            <td class="entry_description">
8166              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8167routines.<wbr/></p>
8168            </td>
8169
8170            <td class="entry_units">
8171            </td>
8172
8173            <td class="entry_range">
8174              <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8175            </td>
8176
8177            <td class="entry_tags">
8178              <ul class="entry_tags">
8179                  <li><a href="#tag_BC">BC</a></li>
8180              </ul>
8181            </td>
8182
8183          </tr>
8184          <tr class="entries_header">
8185            <th class="th_details" colspan="5">Details</th>
8186          </tr>
8187          <tr class="entry_cont">
8188            <td class="entry_details" colspan="5">
8189              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8190by the camera device is disabled.<wbr/> The application must set the fields for
8191capture parameters itself.<wbr/></p>
8192<p>When set to AUTO,<wbr/> the individual algorithm controls in
8193android.<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>
8194<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8195android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
8196one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
8197as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
8198<a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8199<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8200is that this frame will not be used by camera device background 3A statistics
8201update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8202where the application doesn't want a 3A manual control capture to affect
8203the subsequent auto 3A capture results.<wbr/></p>
8204            </td>
8205          </tr>
8206
8207
8208          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8209           <!-- end of entry -->
8210
8211
8212          <tr class="entry" id="dynamic_android.control.sceneMode">
8213            <td class="entry_name
8214             " rowspan="5">
8215              android.<wbr/>control.<wbr/>scene<wbr/>Mode
8216            </td>
8217            <td class="entry_type">
8218                <span class="entry_type_name entry_type_name_enum">byte</span>
8219
8220              <span class="entry_type_visibility"> [public]</span>
8221
8222
8223              <span class="entry_type_hwlevel">[legacy] </span>
8224
8225
8226
8227                <ul class="entry_type_enum">
8228                  <li>
8229                    <span class="entry_type_enum_name">DISABLED</span>
8230                    <span class="entry_type_enum_value">0</span>
8231                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8232                  </li>
8233                  <li>
8234                    <span class="entry_type_enum_name">FACE_PRIORITY</span>
8235                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8236detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8237auto-exposure routines.<wbr/></p>
8238<p>If face detection statistics are disabled
8239(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/>
8240this should still operate correctly (but will not return
8241face detection statistics to the framework).<wbr/></p>
8242<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8243<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>
8244remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8245                  </li>
8246                  <li>
8247                    <span class="entry_type_enum_name">ACTION</span>
8248                    <span class="entry_type_enum_optional">[optional]</span>
8249                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8250<p>Similar to SPORTS.<wbr/></p></span>
8251                  </li>
8252                  <li>
8253                    <span class="entry_type_enum_name">PORTRAIT</span>
8254                    <span class="entry_type_enum_optional">[optional]</span>
8255                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8256                  </li>
8257                  <li>
8258                    <span class="entry_type_enum_name">LANDSCAPE</span>
8259                    <span class="entry_type_enum_optional">[optional]</span>
8260                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8261                  </li>
8262                  <li>
8263                    <span class="entry_type_enum_name">NIGHT</span>
8264                    <span class="entry_type_enum_optional">[optional]</span>
8265                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8266                  </li>
8267                  <li>
8268                    <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
8269                    <span class="entry_type_enum_optional">[optional]</span>
8270                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8271settings.<wbr/></p></span>
8272                  </li>
8273                  <li>
8274                    <span class="entry_type_enum_name">THEATRE</span>
8275                    <span class="entry_type_enum_optional">[optional]</span>
8276                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8277remain off.<wbr/></p></span>
8278                  </li>
8279                  <li>
8280                    <span class="entry_type_enum_name">BEACH</span>
8281                    <span class="entry_type_enum_optional">[optional]</span>
8282                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8283                  </li>
8284                  <li>
8285                    <span class="entry_type_enum_name">SNOW</span>
8286                    <span class="entry_type_enum_optional">[optional]</span>
8287                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8288                  </li>
8289                  <li>
8290                    <span class="entry_type_enum_name">SUNSET</span>
8291                    <span class="entry_type_enum_optional">[optional]</span>
8292                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8293                  </li>
8294                  <li>
8295                    <span class="entry_type_enum_name">STEADYPHOTO</span>
8296                    <span class="entry_type_enum_optional">[optional]</span>
8297                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8298device motion (for example: due to hand shake).<wbr/></p></span>
8299                  </li>
8300                  <li>
8301                    <span class="entry_type_enum_name">FIREWORKS</span>
8302                    <span class="entry_type_enum_optional">[optional]</span>
8303                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8304                  </li>
8305                  <li>
8306                    <span class="entry_type_enum_name">SPORTS</span>
8307                    <span class="entry_type_enum_optional">[optional]</span>
8308                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8309<p>Similar to ACTION.<wbr/></p></span>
8310                  </li>
8311                  <li>
8312                    <span class="entry_type_enum_name">PARTY</span>
8313                    <span class="entry_type_enum_optional">[optional]</span>
8314                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8315people.<wbr/></p></span>
8316                  </li>
8317                  <li>
8318                    <span class="entry_type_enum_name">CANDLELIGHT</span>
8319                    <span class="entry_type_enum_optional">[optional]</span>
8320                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
8321is a flame.<wbr/></p></span>
8322                  </li>
8323                  <li>
8324                    <span class="entry_type_enum_name">BARCODE</span>
8325                    <span class="entry_type_enum_optional">[optional]</span>
8326                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
8327for use by camera applications that wish to read the
8328barcode value.<wbr/></p></span>
8329                  </li>
8330                  <li>
8331                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
8332                    <span class="entry_type_enum_deprecated">[deprecated]</span>
8333                    <span class="entry_type_enum_optional">[optional]</span>
8334                    <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>
8335and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
8336for high speed video recording.<wbr/></p>
8337<p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
8338<p>The supported high speed video sizes and fps ranges are specified in
8339<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
8340output frame rates,<wbr/> the application is only allowed to select video size
8341and fps range combinations listed in this static metadata.<wbr/> The fps range
8342can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
8343<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
8344ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
8345controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
8346and post-processing parameters is possible.<wbr/> All other controls operate the
8347same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
8348android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
8349<ul>
8350<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
8351<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
8352<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
8353<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
8354<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
8355<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
8356<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
8357<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
8358<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
8359<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
8360</ul>
8361<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
8362<ul>
8363<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>
8364<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
8365<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
8366<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
8367</ul>
8368<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
8369be lower than what camera can output,<wbr/> depending on the destination Surfaces for
8370the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
8371the application need check if the video encoder is capable of supporting the
8372high frame rate for a given video size,<wbr/> or it will end up with lower recording
8373frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
8374rate will be bounded by the screen refresh rate.<wbr/></p>
8375<p>The camera device will only support up to 2 output high speed streams
8376(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
8377in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
8378<ul>
8379<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
8380format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
8381min(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>
8382<li>The stream sizes are selected from the sizes reported by
8383<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
8384<li>No processed non-stalling or raw streams are configured.<wbr/></li>
8385</ul>
8386<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
8387<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/>
8388the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
8389and the returned capture result metadata will give the fps range choosen
8390by the camera device.<wbr/></p>
8391<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
8392reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
8393the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
8394                  </li>
8395                  <li>
8396                    <span class="entry_type_enum_name">HDR</span>
8397                    <span class="entry_type_enum_optional">[optional]</span>
8398                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
8399<p>In this scene mode,<wbr/> the camera device captures images
8400that keep a larger range of scene illumination levels
8401visible in the final image.<wbr/> For example,<wbr/> when taking a
8402picture of a object in front of a bright window,<wbr/> both
8403the object and the scene through the window may be
8404visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
8405one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
8406HDR mode generally takes much longer to capture a single
8407image,<wbr/> has no user control,<wbr/> and may have other artifacts
8408depending on the HDR method used.<wbr/></p>
8409<p>Therefore,<wbr/> HDR captures operate at a much slower rate
8410than regular captures.<wbr/></p>
8411<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
8412is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
8413STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
8414using a high dynamic range capture technique.<wbr/>  On LEGACY
8415devices,<wbr/> captures that target a JPEG-format output will
8416be captured with HDR,<wbr/> and the capture intent is not
8417relevant.<wbr/></p>
8418<p>The HDR capture may involve the device capturing a burst
8419of images internally and combining them into one,<wbr/> or it
8420may involve the device using specialized high dynamic
8421range capture hardware.<wbr/> In all cases,<wbr/> a single image is
8422produced in response to a capture request submitted
8423while in HDR mode.<wbr/></p>
8424<p>Since substantial post-processing is generally needed to
8425produce an HDR image,<wbr/> only YUV and JPEG outputs are
8426supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only
8427JPEG outputs are supported for LEGACY HDR
8428captures.<wbr/> Using a RAW output for HDR capture is not
8429supported.<wbr/></p></span>
8430                  </li>
8431                  <li>
8432                    <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
8433                    <span class="entry_type_enum_optional">[optional]</span>
8434                    <span class="entry_type_enum_hidden">[hidden]</span>
8435                    <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
8436device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
8437under low light conditions.<wbr/></p>
8438<p>The camera device may be tuned to expose the images in a reduced
8439sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
8440if 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/>
8441the camera device auto-exposure routine tuning process may limit the actual
8442exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
8443exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
8444low light may be under-exposed when the sensor max exposure time (bounded by the
8445<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
8446ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
8447camera device auto-exposure routine to increase the sensitivity up to the max
8448sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
8449dark and the max exposure time is reached.<wbr/> The captured images may be noisier
8450compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
8451recommended that the application only use this scene mode when it is capable of
8452reducing the noise level of the captured images.<wbr/></p>
8453<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8454<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>
8455remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
8456                  </li>
8457                </ul>
8458
8459            </td> <!-- entry_type -->
8460
8461            <td class="entry_description">
8462              <p>Control for which scene mode is currently active.<wbr/></p>
8463            </td>
8464
8465            <td class="entry_units">
8466            </td>
8467
8468            <td class="entry_range">
8469              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
8470            </td>
8471
8472            <td class="entry_tags">
8473              <ul class="entry_tags">
8474                  <li><a href="#tag_BC">BC</a></li>
8475              </ul>
8476            </td>
8477
8478          </tr>
8479          <tr class="entries_header">
8480            <th class="th_details" colspan="5">Details</th>
8481          </tr>
8482          <tr class="entry_cont">
8483            <td class="entry_details" colspan="5">
8484              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
8485capture settings.<wbr/></p>
8486<p>This is the mode that that is active when
8487<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
8488disable <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>
8489while in use.<wbr/></p>
8490<p>The interpretation and implementation of these scene modes is left
8491to the implementor of the camera device.<wbr/> Their behavior will not be
8492consistent across all devices,<wbr/> and any given device may only implement
8493a subset of these modes.<wbr/></p>
8494            </td>
8495          </tr>
8496
8497          <tr class="entries_header">
8498            <th class="th_details" colspan="5">HAL Implementation Details</th>
8499          </tr>
8500          <tr class="entry_cont">
8501            <td class="entry_details" colspan="5">
8502              <p>HAL implementations that include scene modes are expected to provide
8503the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8504<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
8505<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
8506<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/>
8507the HAL must list supported video size and fps range in
8508<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/>
85091280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
8510mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
8511requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
8512This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
8513<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
8514capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
8515            </td>
8516          </tr>
8517
8518          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8519           <!-- end of entry -->
8520
8521
8522          <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
8523            <td class="entry_name
8524             " rowspan="3">
8525              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
8526            </td>
8527            <td class="entry_type">
8528                <span class="entry_type_name entry_type_name_enum">byte</span>
8529
8530              <span class="entry_type_visibility"> [public]</span>
8531
8532
8533              <span class="entry_type_hwlevel">[legacy] </span>
8534
8535
8536
8537                <ul class="entry_type_enum">
8538                  <li>
8539                    <span class="entry_type_enum_name">OFF</span>
8540                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
8541                  </li>
8542                  <li>
8543                    <span class="entry_type_enum_name">ON</span>
8544                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
8545                  </li>
8546                </ul>
8547
8548            </td> <!-- entry_type -->
8549
8550            <td class="entry_description">
8551              <p>Whether video stabilization is
8552active.<wbr/></p>
8553            </td>
8554
8555            <td class="entry_units">
8556            </td>
8557
8558            <td class="entry_range">
8559            </td>
8560
8561            <td class="entry_tags">
8562              <ul class="entry_tags">
8563                  <li><a href="#tag_BC">BC</a></li>
8564              </ul>
8565            </td>
8566
8567          </tr>
8568          <tr class="entries_header">
8569            <th class="th_details" colspan="5">Details</th>
8570          </tr>
8571          <tr class="entry_cont">
8572            <td class="entry_details" colspan="5">
8573              <p>Video stabilization automatically warps images from
8574the camera in order to stabilize motion between consecutive frames.<wbr/></p>
8575<p>If enabled,<wbr/> video stabilization can modify the
8576<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
8577<p>Switching between different video stabilization modes may take several
8578frames to initialize,<wbr/> the camera device will report the current mode
8579in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
8580the video stabilization modes in the first several capture results may
8581still be "OFF",<wbr/> and it will become "ON" when the initialization is
8582done.<wbr/></p>
8583<p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
8584stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
8585that an output targeting a MediaRecorder or MediaCodec will be stabilized if
8586the recording resolution is less than or equal to 1920 x 1080 (width less than
8587or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
8588frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
8589<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
8590OFF if the recording output is not stabilized,<wbr/> or if there are no output
8591Surface types that can be stabilized.<wbr/></p>
8592<p>If a camera device supports both this mode and OIS
8593(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
8594produce undesirable interaction,<wbr/> so it is recommended not to enable
8595both at the same time.<wbr/></p>
8596            </td>
8597          </tr>
8598
8599
8600          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8601           <!-- end of entry -->
8602
8603
8604
8605      <!-- end of kind -->
8606      </tbody>
8607
8608  <!-- end of section -->
8609  <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr>
8610
8611
8612      <tr><td colspan="6" class="kind">controls</td></tr>
8613
8614      <thead class="entries_header">
8615        <tr>
8616          <th class="th_name">Property Name</th>
8617          <th class="th_type">Type</th>
8618          <th class="th_description">Description</th>
8619          <th class="th_units">Units</th>
8620          <th class="th_range">Range</th>
8621          <th class="th_tags">Tags</th>
8622        </tr>
8623      </thead>
8624
8625      <tbody>
8626
8627
8628
8629
8630
8631
8632
8633
8634
8635
8636          <tr class="entry" id="controls_android.demosaic.mode">
8637            <td class="entry_name
8638             " rowspan="1">
8639              android.<wbr/>demosaic.<wbr/>mode
8640            </td>
8641            <td class="entry_type">
8642                <span class="entry_type_name entry_type_name_enum">byte</span>
8643
8644              <span class="entry_type_visibility"> [system]</span>
8645
8646
8647
8648
8649
8650                <ul class="entry_type_enum">
8651                  <li>
8652                    <span class="entry_type_enum_name">FAST</span>
8653                    <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
8654Bayer RAW output.<wbr/></p></span>
8655                  </li>
8656                  <li>
8657                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
8658                    <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
8659relative to raw output.<wbr/></p></span>
8660                  </li>
8661                </ul>
8662
8663            </td> <!-- entry_type -->
8664
8665            <td class="entry_description">
8666              <p>Controls the quality of the demosaicing
8667processing.<wbr/></p>
8668            </td>
8669
8670            <td class="entry_units">
8671            </td>
8672
8673            <td class="entry_range">
8674            </td>
8675
8676            <td class="entry_tags">
8677              <ul class="entry_tags">
8678                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8679              </ul>
8680            </td>
8681
8682          </tr>
8683
8684
8685          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8686           <!-- end of entry -->
8687
8688
8689
8690      <!-- end of kind -->
8691      </tbody>
8692
8693  <!-- end of section -->
8694  <tr><td colspan="6" id="section_edge" class="section">edge</td></tr>
8695
8696
8697      <tr><td colspan="6" class="kind">controls</td></tr>
8698
8699      <thead class="entries_header">
8700        <tr>
8701          <th class="th_name">Property Name</th>
8702          <th class="th_type">Type</th>
8703          <th class="th_description">Description</th>
8704          <th class="th_units">Units</th>
8705          <th class="th_range">Range</th>
8706          <th class="th_tags">Tags</th>
8707        </tr>
8708      </thead>
8709
8710      <tbody>
8711
8712
8713
8714
8715
8716
8717
8718
8719
8720
8721          <tr class="entry" id="controls_android.edge.mode">
8722            <td class="entry_name
8723             " rowspan="5">
8724              android.<wbr/>edge.<wbr/>mode
8725            </td>
8726            <td class="entry_type">
8727                <span class="entry_type_name entry_type_name_enum">byte</span>
8728
8729              <span class="entry_type_visibility"> [public]</span>
8730
8731
8732              <span class="entry_type_hwlevel">[full] </span>
8733
8734
8735
8736                <ul class="entry_type_enum">
8737                  <li>
8738                    <span class="entry_type_enum_name">OFF</span>
8739                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
8740                  </li>
8741                  <li>
8742                    <span class="entry_type_enum_name">FAST</span>
8743                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
8744relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
8745slow down frame rate relative to sensor.<wbr/></p></span>
8746                  </li>
8747                  <li>
8748                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
8749                    <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>
8750                  </li>
8751                  <li>
8752                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
8753                    <span class="entry_type_enum_optional">[optional]</span>
8754                    <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
8755based 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
8756edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
8757applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
8758frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
8759is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
8760<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
8761with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
8762high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
8763produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
8764high-resolution buffers must not have edge enhancement applied to maximize efficiency of
8765preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
8766buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
8767reasonable preview quality.<wbr/></p>
8768<p>This mode is guaranteed to be supported by devices that support either the
8769YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
8770(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
8771be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
8772                  </li>
8773                </ul>
8774
8775            </td> <!-- entry_type -->
8776
8777            <td class="entry_description">
8778              <p>Operation mode for edge
8779enhancement.<wbr/></p>
8780            </td>
8781
8782            <td class="entry_units">
8783            </td>
8784
8785            <td class="entry_range">
8786              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
8787            </td>
8788
8789            <td class="entry_tags">
8790              <ul class="entry_tags">
8791                  <li><a href="#tag_V1">V1</a></li>
8792                  <li><a href="#tag_REPROC">REPROC</a></li>
8793              </ul>
8794            </td>
8795
8796          </tr>
8797          <tr class="entries_header">
8798            <th class="th_details" colspan="5">Details</th>
8799          </tr>
8800          <tr class="entry_cont">
8801            <td class="entry_details" colspan="5">
8802              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
8803no enhancement will be applied by the camera device.<wbr/></p>
8804<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
8805will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
8806camera device will use the highest-quality enhancement algorithms,<wbr/>
8807even if it slows down capture rate.<wbr/> FAST means the camera device will
8808not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
8809edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
8810amount of enhancement applied.<wbr/></p>
8811<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
8812buffer of high-resolution images during preview and reprocess image(s) from that buffer
8813into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
8814edge enhancement to low-resolution streams (below maximum recording resolution) to
8815maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
8816since those will be reprocessed later if necessary.<wbr/></p>
8817<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
8818device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
8819The camera device may adjust its internal edge enhancement parameters for best
8820image 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>
8821            </td>
8822          </tr>
8823
8824          <tr class="entries_header">
8825            <th class="th_details" colspan="5">HAL Implementation Details</th>
8826          </tr>
8827          <tr class="entry_cont">
8828            <td class="entry_details" colspan="5">
8829              <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
8830adjust the internal edge enhancement reduction parameters appropriately to get the best
8831quality images.<wbr/></p>
8832            </td>
8833          </tr>
8834
8835          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8836           <!-- end of entry -->
8837
8838
8839          <tr class="entry" id="controls_android.edge.strength">
8840            <td class="entry_name
8841             " rowspan="1">
8842              android.<wbr/>edge.<wbr/>strength
8843            </td>
8844            <td class="entry_type">
8845                <span class="entry_type_name">byte</span>
8846
8847              <span class="entry_type_visibility"> [system]</span>
8848
8849
8850
8851
8852
8853
8854            </td> <!-- entry_type -->
8855
8856            <td class="entry_description">
8857              <p>Control the amount of edge enhancement
8858applied to the images</p>
8859            </td>
8860
8861            <td class="entry_units">
8862              1-10; 10 is maximum sharpening
8863            </td>
8864
8865            <td class="entry_range">
8866            </td>
8867
8868            <td class="entry_tags">
8869              <ul class="entry_tags">
8870                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8871              </ul>
8872            </td>
8873
8874          </tr>
8875
8876
8877          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8878           <!-- end of entry -->
8879
8880
8881
8882      <!-- end of kind -->
8883      </tbody>
8884      <tr><td colspan="6" class="kind">static</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="static_android.edge.availableEdgeModes">
8909            <td class="entry_name
8910             " rowspan="5">
8911              android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
8912            </td>
8913            <td class="entry_type">
8914                <span class="entry_type_name">byte</span>
8915                <span class="entry_type_container">x</span>
8916
8917                <span class="entry_type_array">
8918                  n
8919                </span>
8920              <span class="entry_type_visibility"> [public as enumList]</span>
8921
8922
8923              <span class="entry_type_hwlevel">[full] </span>
8924
8925
8926                <div class="entry_type_notes">list of enums</div>
8927
8928
8929            </td> <!-- entry_type -->
8930
8931            <td class="entry_description">
8932              <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
8933device.<wbr/></p>
8934            </td>
8935
8936            <td class="entry_units">
8937            </td>
8938
8939            <td class="entry_range">
8940              <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
8941            </td>
8942
8943            <td class="entry_tags">
8944              <ul class="entry_tags">
8945                  <li><a href="#tag_V1">V1</a></li>
8946                  <li><a href="#tag_REPROC">REPROC</a></li>
8947              </ul>
8948            </td>
8949
8950          </tr>
8951          <tr class="entries_header">
8952            <th class="th_details" colspan="5">Details</th>
8953          </tr>
8954          <tr class="entry_cont">
8955            <td class="entry_details" colspan="5">
8956              <p>Full-capability camera devices must always support OFF; camera devices that support
8957YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
8958list FAST.<wbr/></p>
8959            </td>
8960          </tr>
8961
8962          <tr class="entries_header">
8963            <th class="th_details" colspan="5">HAL Implementation Details</th>
8964          </tr>
8965          <tr class="entry_cont">
8966            <td class="entry_details" colspan="5">
8967              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
8968on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
8969That is,<wbr/> if the highest quality implementation on the camera device does not slow down
8970capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
8971            </td>
8972          </tr>
8973
8974          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8975           <!-- end of entry -->
8976
8977
8978
8979      <!-- end of kind -->
8980      </tbody>
8981      <tr><td colspan="6" class="kind">dynamic</td></tr>
8982
8983      <thead class="entries_header">
8984        <tr>
8985          <th class="th_name">Property Name</th>
8986          <th class="th_type">Type</th>
8987          <th class="th_description">Description</th>
8988          <th class="th_units">Units</th>
8989          <th class="th_range">Range</th>
8990          <th class="th_tags">Tags</th>
8991        </tr>
8992      </thead>
8993
8994      <tbody>
8995
8996
8997
8998
8999
9000
9001
9002
9003
9004
9005          <tr class="entry" id="dynamic_android.edge.mode">
9006            <td class="entry_name
9007             " rowspan="5">
9008              android.<wbr/>edge.<wbr/>mode
9009            </td>
9010            <td class="entry_type">
9011                <span class="entry_type_name entry_type_name_enum">byte</span>
9012
9013              <span class="entry_type_visibility"> [public]</span>
9014
9015
9016              <span class="entry_type_hwlevel">[full] </span>
9017
9018
9019
9020                <ul class="entry_type_enum">
9021                  <li>
9022                    <span class="entry_type_enum_name">OFF</span>
9023                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9024                  </li>
9025                  <li>
9026                    <span class="entry_type_enum_name">FAST</span>
9027                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9028relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9029slow down frame rate relative to sensor.<wbr/></p></span>
9030                  </li>
9031                  <li>
9032                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
9033                    <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>
9034                  </li>
9035                  <li>
9036                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
9037                    <span class="entry_type_enum_optional">[optional]</span>
9038                    <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
9039based 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
9040edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
9041applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
9042frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
9043is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9044<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9045with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9046high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9047produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9048high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9049preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9050buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9051reasonable preview quality.<wbr/></p>
9052<p>This mode is guaranteed to be supported by devices that support either the
9053YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9054(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9055be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9056                  </li>
9057                </ul>
9058
9059            </td> <!-- entry_type -->
9060
9061            <td class="entry_description">
9062              <p>Operation mode for edge
9063enhancement.<wbr/></p>
9064            </td>
9065
9066            <td class="entry_units">
9067            </td>
9068
9069            <td class="entry_range">
9070              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9071            </td>
9072
9073            <td class="entry_tags">
9074              <ul class="entry_tags">
9075                  <li><a href="#tag_V1">V1</a></li>
9076                  <li><a href="#tag_REPROC">REPROC</a></li>
9077              </ul>
9078            </td>
9079
9080          </tr>
9081          <tr class="entries_header">
9082            <th class="th_details" colspan="5">Details</th>
9083          </tr>
9084          <tr class="entry_cont">
9085            <td class="entry_details" colspan="5">
9086              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9087no enhancement will be applied by the camera device.<wbr/></p>
9088<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9089will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9090camera device will use the highest-quality enhancement algorithms,<wbr/>
9091even if it slows down capture rate.<wbr/> FAST means the camera device will
9092not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9093edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9094amount of enhancement applied.<wbr/></p>
9095<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9096buffer of high-resolution images during preview and reprocess image(s) from that buffer
9097into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9098edge enhancement to low-resolution streams (below maximum recording resolution) to
9099maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9100since those will be reprocessed later if necessary.<wbr/></p>
9101<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9102device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9103The camera device may adjust its internal edge enhancement parameters for best
9104image 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>
9105            </td>
9106          </tr>
9107
9108          <tr class="entries_header">
9109            <th class="th_details" colspan="5">HAL Implementation Details</th>
9110          </tr>
9111          <tr class="entry_cont">
9112            <td class="entry_details" colspan="5">
9113              <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
9114adjust the internal edge enhancement reduction parameters appropriately to get the best
9115quality images.<wbr/></p>
9116            </td>
9117          </tr>
9118
9119          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9120           <!-- end of entry -->
9121
9122
9123
9124      <!-- end of kind -->
9125      </tbody>
9126
9127  <!-- end of section -->
9128  <tr><td colspan="6" id="section_flash" class="section">flash</td></tr>
9129
9130
9131      <tr><td colspan="6" class="kind">controls</td></tr>
9132
9133      <thead class="entries_header">
9134        <tr>
9135          <th class="th_name">Property Name</th>
9136          <th class="th_type">Type</th>
9137          <th class="th_description">Description</th>
9138          <th class="th_units">Units</th>
9139          <th class="th_range">Range</th>
9140          <th class="th_tags">Tags</th>
9141        </tr>
9142      </thead>
9143
9144      <tbody>
9145
9146
9147
9148
9149
9150
9151
9152
9153
9154
9155          <tr class="entry" id="controls_android.flash.firingPower">
9156            <td class="entry_name
9157             " rowspan="3">
9158              android.<wbr/>flash.<wbr/>firing<wbr/>Power
9159            </td>
9160            <td class="entry_type">
9161                <span class="entry_type_name">byte</span>
9162
9163              <span class="entry_type_visibility"> [system]</span>
9164
9165
9166
9167
9168
9169
9170            </td> <!-- entry_type -->
9171
9172            <td class="entry_description">
9173              <p>Power for flash firing/<wbr/>torch</p>
9174            </td>
9175
9176            <td class="entry_units">
9177              10 is max power; 0 is no flash.<wbr/> Linear
9178            </td>
9179
9180            <td class="entry_range">
9181              <p>0 - 10</p>
9182            </td>
9183
9184            <td class="entry_tags">
9185              <ul class="entry_tags">
9186                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9187              </ul>
9188            </td>
9189
9190          </tr>
9191          <tr class="entries_header">
9192            <th class="th_details" colspan="5">Details</th>
9193          </tr>
9194          <tr class="entry_cont">
9195            <td class="entry_details" colspan="5">
9196              <p>Power for snapshot may use a different scale than
9197for torch mode.<wbr/> Only one entry for torch mode will be
9198used</p>
9199            </td>
9200          </tr>
9201
9202
9203          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9204           <!-- end of entry -->
9205
9206
9207          <tr class="entry" id="controls_android.flash.firingTime">
9208            <td class="entry_name
9209             " rowspan="3">
9210              android.<wbr/>flash.<wbr/>firing<wbr/>Time
9211            </td>
9212            <td class="entry_type">
9213                <span class="entry_type_name">int64</span>
9214
9215              <span class="entry_type_visibility"> [system]</span>
9216
9217
9218
9219
9220
9221
9222            </td> <!-- entry_type -->
9223
9224            <td class="entry_description">
9225              <p>Firing time of flash relative to start of
9226exposure</p>
9227            </td>
9228
9229            <td class="entry_units">
9230              nanoseconds
9231            </td>
9232
9233            <td class="entry_range">
9234              <p>0-(exposure time-flash duration)</p>
9235            </td>
9236
9237            <td class="entry_tags">
9238              <ul class="entry_tags">
9239                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9240              </ul>
9241            </td>
9242
9243          </tr>
9244          <tr class="entries_header">
9245            <th class="th_details" colspan="5">Details</th>
9246          </tr>
9247          <tr class="entry_cont">
9248            <td class="entry_details" colspan="5">
9249              <p>Clamped to (0,<wbr/> exposure time - flash
9250duration).<wbr/></p>
9251            </td>
9252          </tr>
9253
9254
9255          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9256           <!-- end of entry -->
9257
9258
9259          <tr class="entry" id="controls_android.flash.mode">
9260            <td class="entry_name
9261             " rowspan="3">
9262              android.<wbr/>flash.<wbr/>mode
9263            </td>
9264            <td class="entry_type">
9265                <span class="entry_type_name entry_type_name_enum">byte</span>
9266
9267              <span class="entry_type_visibility"> [public]</span>
9268
9269
9270              <span class="entry_type_hwlevel">[legacy] </span>
9271
9272
9273
9274                <ul class="entry_type_enum">
9275                  <li>
9276                    <span class="entry_type_enum_name">OFF</span>
9277                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
9278                  </li>
9279                  <li>
9280                    <span class="entry_type_enum_name">SINGLE</span>
9281                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
9282for this capture.<wbr/></p></span>
9283                  </li>
9284                  <li>
9285                    <span class="entry_type_enum_name">TORCH</span>
9286                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
9287                  </li>
9288                </ul>
9289
9290            </td> <!-- entry_type -->
9291
9292            <td class="entry_description">
9293              <p>The desired mode for for the camera device's flash control.<wbr/></p>
9294            </td>
9295
9296            <td class="entry_units">
9297            </td>
9298
9299            <td class="entry_range">
9300            </td>
9301
9302            <td class="entry_tags">
9303              <ul class="entry_tags">
9304                  <li><a href="#tag_BC">BC</a></li>
9305              </ul>
9306            </td>
9307
9308          </tr>
9309          <tr class="entries_header">
9310            <th class="th_details" colspan="5">Details</th>
9311          </tr>
9312          <tr class="entry_cont">
9313            <td class="entry_details" colspan="5">
9314              <p>This control is only effective when flash unit is available
9315(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
9316<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/>
9317Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
9318ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
9319<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
9320<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
9321device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
9322control should be used along with auto-exposure (AE) precapture metering sequence
9323(<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>
9324<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
9325for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
9326<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>
9327            </td>
9328          </tr>
9329
9330
9331          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9332           <!-- end of entry -->
9333
9334
9335
9336      <!-- end of kind -->
9337      </tbody>
9338      <tr><td colspan="6" class="kind">static</td></tr>
9339
9340      <thead class="entries_header">
9341        <tr>
9342          <th class="th_name">Property Name</th>
9343          <th class="th_type">Type</th>
9344          <th class="th_description">Description</th>
9345          <th class="th_units">Units</th>
9346          <th class="th_range">Range</th>
9347          <th class="th_tags">Tags</th>
9348        </tr>
9349      </thead>
9350
9351      <tbody>
9352
9353
9354
9355
9356
9357
9358
9359
9360
9361
9362
9363
9364          <tr class="entry" id="static_android.flash.info.available">
9365            <td class="entry_name
9366             " rowspan="3">
9367              android.<wbr/>flash.<wbr/>info.<wbr/>available
9368            </td>
9369            <td class="entry_type">
9370                <span class="entry_type_name entry_type_name_enum">byte</span>
9371
9372              <span class="entry_type_visibility"> [public as boolean]</span>
9373
9374
9375              <span class="entry_type_hwlevel">[legacy] </span>
9376
9377
9378
9379                <ul class="entry_type_enum">
9380                  <li>
9381                    <span class="entry_type_enum_name">FALSE</span>
9382                  </li>
9383                  <li>
9384                    <span class="entry_type_enum_name">TRUE</span>
9385                  </li>
9386                </ul>
9387
9388            </td> <!-- entry_type -->
9389
9390            <td class="entry_description">
9391              <p>Whether this camera device has a
9392flash unit.<wbr/></p>
9393            </td>
9394
9395            <td class="entry_units">
9396            </td>
9397
9398            <td class="entry_range">
9399            </td>
9400
9401            <td class="entry_tags">
9402              <ul class="entry_tags">
9403                  <li><a href="#tag_BC">BC</a></li>
9404              </ul>
9405            </td>
9406
9407          </tr>
9408          <tr class="entries_header">
9409            <th class="th_details" colspan="5">Details</th>
9410          </tr>
9411          <tr class="entry_cont">
9412            <td class="entry_details" colspan="5">
9413              <p>Will be <code>false</code> if no flash is available.<wbr/></p>
9414<p>If there is no flash unit,<wbr/> none of the flash controls do
9415anything.<wbr/></p>
9416            </td>
9417          </tr>
9418
9419
9420          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9421           <!-- end of entry -->
9422
9423
9424          <tr class="entry" id="static_android.flash.info.chargeDuration">
9425            <td class="entry_name
9426             " rowspan="3">
9427              android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
9428            </td>
9429            <td class="entry_type">
9430                <span class="entry_type_name">int64</span>
9431
9432              <span class="entry_type_visibility"> [system]</span>
9433
9434
9435
9436
9437
9438
9439            </td> <!-- entry_type -->
9440
9441            <td class="entry_description">
9442              <p>Time taken before flash can fire
9443again</p>
9444            </td>
9445
9446            <td class="entry_units">
9447              nanoseconds
9448            </td>
9449
9450            <td class="entry_range">
9451              <p>0-1e9</p>
9452            </td>
9453
9454            <td class="entry_tags">
9455              <ul class="entry_tags">
9456                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9457              </ul>
9458            </td>
9459
9460          </tr>
9461          <tr class="entries_header">
9462            <th class="th_details" colspan="5">Details</th>
9463          </tr>
9464          <tr class="entry_cont">
9465            <td class="entry_details" colspan="5">
9466              <p>1 second too long/<wbr/>too short for recharge? Should
9467this be power-dependent?</p>
9468            </td>
9469          </tr>
9470
9471
9472          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9473           <!-- end of entry -->
9474
9475
9476
9477
9478
9479          <tr class="entry" id="static_android.flash.colorTemperature">
9480            <td class="entry_name
9481             " rowspan="1">
9482              android.<wbr/>flash.<wbr/>color<wbr/>Temperature
9483            </td>
9484            <td class="entry_type">
9485                <span class="entry_type_name">byte</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>The x,<wbr/>y whitepoint of the
9498flash</p>
9499            </td>
9500
9501            <td class="entry_units">
9502              pair of floats
9503            </td>
9504
9505            <td class="entry_range">
9506              <p>0-1 for both</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
9517
9518          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9519           <!-- end of entry -->
9520
9521
9522          <tr class="entry" id="static_android.flash.maxEnergy">
9523            <td class="entry_name
9524             " rowspan="1">
9525              android.<wbr/>flash.<wbr/>max<wbr/>Energy
9526            </td>
9527            <td class="entry_type">
9528                <span class="entry_type_name">byte</span>
9529
9530              <span class="entry_type_visibility"> [system]</span>
9531
9532
9533
9534
9535
9536
9537            </td> <!-- entry_type -->
9538
9539            <td class="entry_description">
9540              <p>Max energy output of the flash for a full
9541power single flash</p>
9542            </td>
9543
9544            <td class="entry_units">
9545              lumen-seconds
9546            </td>
9547
9548            <td class="entry_range">
9549              <p>&gt;= 0</p>
9550            </td>
9551
9552            <td class="entry_tags">
9553              <ul class="entry_tags">
9554                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9555              </ul>
9556            </td>
9557
9558          </tr>
9559
9560
9561          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9562           <!-- end of entry -->
9563
9564
9565
9566      <!-- end of kind -->
9567      </tbody>
9568      <tr><td colspan="6" class="kind">dynamic</td></tr>
9569
9570      <thead class="entries_header">
9571        <tr>
9572          <th class="th_name">Property Name</th>
9573          <th class="th_type">Type</th>
9574          <th class="th_description">Description</th>
9575          <th class="th_units">Units</th>
9576          <th class="th_range">Range</th>
9577          <th class="th_tags">Tags</th>
9578        </tr>
9579      </thead>
9580
9581      <tbody>
9582
9583
9584
9585
9586
9587
9588
9589
9590
9591
9592          <tr class="entry" id="dynamic_android.flash.firingPower">
9593            <td class="entry_name
9594             " rowspan="3">
9595              android.<wbr/>flash.<wbr/>firing<wbr/>Power
9596            </td>
9597            <td class="entry_type">
9598                <span class="entry_type_name">byte</span>
9599
9600              <span class="entry_type_visibility"> [system]</span>
9601
9602
9603
9604
9605
9606
9607            </td> <!-- entry_type -->
9608
9609            <td class="entry_description">
9610              <p>Power for flash firing/<wbr/>torch</p>
9611            </td>
9612
9613            <td class="entry_units">
9614              10 is max power; 0 is no flash.<wbr/> Linear
9615            </td>
9616
9617            <td class="entry_range">
9618              <p>0 - 10</p>
9619            </td>
9620
9621            <td class="entry_tags">
9622              <ul class="entry_tags">
9623                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9624              </ul>
9625            </td>
9626
9627          </tr>
9628          <tr class="entries_header">
9629            <th class="th_details" colspan="5">Details</th>
9630          </tr>
9631          <tr class="entry_cont">
9632            <td class="entry_details" colspan="5">
9633              <p>Power for snapshot may use a different scale than
9634for torch mode.<wbr/> Only one entry for torch mode will be
9635used</p>
9636            </td>
9637          </tr>
9638
9639
9640          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9641           <!-- end of entry -->
9642
9643
9644          <tr class="entry" id="dynamic_android.flash.firingTime">
9645            <td class="entry_name
9646             " rowspan="3">
9647              android.<wbr/>flash.<wbr/>firing<wbr/>Time
9648            </td>
9649            <td class="entry_type">
9650                <span class="entry_type_name">int64</span>
9651
9652              <span class="entry_type_visibility"> [system]</span>
9653
9654
9655
9656
9657
9658
9659            </td> <!-- entry_type -->
9660
9661            <td class="entry_description">
9662              <p>Firing time of flash relative to start of
9663exposure</p>
9664            </td>
9665
9666            <td class="entry_units">
9667              nanoseconds
9668            </td>
9669
9670            <td class="entry_range">
9671              <p>0-(exposure time-flash duration)</p>
9672            </td>
9673
9674            <td class="entry_tags">
9675              <ul class="entry_tags">
9676                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9677              </ul>
9678            </td>
9679
9680          </tr>
9681          <tr class="entries_header">
9682            <th class="th_details" colspan="5">Details</th>
9683          </tr>
9684          <tr class="entry_cont">
9685            <td class="entry_details" colspan="5">
9686              <p>Clamped to (0,<wbr/> exposure time - flash
9687duration).<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="dynamic_android.flash.mode">
9697            <td class="entry_name
9698             " rowspan="3">
9699              android.<wbr/>flash.<wbr/>mode
9700            </td>
9701            <td class="entry_type">
9702                <span class="entry_type_name entry_type_name_enum">byte</span>
9703
9704              <span class="entry_type_visibility"> [public]</span>
9705
9706
9707              <span class="entry_type_hwlevel">[legacy] </span>
9708
9709
9710
9711                <ul class="entry_type_enum">
9712                  <li>
9713                    <span class="entry_type_enum_name">OFF</span>
9714                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
9715                  </li>
9716                  <li>
9717                    <span class="entry_type_enum_name">SINGLE</span>
9718                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
9719for this capture.<wbr/></p></span>
9720                  </li>
9721                  <li>
9722                    <span class="entry_type_enum_name">TORCH</span>
9723                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
9724                  </li>
9725                </ul>
9726
9727            </td> <!-- entry_type -->
9728
9729            <td class="entry_description">
9730              <p>The desired mode for for the camera device's flash control.<wbr/></p>
9731            </td>
9732
9733            <td class="entry_units">
9734            </td>
9735
9736            <td class="entry_range">
9737            </td>
9738
9739            <td class="entry_tags">
9740              <ul class="entry_tags">
9741                  <li><a href="#tag_BC">BC</a></li>
9742              </ul>
9743            </td>
9744
9745          </tr>
9746          <tr class="entries_header">
9747            <th class="th_details" colspan="5">Details</th>
9748          </tr>
9749          <tr class="entry_cont">
9750            <td class="entry_details" colspan="5">
9751              <p>This control is only effective when flash unit is available
9752(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
9753<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/>
9754Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
9755ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
9756<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
9757<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
9758device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
9759control should be used along with auto-exposure (AE) precapture metering sequence
9760(<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>
9761<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
9762for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
9763<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>
9764            </td>
9765          </tr>
9766
9767
9768          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9769           <!-- end of entry -->
9770
9771
9772          <tr class="entry" id="dynamic_android.flash.state">
9773            <td class="entry_name
9774             " rowspan="3">
9775              android.<wbr/>flash.<wbr/>state
9776            </td>
9777            <td class="entry_type">
9778                <span class="entry_type_name entry_type_name_enum">byte</span>
9779
9780              <span class="entry_type_visibility"> [public]</span>
9781
9782
9783              <span class="entry_type_hwlevel">[limited] </span>
9784
9785
9786
9787                <ul class="entry_type_enum">
9788                  <li>
9789                    <span class="entry_type_enum_name">UNAVAILABLE</span>
9790                    <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
9791                  </li>
9792                  <li>
9793                    <span class="entry_type_enum_name">CHARGING</span>
9794                    <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
9795                  </li>
9796                  <li>
9797                    <span class="entry_type_enum_name">READY</span>
9798                    <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
9799                  </li>
9800                  <li>
9801                    <span class="entry_type_enum_name">FIRED</span>
9802                    <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
9803                  </li>
9804                  <li>
9805                    <span class="entry_type_enum_name">PARTIAL</span>
9806                    <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
9807<p>This is usually due to the next or previous frame having
9808the flash fire,<wbr/> and the flash spilling into this capture
9809due to hardware limitations.<wbr/></p></span>
9810                  </li>
9811                </ul>
9812
9813            </td> <!-- entry_type -->
9814
9815            <td class="entry_description">
9816              <p>Current state of the flash
9817unit.<wbr/></p>
9818            </td>
9819
9820            <td class="entry_units">
9821            </td>
9822
9823            <td class="entry_range">
9824            </td>
9825
9826            <td class="entry_tags">
9827            </td>
9828
9829          </tr>
9830          <tr class="entries_header">
9831            <th class="th_details" colspan="5">Details</th>
9832          </tr>
9833          <tr class="entry_cont">
9834            <td class="entry_details" colspan="5">
9835              <p>When the camera device doesn't have flash unit
9836(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/>
9837Other states indicate the current flash status.<wbr/></p>
9838<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
9839<ul>
9840<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
9841<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
9842   will always return FIRED.<wbr/></li>
9843<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
9844   will always return FIRED.<wbr/></li>
9845</ul>
9846<p>In all other conditions the state will not be available on
9847LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
9848            </td>
9849          </tr>
9850
9851
9852          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9853           <!-- end of entry -->
9854
9855
9856
9857      <!-- end of kind -->
9858      </tbody>
9859
9860  <!-- end of section -->
9861  <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr>
9862
9863
9864      <tr><td colspan="6" class="kind">controls</td></tr>
9865
9866      <thead class="entries_header">
9867        <tr>
9868          <th class="th_name">Property Name</th>
9869          <th class="th_type">Type</th>
9870          <th class="th_description">Description</th>
9871          <th class="th_units">Units</th>
9872          <th class="th_range">Range</th>
9873          <th class="th_tags">Tags</th>
9874        </tr>
9875      </thead>
9876
9877      <tbody>
9878
9879
9880
9881
9882
9883
9884
9885
9886
9887
9888          <tr class="entry" id="controls_android.hotPixel.mode">
9889            <td class="entry_name
9890             " rowspan="3">
9891              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
9892            </td>
9893            <td class="entry_type">
9894                <span class="entry_type_name entry_type_name_enum">byte</span>
9895
9896              <span class="entry_type_visibility"> [public]</span>
9897
9898
9899
9900
9901
9902                <ul class="entry_type_enum">
9903                  <li>
9904                    <span class="entry_type_enum_name">OFF</span>
9905                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
9906<p>The frame rate must not be reduced relative to sensor raw output
9907for this option.<wbr/></p>
9908<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>
9909                  </li>
9910                  <li>
9911                    <span class="entry_type_enum_name">FAST</span>
9912                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
9913rate relative to sensor raw output.<wbr/></p>
9914<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>
9915                  </li>
9916                  <li>
9917                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
9918                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
9919of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
9920<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>
9921                  </li>
9922                </ul>
9923
9924            </td> <!-- entry_type -->
9925
9926            <td class="entry_description">
9927              <p>Operational mode for hot pixel correction.<wbr/></p>
9928            </td>
9929
9930            <td class="entry_units">
9931            </td>
9932
9933            <td class="entry_range">
9934              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
9935            </td>
9936
9937            <td class="entry_tags">
9938              <ul class="entry_tags">
9939                  <li><a href="#tag_V1">V1</a></li>
9940                  <li><a href="#tag_RAW">RAW</a></li>
9941              </ul>
9942            </td>
9943
9944          </tr>
9945          <tr class="entries_header">
9946            <th class="th_details" colspan="5">Details</th>
9947          </tr>
9948          <tr class="entry_cont">
9949            <td class="entry_details" colspan="5">
9950              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
9951that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
9952are stuck at an arbitrary value or are oversensitive).<wbr/></p>
9953            </td>
9954          </tr>
9955
9956
9957          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9958           <!-- end of entry -->
9959
9960
9961
9962      <!-- end of kind -->
9963      </tbody>
9964      <tr><td colspan="6" class="kind">static</td></tr>
9965
9966      <thead class="entries_header">
9967        <tr>
9968          <th class="th_name">Property Name</th>
9969          <th class="th_type">Type</th>
9970          <th class="th_description">Description</th>
9971          <th class="th_units">Units</th>
9972          <th class="th_range">Range</th>
9973          <th class="th_tags">Tags</th>
9974        </tr>
9975      </thead>
9976
9977      <tbody>
9978
9979
9980
9981
9982
9983
9984
9985
9986
9987
9988          <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
9989            <td class="entry_name
9990             " rowspan="5">
9991              android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
9992            </td>
9993            <td class="entry_type">
9994                <span class="entry_type_name">byte</span>
9995                <span class="entry_type_container">x</span>
9996
9997                <span class="entry_type_array">
9998                  n
9999                </span>
10000              <span class="entry_type_visibility"> [public as enumList]</span>
10001
10002
10003
10004
10005                <div class="entry_type_notes">list of enums</div>
10006
10007
10008            </td> <!-- entry_type -->
10009
10010            <td class="entry_description">
10011              <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
10012camera device.<wbr/></p>
10013            </td>
10014
10015            <td class="entry_units">
10016            </td>
10017
10018            <td class="entry_range">
10019              <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
10020            </td>
10021
10022            <td class="entry_tags">
10023              <ul class="entry_tags">
10024                  <li><a href="#tag_V1">V1</a></li>
10025                  <li><a href="#tag_RAW">RAW</a></li>
10026              </ul>
10027            </td>
10028
10029          </tr>
10030          <tr class="entries_header">
10031            <th class="th_details" colspan="5">Details</th>
10032          </tr>
10033          <tr class="entry_cont">
10034            <td class="entry_details" colspan="5">
10035              <p>FULL mode camera devices will always support FAST.<wbr/></p>
10036            </td>
10037          </tr>
10038
10039          <tr class="entries_header">
10040            <th class="th_details" colspan="5">HAL Implementation Details</th>
10041          </tr>
10042          <tr class="entry_cont">
10043            <td class="entry_details" colspan="5">
10044              <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
10045pixels than actual pixels on the camera sensor.<wbr/>
10046HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
10047on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
10048That is,<wbr/> if the highest quality implementation on the camera device does not slow down
10049capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
10050            </td>
10051          </tr>
10052
10053          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10054           <!-- end of entry -->
10055
10056
10057
10058      <!-- end of kind -->
10059      </tbody>
10060      <tr><td colspan="6" class="kind">dynamic</td></tr>
10061
10062      <thead class="entries_header">
10063        <tr>
10064          <th class="th_name">Property Name</th>
10065          <th class="th_type">Type</th>
10066          <th class="th_description">Description</th>
10067          <th class="th_units">Units</th>
10068          <th class="th_range">Range</th>
10069          <th class="th_tags">Tags</th>
10070        </tr>
10071      </thead>
10072
10073      <tbody>
10074
10075
10076
10077
10078
10079
10080
10081
10082
10083
10084          <tr class="entry" id="dynamic_android.hotPixel.mode">
10085            <td class="entry_name
10086             " rowspan="3">
10087              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10088            </td>
10089            <td class="entry_type">
10090                <span class="entry_type_name entry_type_name_enum">byte</span>
10091
10092              <span class="entry_type_visibility"> [public]</span>
10093
10094
10095
10096
10097
10098                <ul class="entry_type_enum">
10099                  <li>
10100                    <span class="entry_type_enum_name">OFF</span>
10101                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10102<p>The frame rate must not be reduced relative to sensor raw output
10103for this option.<wbr/></p>
10104<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>
10105                  </li>
10106                  <li>
10107                    <span class="entry_type_enum_name">FAST</span>
10108                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10109rate relative to sensor raw output.<wbr/></p>
10110<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>
10111                  </li>
10112                  <li>
10113                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
10114                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10115of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10116<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>
10117                  </li>
10118                </ul>
10119
10120            </td> <!-- entry_type -->
10121
10122            <td class="entry_description">
10123              <p>Operational mode for hot pixel correction.<wbr/></p>
10124            </td>
10125
10126            <td class="entry_units">
10127            </td>
10128
10129            <td class="entry_range">
10130              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10131            </td>
10132
10133            <td class="entry_tags">
10134              <ul class="entry_tags">
10135                  <li><a href="#tag_V1">V1</a></li>
10136                  <li><a href="#tag_RAW">RAW</a></li>
10137              </ul>
10138            </td>
10139
10140          </tr>
10141          <tr class="entries_header">
10142            <th class="th_details" colspan="5">Details</th>
10143          </tr>
10144          <tr class="entry_cont">
10145            <td class="entry_details" colspan="5">
10146              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10147that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10148are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10149            </td>
10150          </tr>
10151
10152
10153          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10154           <!-- end of entry -->
10155
10156
10157
10158      <!-- end of kind -->
10159      </tbody>
10160
10161  <!-- end of section -->
10162  <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr>
10163
10164
10165      <tr><td colspan="6" class="kind">controls</td></tr>
10166
10167      <thead class="entries_header">
10168        <tr>
10169          <th class="th_name">Property Name</th>
10170          <th class="th_type">Type</th>
10171          <th class="th_description">Description</th>
10172          <th class="th_units">Units</th>
10173          <th class="th_range">Range</th>
10174          <th class="th_tags">Tags</th>
10175        </tr>
10176      </thead>
10177
10178      <tbody>
10179
10180
10181
10182
10183
10184
10185
10186
10187
10188
10189          <tr class="entry" id="controls_android.jpeg.gpsLocation">
10190            <td class="entry_name
10191             " rowspan="3">
10192              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
10193            </td>
10194            <td class="entry_type">
10195                <span class="entry_type_name">byte</span>
10196
10197              <span class="entry_type_visibility"> [public as location]</span>
10198
10199              <span class="entry_type_synthetic">[synthetic] </span>
10200
10201              <span class="entry_type_hwlevel">[legacy] </span>
10202
10203
10204
10205
10206            </td> <!-- entry_type -->
10207
10208            <td class="entry_description">
10209              <p>A location object to use when generating image GPS metadata.<wbr/></p>
10210            </td>
10211
10212            <td class="entry_units">
10213            </td>
10214
10215            <td class="entry_range">
10216            </td>
10217
10218            <td class="entry_tags">
10219            </td>
10220
10221          </tr>
10222          <tr class="entries_header">
10223            <th class="th_details" colspan="5">Details</th>
10224          </tr>
10225          <tr class="entry_cont">
10226            <td class="entry_details" colspan="5">
10227              <p>Setting a location object in a request will include the GPS coordinates of the location
10228into any JPEG images captured based on the request.<wbr/> These coordinates can then be
10229viewed by anyone who receives the JPEG image.<wbr/></p>
10230            </td>
10231          </tr>
10232
10233
10234          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10235           <!-- end of entry -->
10236
10237
10238          <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
10239            <td class="entry_name
10240             " rowspan="1">
10241              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
10242            </td>
10243            <td class="entry_type">
10244                <span class="entry_type_name">double</span>
10245                <span class="entry_type_container">x</span>
10246
10247                <span class="entry_type_array">
10248                  3
10249                </span>
10250              <span class="entry_type_visibility"> [hidden]</span>
10251
10252
10253              <span class="entry_type_hwlevel">[legacy] </span>
10254
10255
10256                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
10257
10258
10259            </td> <!-- entry_type -->
10260
10261            <td class="entry_description">
10262              <p>GPS coordinates to include in output JPEG
10263EXIF.<wbr/></p>
10264            </td>
10265
10266            <td class="entry_units">
10267            </td>
10268
10269            <td class="entry_range">
10270              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
10271            </td>
10272
10273            <td class="entry_tags">
10274              <ul class="entry_tags">
10275                  <li><a href="#tag_BC">BC</a></li>
10276              </ul>
10277            </td>
10278
10279          </tr>
10280
10281
10282          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10283           <!-- end of entry -->
10284
10285
10286          <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
10287            <td class="entry_name
10288             " rowspan="1">
10289              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
10290            </td>
10291            <td class="entry_type">
10292                <span class="entry_type_name">byte</span>
10293
10294              <span class="entry_type_visibility"> [hidden as string]</span>
10295
10296
10297              <span class="entry_type_hwlevel">[legacy] </span>
10298
10299
10300
10301
10302            </td> <!-- entry_type -->
10303
10304            <td class="entry_description">
10305              <p>32 characters describing GPS algorithm to
10306include in EXIF.<wbr/></p>
10307            </td>
10308
10309            <td class="entry_units">
10310              UTF-8 null-terminated string
10311            </td>
10312
10313            <td class="entry_range">
10314            </td>
10315
10316            <td class="entry_tags">
10317              <ul class="entry_tags">
10318                  <li><a href="#tag_BC">BC</a></li>
10319              </ul>
10320            </td>
10321
10322          </tr>
10323
10324
10325          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10326           <!-- end of entry -->
10327
10328
10329          <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
10330            <td class="entry_name
10331             " rowspan="1">
10332              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
10333            </td>
10334            <td class="entry_type">
10335                <span class="entry_type_name">int64</span>
10336
10337              <span class="entry_type_visibility"> [hidden]</span>
10338
10339
10340              <span class="entry_type_hwlevel">[legacy] </span>
10341
10342
10343
10344
10345            </td> <!-- entry_type -->
10346
10347            <td class="entry_description">
10348              <p>Time GPS fix was made to include in
10349EXIF.<wbr/></p>
10350            </td>
10351
10352            <td class="entry_units">
10353              UTC in seconds since January 1,<wbr/> 1970
10354            </td>
10355
10356            <td class="entry_range">
10357            </td>
10358
10359            <td class="entry_tags">
10360              <ul class="entry_tags">
10361                  <li><a href="#tag_BC">BC</a></li>
10362              </ul>
10363            </td>
10364
10365          </tr>
10366
10367
10368          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10369           <!-- end of entry -->
10370
10371
10372          <tr class="entry" id="controls_android.jpeg.orientation">
10373            <td class="entry_name
10374             " rowspan="3">
10375              android.<wbr/>jpeg.<wbr/>orientation
10376            </td>
10377            <td class="entry_type">
10378                <span class="entry_type_name">int32</span>
10379
10380              <span class="entry_type_visibility"> [public]</span>
10381
10382
10383              <span class="entry_type_hwlevel">[legacy] </span>
10384
10385
10386
10387
10388            </td> <!-- entry_type -->
10389
10390            <td class="entry_description">
10391              <p>The orientation for a JPEG image.<wbr/></p>
10392            </td>
10393
10394            <td class="entry_units">
10395              Degrees in multiples of 90
10396            </td>
10397
10398            <td class="entry_range">
10399              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
10400            </td>
10401
10402            <td class="entry_tags">
10403              <ul class="entry_tags">
10404                  <li><a href="#tag_BC">BC</a></li>
10405              </ul>
10406            </td>
10407
10408          </tr>
10409          <tr class="entries_header">
10410            <th class="th_details" colspan="5">Details</th>
10411          </tr>
10412          <tr class="entry_cont">
10413            <td class="entry_details" colspan="5">
10414              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
10415to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
10416upright.<wbr/></p>
10417<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
10418rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
10419the thumbnail data will also be rotated.<wbr/></p>
10420<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
10421by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
10422<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
10423sample code may be used:</p>
10424<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
10425    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
10426    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
10427
10428    //<wbr/> Round device orientation to a multiple of 90
10429    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
10430
10431    //<wbr/> Reverse device orientation for front-facing cameras
10432    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
10433    if (facingFront) deviceOrientation = -deviceOrientation;
10434
10435    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
10436    //<wbr/> the image upright relative to the device orientation
10437    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
10438
10439    return jpegOrientation;
10440}
10441</code></pre>
10442            </td>
10443          </tr>
10444
10445
10446          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10447           <!-- end of entry -->
10448
10449
10450          <tr class="entry" id="controls_android.jpeg.quality">
10451            <td class="entry_name
10452             " rowspan="3">
10453              android.<wbr/>jpeg.<wbr/>quality
10454            </td>
10455            <td class="entry_type">
10456                <span class="entry_type_name">byte</span>
10457
10458              <span class="entry_type_visibility"> [public]</span>
10459
10460
10461              <span class="entry_type_hwlevel">[legacy] </span>
10462
10463
10464
10465
10466            </td> <!-- entry_type -->
10467
10468            <td class="entry_description">
10469              <p>Compression quality of the final JPEG
10470image.<wbr/></p>
10471            </td>
10472
10473            <td class="entry_units">
10474            </td>
10475
10476            <td class="entry_range">
10477              <p>1-100; larger is higher quality</p>
10478            </td>
10479
10480            <td class="entry_tags">
10481              <ul class="entry_tags">
10482                  <li><a href="#tag_BC">BC</a></li>
10483              </ul>
10484            </td>
10485
10486          </tr>
10487          <tr class="entries_header">
10488            <th class="th_details" colspan="5">Details</th>
10489          </tr>
10490          <tr class="entry_cont">
10491            <td class="entry_details" colspan="5">
10492              <p>85-95 is typical usage range.<wbr/></p>
10493            </td>
10494          </tr>
10495
10496
10497          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10498           <!-- end of entry -->
10499
10500
10501          <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
10502            <td class="entry_name
10503             " rowspan="1">
10504              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
10505            </td>
10506            <td class="entry_type">
10507                <span class="entry_type_name">byte</span>
10508
10509              <span class="entry_type_visibility"> [public]</span>
10510
10511
10512              <span class="entry_type_hwlevel">[legacy] </span>
10513
10514
10515
10516
10517            </td> <!-- entry_type -->
10518
10519            <td class="entry_description">
10520              <p>Compression quality of JPEG
10521thumbnail.<wbr/></p>
10522            </td>
10523
10524            <td class="entry_units">
10525            </td>
10526
10527            <td class="entry_range">
10528              <p>1-100; larger is higher quality</p>
10529            </td>
10530
10531            <td class="entry_tags">
10532              <ul class="entry_tags">
10533                  <li><a href="#tag_BC">BC</a></li>
10534              </ul>
10535            </td>
10536
10537          </tr>
10538
10539
10540          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10541           <!-- end of entry -->
10542
10543
10544          <tr class="entry" id="controls_android.jpeg.thumbnailSize">
10545            <td class="entry_name
10546             " rowspan="5">
10547              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
10548            </td>
10549            <td class="entry_type">
10550                <span class="entry_type_name">int32</span>
10551                <span class="entry_type_container">x</span>
10552
10553                <span class="entry_type_array">
10554                  2
10555                </span>
10556              <span class="entry_type_visibility"> [public as size]</span>
10557
10558
10559              <span class="entry_type_hwlevel">[legacy] </span>
10560
10561
10562
10563
10564            </td> <!-- entry_type -->
10565
10566            <td class="entry_description">
10567              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
10568            </td>
10569
10570            <td class="entry_units">
10571            </td>
10572
10573            <td class="entry_range">
10574              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
10575            </td>
10576
10577            <td class="entry_tags">
10578              <ul class="entry_tags">
10579                  <li><a href="#tag_BC">BC</a></li>
10580              </ul>
10581            </td>
10582
10583          </tr>
10584          <tr class="entries_header">
10585            <th class="th_details" colspan="5">Details</th>
10586          </tr>
10587          <tr class="entry_cont">
10588            <td class="entry_details" colspan="5">
10589              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
10590but the captured JPEG will still be a valid image.<wbr/></p>
10591<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
10592should have the same aspect ratio as the main JPEG output.<wbr/></p>
10593<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
10594ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
10595For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1059616:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
10597generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
10598Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
10599<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
10600the camera device will handle thumbnail rotation in one of the following ways:</p>
10601<ul>
10602<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
10603  and keep jpeg and thumbnail image data unrotated.<wbr/></li>
10604<li>Rotate the jpeg and thumbnail image data and not set
10605  <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
10606  case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
10607  capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
10608  orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
10609  size.<wbr/></li>
10610</ul>
10611            </td>
10612          </tr>
10613
10614          <tr class="entries_header">
10615            <th class="th_details" colspan="5">HAL Implementation Details</th>
10616          </tr>
10617          <tr class="entry_cont">
10618            <td class="entry_details" colspan="5">
10619              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
10620The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
10621The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
10622thumbnail image cropping.<wbr/></p>
10623            </td>
10624          </tr>
10625
10626          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10627           <!-- end of entry -->
10628
10629
10630
10631      <!-- end of kind -->
10632      </tbody>
10633      <tr><td colspan="6" class="kind">static</td></tr>
10634
10635      <thead class="entries_header">
10636        <tr>
10637          <th class="th_name">Property Name</th>
10638          <th class="th_type">Type</th>
10639          <th class="th_description">Description</th>
10640          <th class="th_units">Units</th>
10641          <th class="th_range">Range</th>
10642          <th class="th_tags">Tags</th>
10643        </tr>
10644      </thead>
10645
10646      <tbody>
10647
10648
10649
10650
10651
10652
10653
10654
10655
10656
10657          <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
10658            <td class="entry_name
10659             " rowspan="3">
10660              android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
10661            </td>
10662            <td class="entry_type">
10663                <span class="entry_type_name">int32</span>
10664                <span class="entry_type_container">x</span>
10665
10666                <span class="entry_type_array">
10667                  2 x n
10668                </span>
10669              <span class="entry_type_visibility"> [public as size]</span>
10670
10671
10672              <span class="entry_type_hwlevel">[legacy] </span>
10673
10674
10675
10676
10677            </td> <!-- entry_type -->
10678
10679            <td class="entry_description">
10680              <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
10681camera device.<wbr/></p>
10682            </td>
10683
10684            <td class="entry_units">
10685            </td>
10686
10687            <td class="entry_range">
10688            </td>
10689
10690            <td class="entry_tags">
10691              <ul class="entry_tags">
10692                  <li><a href="#tag_BC">BC</a></li>
10693              </ul>
10694            </td>
10695
10696          </tr>
10697          <tr class="entries_header">
10698            <th class="th_details" colspan="5">Details</th>
10699          </tr>
10700          <tr class="entry_cont">
10701            <td class="entry_details" colspan="5">
10702              <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
10703thumbnail should be generated.<wbr/></p>
10704<p>Below condiditions will be satisfied for this size list:</p>
10705<ul>
10706<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
10707If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
10708<li>The aspect ratio of the largest thumbnail size will be same as the
10709aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
10710The largest size is defined as the size that has the largest pixel area
10711in a given size list.<wbr/></li>
10712<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
10713one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
10714and vice versa.<wbr/></li>
10715<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
10716</ul>
10717            </td>
10718          </tr>
10719
10720
10721          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10722           <!-- end of entry -->
10723
10724
10725          <tr class="entry" id="static_android.jpeg.maxSize">
10726            <td class="entry_name
10727             " rowspan="3">
10728              android.<wbr/>jpeg.<wbr/>max<wbr/>Size
10729            </td>
10730            <td class="entry_type">
10731                <span class="entry_type_name">int32</span>
10732
10733              <span class="entry_type_visibility"> [system]</span>
10734
10735
10736
10737
10738
10739
10740            </td> <!-- entry_type -->
10741
10742            <td class="entry_description">
10743              <p>Maximum size in bytes for the compressed
10744JPEG buffer</p>
10745            </td>
10746
10747            <td class="entry_units">
10748            </td>
10749
10750            <td class="entry_range">
10751              <p>Must be large enough to fit any JPEG produced by
10752the camera</p>
10753            </td>
10754
10755            <td class="entry_tags">
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>This is used for sizing the gralloc buffers for
10765JPEG</p>
10766            </td>
10767          </tr>
10768
10769
10770          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10771           <!-- end of entry -->
10772
10773
10774
10775      <!-- end of kind -->
10776      </tbody>
10777      <tr><td colspan="6" class="kind">dynamic</td></tr>
10778
10779      <thead class="entries_header">
10780        <tr>
10781          <th class="th_name">Property Name</th>
10782          <th class="th_type">Type</th>
10783          <th class="th_description">Description</th>
10784          <th class="th_units">Units</th>
10785          <th class="th_range">Range</th>
10786          <th class="th_tags">Tags</th>
10787        </tr>
10788      </thead>
10789
10790      <tbody>
10791
10792
10793
10794
10795
10796
10797
10798
10799
10800
10801          <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
10802            <td class="entry_name
10803             " rowspan="3">
10804              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
10805            </td>
10806            <td class="entry_type">
10807                <span class="entry_type_name">byte</span>
10808
10809              <span class="entry_type_visibility"> [public as location]</span>
10810
10811              <span class="entry_type_synthetic">[synthetic] </span>
10812
10813              <span class="entry_type_hwlevel">[legacy] </span>
10814
10815
10816
10817
10818            </td> <!-- entry_type -->
10819
10820            <td class="entry_description">
10821              <p>A location object to use when generating image GPS metadata.<wbr/></p>
10822            </td>
10823
10824            <td class="entry_units">
10825            </td>
10826
10827            <td class="entry_range">
10828            </td>
10829
10830            <td class="entry_tags">
10831            </td>
10832
10833          </tr>
10834          <tr class="entries_header">
10835            <th class="th_details" colspan="5">Details</th>
10836          </tr>
10837          <tr class="entry_cont">
10838            <td class="entry_details" colspan="5">
10839              <p>Setting a location object in a request will include the GPS coordinates of the location
10840into any JPEG images captured based on the request.<wbr/> These coordinates can then be
10841viewed by anyone who receives the JPEG image.<wbr/></p>
10842            </td>
10843          </tr>
10844
10845
10846          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10847           <!-- end of entry -->
10848
10849
10850          <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
10851            <td class="entry_name
10852             " rowspan="1">
10853              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
10854            </td>
10855            <td class="entry_type">
10856                <span class="entry_type_name">double</span>
10857                <span class="entry_type_container">x</span>
10858
10859                <span class="entry_type_array">
10860                  3
10861                </span>
10862              <span class="entry_type_visibility"> [hidden]</span>
10863
10864
10865              <span class="entry_type_hwlevel">[legacy] </span>
10866
10867
10868                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
10869
10870
10871            </td> <!-- entry_type -->
10872
10873            <td class="entry_description">
10874              <p>GPS coordinates to include in output JPEG
10875EXIF.<wbr/></p>
10876            </td>
10877
10878            <td class="entry_units">
10879            </td>
10880
10881            <td class="entry_range">
10882              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
10883            </td>
10884
10885            <td class="entry_tags">
10886              <ul class="entry_tags">
10887                  <li><a href="#tag_BC">BC</a></li>
10888              </ul>
10889            </td>
10890
10891          </tr>
10892
10893
10894          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10895           <!-- end of entry -->
10896
10897
10898          <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
10899            <td class="entry_name
10900             " rowspan="1">
10901              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
10902            </td>
10903            <td class="entry_type">
10904                <span class="entry_type_name">byte</span>
10905
10906              <span class="entry_type_visibility"> [hidden as string]</span>
10907
10908
10909              <span class="entry_type_hwlevel">[legacy] </span>
10910
10911
10912
10913
10914            </td> <!-- entry_type -->
10915
10916            <td class="entry_description">
10917              <p>32 characters describing GPS algorithm to
10918include in EXIF.<wbr/></p>
10919            </td>
10920
10921            <td class="entry_units">
10922              UTF-8 null-terminated string
10923            </td>
10924
10925            <td class="entry_range">
10926            </td>
10927
10928            <td class="entry_tags">
10929              <ul class="entry_tags">
10930                  <li><a href="#tag_BC">BC</a></li>
10931              </ul>
10932            </td>
10933
10934          </tr>
10935
10936
10937          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10938           <!-- end of entry -->
10939
10940
10941          <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
10942            <td class="entry_name
10943             " rowspan="1">
10944              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
10945            </td>
10946            <td class="entry_type">
10947                <span class="entry_type_name">int64</span>
10948
10949              <span class="entry_type_visibility"> [hidden]</span>
10950
10951
10952              <span class="entry_type_hwlevel">[legacy] </span>
10953
10954
10955
10956
10957            </td> <!-- entry_type -->
10958
10959            <td class="entry_description">
10960              <p>Time GPS fix was made to include in
10961EXIF.<wbr/></p>
10962            </td>
10963
10964            <td class="entry_units">
10965              UTC in seconds since January 1,<wbr/> 1970
10966            </td>
10967
10968            <td class="entry_range">
10969            </td>
10970
10971            <td class="entry_tags">
10972              <ul class="entry_tags">
10973                  <li><a href="#tag_BC">BC</a></li>
10974              </ul>
10975            </td>
10976
10977          </tr>
10978
10979
10980          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10981           <!-- end of entry -->
10982
10983
10984          <tr class="entry" id="dynamic_android.jpeg.orientation">
10985            <td class="entry_name
10986             " rowspan="3">
10987              android.<wbr/>jpeg.<wbr/>orientation
10988            </td>
10989            <td class="entry_type">
10990                <span class="entry_type_name">int32</span>
10991
10992              <span class="entry_type_visibility"> [public]</span>
10993
10994
10995              <span class="entry_type_hwlevel">[legacy] </span>
10996
10997
10998
10999
11000            </td> <!-- entry_type -->
11001
11002            <td class="entry_description">
11003              <p>The orientation for a JPEG image.<wbr/></p>
11004            </td>
11005
11006            <td class="entry_units">
11007              Degrees in multiples of 90
11008            </td>
11009
11010            <td class="entry_range">
11011              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11012            </td>
11013
11014            <td class="entry_tags">
11015              <ul class="entry_tags">
11016                  <li><a href="#tag_BC">BC</a></li>
11017              </ul>
11018            </td>
11019
11020          </tr>
11021          <tr class="entries_header">
11022            <th class="th_details" colspan="5">Details</th>
11023          </tr>
11024          <tr class="entry_cont">
11025            <td class="entry_details" colspan="5">
11026              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11027to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11028upright.<wbr/></p>
11029<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11030rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11031the thumbnail data will also be rotated.<wbr/></p>
11032<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11033by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11034<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
11035sample code may be used:</p>
11036<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11037    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11038    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11039
11040    //<wbr/> Round device orientation to a multiple of 90
11041    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11042
11043    //<wbr/> Reverse device orientation for front-facing cameras
11044    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11045    if (facingFront) deviceOrientation = -deviceOrientation;
11046
11047    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11048    //<wbr/> the image upright relative to the device orientation
11049    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11050
11051    return jpegOrientation;
11052}
11053</code></pre>
11054            </td>
11055          </tr>
11056
11057
11058          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11059           <!-- end of entry -->
11060
11061
11062          <tr class="entry" id="dynamic_android.jpeg.quality">
11063            <td class="entry_name
11064             " rowspan="3">
11065              android.<wbr/>jpeg.<wbr/>quality
11066            </td>
11067            <td class="entry_type">
11068                <span class="entry_type_name">byte</span>
11069
11070              <span class="entry_type_visibility"> [public]</span>
11071
11072
11073              <span class="entry_type_hwlevel">[legacy] </span>
11074
11075
11076
11077
11078            </td> <!-- entry_type -->
11079
11080            <td class="entry_description">
11081              <p>Compression quality of the final JPEG
11082image.<wbr/></p>
11083            </td>
11084
11085            <td class="entry_units">
11086            </td>
11087
11088            <td class="entry_range">
11089              <p>1-100; larger is higher quality</p>
11090            </td>
11091
11092            <td class="entry_tags">
11093              <ul class="entry_tags">
11094                  <li><a href="#tag_BC">BC</a></li>
11095              </ul>
11096            </td>
11097
11098          </tr>
11099          <tr class="entries_header">
11100            <th class="th_details" colspan="5">Details</th>
11101          </tr>
11102          <tr class="entry_cont">
11103            <td class="entry_details" colspan="5">
11104              <p>85-95 is typical usage range.<wbr/></p>
11105            </td>
11106          </tr>
11107
11108
11109          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11110           <!-- end of entry -->
11111
11112
11113          <tr class="entry" id="dynamic_android.jpeg.size">
11114            <td class="entry_name
11115             " rowspan="3">
11116              android.<wbr/>jpeg.<wbr/>size
11117            </td>
11118            <td class="entry_type">
11119                <span class="entry_type_name">int32</span>
11120
11121              <span class="entry_type_visibility"> [system]</span>
11122
11123
11124
11125
11126
11127
11128            </td> <!-- entry_type -->
11129
11130            <td class="entry_description">
11131              <p>The size of the compressed JPEG image,<wbr/> in
11132bytes</p>
11133            </td>
11134
11135            <td class="entry_units">
11136            </td>
11137
11138            <td class="entry_range">
11139              <p>&gt;= 0</p>
11140            </td>
11141
11142            <td class="entry_tags">
11143              <ul class="entry_tags">
11144                  <li><a href="#tag_FUTURE">FUTURE</a></li>
11145              </ul>
11146            </td>
11147
11148          </tr>
11149          <tr class="entries_header">
11150            <th class="th_details" colspan="5">Details</th>
11151          </tr>
11152          <tr class="entry_cont">
11153            <td class="entry_details" colspan="5">
11154              <p>If no JPEG output is produced for the request,<wbr/>
11155this must be 0.<wbr/></p>
11156<p>Otherwise,<wbr/> this describes the real size of the compressed
11157JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
11158if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
11159has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
11160the JPEG stream will be 1000000 bytes,<wbr/> of which the first
11161500000 make up the real data.<wbr/></p>
11162            </td>
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.thumbnailQuality">
11171            <td class="entry_name
11172             " rowspan="1">
11173              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11174            </td>
11175            <td class="entry_type">
11176                <span class="entry_type_name">byte</span>
11177
11178              <span class="entry_type_visibility"> [public]</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>Compression quality of JPEG
11190thumbnail.<wbr/></p>
11191            </td>
11192
11193            <td class="entry_units">
11194            </td>
11195
11196            <td class="entry_range">
11197              <p>1-100; larger is higher quality</p>
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.thumbnailSize">
11214            <td class="entry_name
11215             " rowspan="5">
11216              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11217            </td>
11218            <td class="entry_type">
11219                <span class="entry_type_name">int32</span>
11220                <span class="entry_type_container">x</span>
11221
11222                <span class="entry_type_array">
11223                  2
11224                </span>
11225              <span class="entry_type_visibility"> [public as size]</span>
11226
11227
11228              <span class="entry_type_hwlevel">[legacy] </span>
11229
11230
11231
11232
11233            </td> <!-- entry_type -->
11234
11235            <td class="entry_description">
11236              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11237            </td>
11238
11239            <td class="entry_units">
11240            </td>
11241
11242            <td class="entry_range">
11243              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11244            </td>
11245
11246            <td class="entry_tags">
11247              <ul class="entry_tags">
11248                  <li><a href="#tag_BC">BC</a></li>
11249              </ul>
11250            </td>
11251
11252          </tr>
11253          <tr class="entries_header">
11254            <th class="th_details" colspan="5">Details</th>
11255          </tr>
11256          <tr class="entry_cont">
11257            <td class="entry_details" colspan="5">
11258              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11259but the captured JPEG will still be a valid image.<wbr/></p>
11260<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11261should have the same aspect ratio as the main JPEG output.<wbr/></p>
11262<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11263ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11264For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1126516:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11266generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11267Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11268<p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11269the camera device will handle thumbnail rotation in one of the following ways:</p>
11270<ul>
11271<li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11272  and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11273<li>Rotate the jpeg and thumbnail image data and not set
11274  <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11275  case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11276  capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11277  orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11278  size.<wbr/></li>
11279</ul>
11280            </td>
11281          </tr>
11282
11283          <tr class="entries_header">
11284            <th class="th_details" colspan="5">HAL Implementation Details</th>
11285          </tr>
11286          <tr class="entry_cont">
11287            <td class="entry_details" colspan="5">
11288              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11289The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11290The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11291thumbnail image cropping.<wbr/></p>
11292            </td>
11293          </tr>
11294
11295          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11296           <!-- end of entry -->
11297
11298
11299
11300      <!-- end of kind -->
11301      </tbody>
11302
11303  <!-- end of section -->
11304  <tr><td colspan="6" id="section_lens" class="section">lens</td></tr>
11305
11306
11307      <tr><td colspan="6" class="kind">controls</td></tr>
11308
11309      <thead class="entries_header">
11310        <tr>
11311          <th class="th_name">Property Name</th>
11312          <th class="th_type">Type</th>
11313          <th class="th_description">Description</th>
11314          <th class="th_units">Units</th>
11315          <th class="th_range">Range</th>
11316          <th class="th_tags">Tags</th>
11317        </tr>
11318      </thead>
11319
11320      <tbody>
11321
11322
11323
11324
11325
11326
11327
11328
11329
11330
11331          <tr class="entry" id="controls_android.lens.aperture">
11332            <td class="entry_name
11333             " rowspan="3">
11334              android.<wbr/>lens.<wbr/>aperture
11335            </td>
11336            <td class="entry_type">
11337                <span class="entry_type_name">float</span>
11338
11339              <span class="entry_type_visibility"> [public]</span>
11340
11341
11342              <span class="entry_type_hwlevel">[full] </span>
11343
11344
11345
11346
11347            </td> <!-- entry_type -->
11348
11349            <td class="entry_description">
11350              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
11351effective aperture diameter.<wbr/></p>
11352            </td>
11353
11354            <td class="entry_units">
11355              The f-number (f/<wbr/>N)
11356            </td>
11357
11358            <td class="entry_range">
11359              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
11360            </td>
11361
11362            <td class="entry_tags">
11363              <ul class="entry_tags">
11364                  <li><a href="#tag_V1">V1</a></li>
11365              </ul>
11366            </td>
11367
11368          </tr>
11369          <tr class="entries_header">
11370            <th class="th_details" colspan="5">Details</th>
11371          </tr>
11372          <tr class="entry_cont">
11373            <td class="entry_details" colspan="5">
11374              <p>Setting this value is only supported on the camera devices that have a variable
11375aperture lens.<wbr/></p>
11376<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
11377this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
11378<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>
11379to achieve manual exposure control.<wbr/></p>
11380<p>The requested aperture value may take several frames to reach the
11381requested value; the camera device will report the current (intermediate)
11382aperture size in capture result metadata while the aperture is changing.<wbr/>
11383While 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>
11384<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
11385the ON modes,<wbr/> this will be overridden by the camera device
11386auto-exposure algorithm,<wbr/> the overridden values are then provided
11387back to the user in the corresponding result.<wbr/></p>
11388            </td>
11389          </tr>
11390
11391
11392          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11393           <!-- end of entry -->
11394
11395
11396          <tr class="entry" id="controls_android.lens.filterDensity">
11397            <td class="entry_name
11398             " rowspan="3">
11399              android.<wbr/>lens.<wbr/>filter<wbr/>Density
11400            </td>
11401            <td class="entry_type">
11402                <span class="entry_type_name">float</span>
11403
11404              <span class="entry_type_visibility"> [public]</span>
11405
11406
11407              <span class="entry_type_hwlevel">[full] </span>
11408
11409
11410
11411
11412            </td> <!-- entry_type -->
11413
11414            <td class="entry_description">
11415              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
11416            </td>
11417
11418            <td class="entry_units">
11419              Exposure Value (EV)
11420            </td>
11421
11422            <td class="entry_range">
11423              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
11424            </td>
11425
11426            <td class="entry_tags">
11427              <ul class="entry_tags">
11428                  <li><a href="#tag_V1">V1</a></li>
11429              </ul>
11430            </td>
11431
11432          </tr>
11433          <tr class="entries_header">
11434            <th class="th_details" colspan="5">Details</th>
11435          </tr>
11436          <tr class="entry_cont">
11437            <td class="entry_details" colspan="5">
11438              <p>This control will not be supported on most camera devices.<wbr/></p>
11439<p>Lens filters are typically used to lower the amount of light the
11440sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
11441step is the standard logarithmic representation,<wbr/> which are
11442non-negative,<wbr/> and inversely proportional to the amount of light
11443hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
11444in no reduction of the incoming light,<wbr/> and setting this to 2 would
11445mean that the filter is set to reduce incoming light by two stops
11446(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
11447<p>It may take several frames before the lens filter density changes
11448to the requested value.<wbr/> While the filter density is still changing,<wbr/>
11449<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11450            </td>
11451          </tr>
11452
11453
11454          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11455           <!-- end of entry -->
11456
11457
11458          <tr class="entry" id="controls_android.lens.focalLength">
11459            <td class="entry_name
11460             " rowspan="3">
11461              android.<wbr/>lens.<wbr/>focal<wbr/>Length
11462            </td>
11463            <td class="entry_type">
11464                <span class="entry_type_name">float</span>
11465
11466              <span class="entry_type_visibility"> [public]</span>
11467
11468
11469              <span class="entry_type_hwlevel">[legacy] </span>
11470
11471
11472
11473
11474            </td> <!-- entry_type -->
11475
11476            <td class="entry_description">
11477              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
11478            </td>
11479
11480            <td class="entry_units">
11481              Millimeters
11482            </td>
11483
11484            <td class="entry_range">
11485              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
11486            </td>
11487
11488            <td class="entry_tags">
11489              <ul class="entry_tags">
11490                  <li><a href="#tag_V1">V1</a></li>
11491              </ul>
11492            </td>
11493
11494          </tr>
11495          <tr class="entries_header">
11496            <th class="th_details" colspan="5">Details</th>
11497          </tr>
11498          <tr class="entry_cont">
11499            <td class="entry_details" colspan="5">
11500              <p>This setting controls the physical focal length of the camera
11501device's lens.<wbr/> Changing the focal length changes the field of
11502view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
11503<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
11504setting won't be applied instantaneously,<wbr/> and it may take several
11505frames before the lens can change to the requested focal length.<wbr/>
11506While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
11507be set to MOVING.<wbr/></p>
11508<p>Optical zoom will not be supported on most devices.<wbr/></p>
11509            </td>
11510          </tr>
11511
11512
11513          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11514           <!-- end of entry -->
11515
11516
11517          <tr class="entry" id="controls_android.lens.focusDistance">
11518            <td class="entry_name
11519             " rowspan="3">
11520              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
11521            </td>
11522            <td class="entry_type">
11523                <span class="entry_type_name">float</span>
11524
11525              <span class="entry_type_visibility"> [public]</span>
11526
11527
11528              <span class="entry_type_hwlevel">[full] </span>
11529
11530
11531
11532
11533            </td> <!-- entry_type -->
11534
11535            <td class="entry_description">
11536              <p>Desired distance to plane of sharpest focus,<wbr/>
11537measured from frontmost surface of the lens.<wbr/></p>
11538            </td>
11539
11540            <td class="entry_units">
11541              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11542            </td>
11543
11544            <td class="entry_range">
11545              <p>&gt;= 0</p>
11546            </td>
11547
11548            <td class="entry_tags">
11549              <ul class="entry_tags">
11550                  <li><a href="#tag_BC">BC</a></li>
11551                  <li><a href="#tag_V1">V1</a></li>
11552              </ul>
11553            </td>
11554
11555          </tr>
11556          <tr class="entries_header">
11557            <th class="th_details" colspan="5">Details</th>
11558          </tr>
11559          <tr class="entry_cont">
11560            <td class="entry_details" colspan="5">
11561              <p>This control can be used for setting manual focus,<wbr/> on devices that support
11562the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
11563<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
11564<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
11565<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>
11566<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
11567instantaneously,<wbr/> and it may take several frames before the lens
11568can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
11569<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11570<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
11571for infinity focus.<wbr/></p>
11572            </td>
11573          </tr>
11574
11575
11576          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11577           <!-- end of entry -->
11578
11579
11580          <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
11581            <td class="entry_name
11582             " rowspan="3">
11583              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
11584            </td>
11585            <td class="entry_type">
11586                <span class="entry_type_name entry_type_name_enum">byte</span>
11587
11588              <span class="entry_type_visibility"> [public]</span>
11589
11590
11591              <span class="entry_type_hwlevel">[limited] </span>
11592
11593
11594
11595                <ul class="entry_type_enum">
11596                  <li>
11597                    <span class="entry_type_enum_name">OFF</span>
11598                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
11599                  </li>
11600                  <li>
11601                    <span class="entry_type_enum_name">ON</span>
11602                    <span class="entry_type_enum_optional">[optional]</span>
11603                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
11604                  </li>
11605                </ul>
11606
11607            </td> <!-- entry_type -->
11608
11609            <td class="entry_description">
11610              <p>Sets whether the camera device uses optical image stabilization (OIS)
11611when capturing images.<wbr/></p>
11612            </td>
11613
11614            <td class="entry_units">
11615            </td>
11616
11617            <td class="entry_range">
11618              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
11619            </td>
11620
11621            <td class="entry_tags">
11622              <ul class="entry_tags">
11623                  <li><a href="#tag_V1">V1</a></li>
11624              </ul>
11625            </td>
11626
11627          </tr>
11628          <tr class="entries_header">
11629            <th class="th_details" colspan="5">Details</th>
11630          </tr>
11631          <tr class="entry_cont">
11632            <td class="entry_details" colspan="5">
11633              <p>OIS is used to compensate for motion blur due to small
11634movements of the camera during capture.<wbr/> Unlike digital image
11635stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
11636makes use of mechanical elements to stabilize the camera
11637sensor,<wbr/> and thus allows for longer exposure times before
11638camera shake becomes apparent.<wbr/></p>
11639<p>Switching between different optical stabilization modes may take several
11640frames to initialize,<wbr/> the camera device will report the current mode in
11641capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
11642optical stabilization modes in the first several capture results may still
11643be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
11644<p>If a camera device supports both OIS and digital image stabilization
11645(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
11646interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
11647<p>Not all devices will support OIS; see
11648<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
11649available controls.<wbr/></p>
11650            </td>
11651          </tr>
11652
11653
11654          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11655           <!-- end of entry -->
11656
11657
11658
11659      <!-- end of kind -->
11660      </tbody>
11661      <tr><td colspan="6" class="kind">static</td></tr>
11662
11663      <thead class="entries_header">
11664        <tr>
11665          <th class="th_name">Property Name</th>
11666          <th class="th_type">Type</th>
11667          <th class="th_description">Description</th>
11668          <th class="th_units">Units</th>
11669          <th class="th_range">Range</th>
11670          <th class="th_tags">Tags</th>
11671        </tr>
11672      </thead>
11673
11674      <tbody>
11675
11676
11677
11678
11679
11680
11681
11682
11683
11684
11685
11686
11687          <tr class="entry" id="static_android.lens.info.availableApertures">
11688            <td class="entry_name
11689             " rowspan="3">
11690              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
11691            </td>
11692            <td class="entry_type">
11693                <span class="entry_type_name">float</span>
11694                <span class="entry_type_container">x</span>
11695
11696                <span class="entry_type_array">
11697                  n
11698                </span>
11699              <span class="entry_type_visibility"> [public]</span>
11700
11701
11702              <span class="entry_type_hwlevel">[full] </span>
11703
11704
11705
11706
11707            </td> <!-- entry_type -->
11708
11709            <td class="entry_description">
11710              <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
11711supported by this camera device.<wbr/></p>
11712            </td>
11713
11714            <td class="entry_units">
11715              The aperture f-number
11716            </td>
11717
11718            <td class="entry_range">
11719            </td>
11720
11721            <td class="entry_tags">
11722              <ul class="entry_tags">
11723                  <li><a href="#tag_V1">V1</a></li>
11724              </ul>
11725            </td>
11726
11727          </tr>
11728          <tr class="entries_header">
11729            <th class="th_details" colspan="5">Details</th>
11730          </tr>
11731          <tr class="entry_cont">
11732            <td class="entry_details" colspan="5">
11733              <p>If the camera device doesn't support a variable lens aperture,<wbr/>
11734this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
11735<p>If the camera device supports a variable aperture,<wbr/> the aperture values
11736in this list will be sorted in ascending order.<wbr/></p>
11737            </td>
11738          </tr>
11739
11740
11741          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11742           <!-- end of entry -->
11743
11744
11745          <tr class="entry" id="static_android.lens.info.availableFilterDensities">
11746            <td class="entry_name
11747             " rowspan="3">
11748              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
11749            </td>
11750            <td class="entry_type">
11751                <span class="entry_type_name">float</span>
11752                <span class="entry_type_container">x</span>
11753
11754                <span class="entry_type_array">
11755                  n
11756                </span>
11757              <span class="entry_type_visibility"> [public]</span>
11758
11759
11760              <span class="entry_type_hwlevel">[full] </span>
11761
11762
11763
11764
11765            </td> <!-- entry_type -->
11766
11767            <td class="entry_description">
11768              <p>List of neutral density filter values for
11769<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
11770            </td>
11771
11772            <td class="entry_units">
11773              Exposure value (EV)
11774            </td>
11775
11776            <td class="entry_range">
11777              <p>Values are &gt;= 0</p>
11778            </td>
11779
11780            <td class="entry_tags">
11781              <ul class="entry_tags">
11782                  <li><a href="#tag_V1">V1</a></li>
11783              </ul>
11784            </td>
11785
11786          </tr>
11787          <tr class="entries_header">
11788            <th class="th_details" colspan="5">Details</th>
11789          </tr>
11790          <tr class="entry_cont">
11791            <td class="entry_details" colspan="5">
11792              <p>If a neutral density filter is not supported by this camera device,<wbr/>
11793this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
11794filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
11795            </td>
11796          </tr>
11797
11798
11799          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11800           <!-- end of entry -->
11801
11802
11803          <tr class="entry" id="static_android.lens.info.availableFocalLengths">
11804            <td class="entry_name
11805             " rowspan="3">
11806              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
11807            </td>
11808            <td class="entry_type">
11809                <span class="entry_type_name">float</span>
11810                <span class="entry_type_container">x</span>
11811
11812                <span class="entry_type_array">
11813                  n
11814                </span>
11815              <span class="entry_type_visibility"> [public]</span>
11816
11817
11818              <span class="entry_type_hwlevel">[legacy] </span>
11819
11820
11821                <div class="entry_type_notes">The list of available focal lengths</div>
11822
11823
11824            </td> <!-- entry_type -->
11825
11826            <td class="entry_description">
11827              <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
11828device.<wbr/></p>
11829            </td>
11830
11831            <td class="entry_units">
11832              Millimeters
11833            </td>
11834
11835            <td class="entry_range">
11836              <p>Values are &gt; 0</p>
11837            </td>
11838
11839            <td class="entry_tags">
11840              <ul class="entry_tags">
11841                  <li><a href="#tag_BC">BC</a></li>
11842                  <li><a href="#tag_V1">V1</a></li>
11843              </ul>
11844            </td>
11845
11846          </tr>
11847          <tr class="entries_header">
11848            <th class="th_details" colspan="5">Details</th>
11849          </tr>
11850          <tr class="entry_cont">
11851            <td class="entry_details" colspan="5">
11852              <p>If optical zoom is not supported,<wbr/> this list will only contain
11853a single value corresponding to the fixed focal length of the
11854device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
11855by the camera device,<wbr/> in ascending order.<wbr/></p>
11856            </td>
11857          </tr>
11858
11859
11860          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11861           <!-- end of entry -->
11862
11863
11864          <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
11865            <td class="entry_name
11866             " rowspan="3">
11867              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
11868            </td>
11869            <td class="entry_type">
11870                <span class="entry_type_name">byte</span>
11871                <span class="entry_type_container">x</span>
11872
11873                <span class="entry_type_array">
11874                  n
11875                </span>
11876              <span class="entry_type_visibility"> [public as enumList]</span>
11877
11878
11879              <span class="entry_type_hwlevel">[limited] </span>
11880
11881
11882                <div class="entry_type_notes">list of enums</div>
11883
11884
11885            </td> <!-- entry_type -->
11886
11887            <td class="entry_description">
11888              <p>List of optical image stabilization (OIS) modes for
11889<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>
11890            </td>
11891
11892            <td class="entry_units">
11893            </td>
11894
11895            <td class="entry_range">
11896              <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
11897            </td>
11898
11899            <td class="entry_tags">
11900              <ul class="entry_tags">
11901                  <li><a href="#tag_V1">V1</a></li>
11902              </ul>
11903            </td>
11904
11905          </tr>
11906          <tr class="entries_header">
11907            <th class="th_details" colspan="5">Details</th>
11908          </tr>
11909          <tr class="entry_cont">
11910            <td class="entry_details" colspan="5">
11911              <p>If OIS is not supported by a given camera device,<wbr/> this list will
11912contain only OFF.<wbr/></p>
11913            </td>
11914          </tr>
11915
11916
11917          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11918           <!-- end of entry -->
11919
11920
11921          <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
11922            <td class="entry_name
11923             " rowspan="3">
11924              android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
11925            </td>
11926            <td class="entry_type">
11927                <span class="entry_type_name">float</span>
11928
11929              <span class="entry_type_visibility"> [public]</span>
11930
11931
11932              <span class="entry_type_hwlevel">[limited] </span>
11933
11934
11935
11936
11937            </td> <!-- entry_type -->
11938
11939            <td class="entry_description">
11940              <p>Hyperfocal distance for this lens.<wbr/></p>
11941            </td>
11942
11943            <td class="entry_units">
11944              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11945            </td>
11946
11947            <td class="entry_range">
11948              <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
11949within <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>
11950            </td>
11951
11952            <td class="entry_tags">
11953            </td>
11954
11955          </tr>
11956          <tr class="entries_header">
11957            <th class="th_details" colspan="5">Details</th>
11958          </tr>
11959          <tr class="entry_cont">
11960            <td class="entry_details" colspan="5">
11961              <p>If the lens is not fixed focus,<wbr/> the camera device will report this
11962field 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>
11963            </td>
11964          </tr>
11965
11966
11967          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11968           <!-- end of entry -->
11969
11970
11971          <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
11972            <td class="entry_name
11973             " rowspan="5">
11974              android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
11975            </td>
11976            <td class="entry_type">
11977                <span class="entry_type_name">float</span>
11978
11979              <span class="entry_type_visibility"> [public]</span>
11980
11981
11982              <span class="entry_type_hwlevel">[limited] </span>
11983
11984
11985
11986
11987            </td> <!-- entry_type -->
11988
11989            <td class="entry_description">
11990              <p>Shortest distance from frontmost surface
11991of the lens that can be brought into sharp focus.<wbr/></p>
11992            </td>
11993
11994            <td class="entry_units">
11995              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11996            </td>
11997
11998            <td class="entry_range">
11999              <p>&gt;= 0</p>
12000            </td>
12001
12002            <td class="entry_tags">
12003              <ul class="entry_tags">
12004                  <li><a href="#tag_V1">V1</a></li>
12005              </ul>
12006            </td>
12007
12008          </tr>
12009          <tr class="entries_header">
12010            <th class="th_details" colspan="5">Details</th>
12011          </tr>
12012          <tr class="entry_cont">
12013            <td class="entry_details" colspan="5">
12014              <p>If the lens is fixed-focus,<wbr/> this will be
120150.<wbr/></p>
12016            </td>
12017          </tr>
12018
12019          <tr class="entries_header">
12020            <th class="th_details" colspan="5">HAL Implementation Details</th>
12021          </tr>
12022          <tr class="entry_cont">
12023            <td class="entry_details" colspan="5">
12024              <p>Mandatory for FULL devices; LIMITED devices
12025must always set this value to 0 for fixed-focus; and may omit
12026the minimum focus distance otherwise.<wbr/></p>
12027<p>This field is also mandatory for all devices advertising
12028the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
12029            </td>
12030          </tr>
12031
12032          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12033           <!-- end of entry -->
12034
12035
12036          <tr class="entry" id="static_android.lens.info.shadingMapSize">
12037            <td class="entry_name
12038             " rowspan="3">
12039              android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
12040            </td>
12041            <td class="entry_type">
12042                <span class="entry_type_name">int32</span>
12043                <span class="entry_type_container">x</span>
12044
12045                <span class="entry_type_array">
12046                  2
12047                </span>
12048              <span class="entry_type_visibility"> [hidden as size]</span>
12049
12050
12051              <span class="entry_type_hwlevel">[full] </span>
12052
12053
12054                <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
12055
12056
12057            </td> <!-- entry_type -->
12058
12059            <td class="entry_description">
12060              <p>Dimensions of lens shading map.<wbr/></p>
12061            </td>
12062
12063            <td class="entry_units">
12064            </td>
12065
12066            <td class="entry_range">
12067              <p>Both values &gt;= 1</p>
12068            </td>
12069
12070            <td class="entry_tags">
12071              <ul class="entry_tags">
12072                  <li><a href="#tag_V1">V1</a></li>
12073              </ul>
12074            </td>
12075
12076          </tr>
12077          <tr class="entries_header">
12078            <th class="th_details" colspan="5">Details</th>
12079          </tr>
12080          <tr class="entry_cont">
12081            <td class="entry_details" colspan="5">
12082              <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
12083must be smaller than 64x64.<wbr/></p>
12084            </td>
12085          </tr>
12086
12087
12088          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12089           <!-- end of entry -->
12090
12091
12092          <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
12093            <td class="entry_name
12094             " rowspan="5">
12095              android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
12096            </td>
12097            <td class="entry_type">
12098                <span class="entry_type_name entry_type_name_enum">byte</span>
12099
12100              <span class="entry_type_visibility"> [public]</span>
12101
12102
12103              <span class="entry_type_hwlevel">[limited] </span>
12104
12105
12106
12107                <ul class="entry_type_enum">
12108                  <li>
12109                    <span class="entry_type_enum_name">UNCALIBRATED</span>
12110                    <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
12111<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
12112<p>Setting the lens to the same focus distance on separate occasions may
12113result in a different real focus distance,<wbr/> depending on factors such
12114as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
12115and the device temperature.<wbr/> The focus distance value will still be
12116in 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
12117represents the farthest focus.<wbr/></p></span>
12118                  </li>
12119                  <li>
12120                    <span class="entry_type_enum_name">APPROXIMATE</span>
12121                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
12122<p>However,<wbr/> setting the lens to the same focus distance
12123on separate occasions may result in a different real
12124focus distance,<wbr/> depending on factors such as the
12125orientation of the device,<wbr/> the age of the focusing
12126mechanism,<wbr/> and the device temperature.<wbr/></p></span>
12127                  </li>
12128                  <li>
12129                    <span class="entry_type_enum_name">CALIBRATED</span>
12130                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
12131is calibrated.<wbr/></p>
12132<p>The lens mechanism is calibrated so that setting the
12133same focus distance is repeatable on multiple
12134occasions with good accuracy,<wbr/> and the focus distance
12135corresponds to the real physical distance to the plane
12136of best focus.<wbr/></p></span>
12137                  </li>
12138                </ul>
12139
12140            </td> <!-- entry_type -->
12141
12142            <td class="entry_description">
12143              <p>The lens focus distance calibration quality.<wbr/></p>
12144            </td>
12145
12146            <td class="entry_units">
12147            </td>
12148
12149            <td class="entry_range">
12150            </td>
12151
12152            <td class="entry_tags">
12153              <ul class="entry_tags">
12154                  <li><a href="#tag_V1">V1</a></li>
12155              </ul>
12156            </td>
12157
12158          </tr>
12159          <tr class="entries_header">
12160            <th class="th_details" colspan="5">Details</th>
12161          </tr>
12162          <tr class="entry_cont">
12163            <td class="entry_details" colspan="5">
12164              <p>The lens focus distance calibration quality determines the reliability of
12165focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
12166<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
12167<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
12168<p>APPROXIMATE and CALIBRATED devices report the focus metadata in
12169units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
12170and increasing positive numbers represent focusing closer and closer
12171to the camera device.<wbr/> The focus distance control also uses diopters
12172on these devices.<wbr/></p>
12173<p>UNCALIBRATED devices do not use units that are directly comparable
12174to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
12175focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
12176nearest focus the device can achieve.<wbr/></p>
12177            </td>
12178          </tr>
12179
12180          <tr class="entries_header">
12181            <th class="th_details" colspan="5">HAL Implementation Details</th>
12182          </tr>
12183          <tr class="entry_cont">
12184            <td class="entry_details" colspan="5">
12185              <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
12186focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
12187and the lens focus distance is set to 0 diopters
12188(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
12189and is stably focused at infinity even if the device tilts.<wbr/> It may take the
12190lens some time to move; during the move the lens state should be MOVING and
12191the output diopter value should be changing toward 0.<wbr/></p>
12192            </td>
12193          </tr>
12194
12195          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12196           <!-- end of entry -->
12197
12198
12199
12200
12201
12202          <tr class="entry" id="static_android.lens.facing">
12203            <td class="entry_name
12204             " rowspan="1">
12205              android.<wbr/>lens.<wbr/>facing
12206            </td>
12207            <td class="entry_type">
12208                <span class="entry_type_name entry_type_name_enum">byte</span>
12209
12210              <span class="entry_type_visibility"> [public]</span>
12211
12212
12213              <span class="entry_type_hwlevel">[legacy] </span>
12214
12215
12216
12217                <ul class="entry_type_enum">
12218                  <li>
12219                    <span class="entry_type_enum_name">FRONT</span>
12220                    <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
12221                  </li>
12222                  <li>
12223                    <span class="entry_type_enum_name">BACK</span>
12224                    <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
12225                  </li>
12226                  <li>
12227                    <span class="entry_type_enum_name">EXTERNAL</span>
12228                    <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
12229device's screen.<wbr/></p></span>
12230                  </li>
12231                </ul>
12232
12233            </td> <!-- entry_type -->
12234
12235            <td class="entry_description">
12236              <p>Direction the camera faces relative to
12237device screen.<wbr/></p>
12238            </td>
12239
12240            <td class="entry_units">
12241            </td>
12242
12243            <td class="entry_range">
12244            </td>
12245
12246            <td class="entry_tags">
12247            </td>
12248
12249          </tr>
12250
12251
12252          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12253           <!-- end of entry -->
12254
12255
12256          <tr class="entry" id="static_android.lens.poseRotation">
12257            <td class="entry_name
12258             " rowspan="3">
12259              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
12260            </td>
12261            <td class="entry_type">
12262                <span class="entry_type_name">float</span>
12263                <span class="entry_type_container">x</span>
12264
12265                <span class="entry_type_array">
12266                  4
12267                </span>
12268              <span class="entry_type_visibility"> [public]</span>
12269
12270
12271
12272
12273
12274
12275            </td> <!-- entry_type -->
12276
12277            <td class="entry_description">
12278              <p>The orientation of the camera relative to the sensor
12279coordinate system.<wbr/></p>
12280            </td>
12281
12282            <td class="entry_units">
12283
12284            Quaternion coefficients
12285
12286            </td>
12287
12288            <td class="entry_range">
12289            </td>
12290
12291            <td class="entry_tags">
12292              <ul class="entry_tags">
12293                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12294              </ul>
12295            </td>
12296
12297          </tr>
12298          <tr class="entries_header">
12299            <th class="th_details" colspan="5">Details</th>
12300          </tr>
12301          <tr class="entry_cont">
12302            <td class="entry_details" colspan="5">
12303              <p>The four coefficients that describe the quaternion
12304rotation from the Android sensor coordinate system to a
12305camera-aligned coordinate system where the X-axis is
12306aligned with the long side of the image sensor,<wbr/> the Y-axis
12307is aligned with the short side of the image sensor,<wbr/> and
12308the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
12309<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
12310to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
12311amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
12312<pre><code> theta = 2 * acos(w)
12313a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
12314a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
12315a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
12316</code></pre>
12317<p>To create a 3x3 rotation matrix that applies the rotation
12318defined by this quaternion,<wbr/> the following matrix can be
12319used:</p>
12320<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
12321           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
12322           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
12323</code></pre>
12324<p>This matrix can then be used to apply the rotation to a
12325 column vector point with</p>
12326<p><code>p' = Rp</code></p>
12327<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
12328 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
12329            </td>
12330          </tr>
12331
12332
12333          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12334           <!-- end of entry -->
12335
12336
12337          <tr class="entry" id="static_android.lens.poseTranslation">
12338            <td class="entry_name
12339             " rowspan="3">
12340              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
12341            </td>
12342            <td class="entry_type">
12343                <span class="entry_type_name">float</span>
12344                <span class="entry_type_container">x</span>
12345
12346                <span class="entry_type_array">
12347                  3
12348                </span>
12349              <span class="entry_type_visibility"> [public]</span>
12350
12351
12352
12353
12354
12355
12356            </td> <!-- entry_type -->
12357
12358            <td class="entry_description">
12359              <p>Position of the camera optical center.<wbr/></p>
12360            </td>
12361
12362            <td class="entry_units">
12363              Meters
12364            </td>
12365
12366            <td class="entry_range">
12367            </td>
12368
12369            <td class="entry_tags">
12370              <ul class="entry_tags">
12371                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12372              </ul>
12373            </td>
12374
12375          </tr>
12376          <tr class="entries_header">
12377            <th class="th_details" colspan="5">Details</th>
12378          </tr>
12379          <tr class="entry_cont">
12380            <td class="entry_details" colspan="5">
12381              <p>The position of the camera device's lens optical center,<wbr/>
12382as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
12383optical center of the largest camera device facing in the
12384same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
12385axes</a>.<wbr/> Note that only the axis definitions are shared with
12386the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
12387<p>If this device is the largest or only camera device with a
12388given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
12389camera device with a lens optical center located 3 cm from
12390the main sensor along the +X axis (to the right from the
12391user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
12392<p>To transform a pixel coordinates between two cameras
12393facing the same direction,<wbr/> first the source camera
12394<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
12395the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
12396to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
12397of the source camera,<wbr/> the translation of the source camera
12398relative to the destination camera,<wbr/> the
12399<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
12400finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
12401of the destination camera.<wbr/> This obtains a
12402radial-distortion-free coordinate in the destination
12403camera pixel coordinates.<wbr/></p>
12404<p>To compare this against a real image from the destination
12405camera,<wbr/> the destination camera image then needs to be
12406corrected for radial distortion before comparison or
12407sampling.<wbr/></p>
12408            </td>
12409          </tr>
12410
12411
12412          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12413           <!-- end of entry -->
12414
12415
12416          <tr class="entry" id="static_android.lens.intrinsicCalibration">
12417            <td class="entry_name
12418             " rowspan="3">
12419              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
12420            </td>
12421            <td class="entry_type">
12422                <span class="entry_type_name">float</span>
12423                <span class="entry_type_container">x</span>
12424
12425                <span class="entry_type_array">
12426                  5
12427                </span>
12428              <span class="entry_type_visibility"> [public]</span>
12429
12430
12431
12432
12433
12434
12435            </td> <!-- entry_type -->
12436
12437            <td class="entry_description">
12438              <p>The parameters for this camera device's intrinsic
12439calibration.<wbr/></p>
12440            </td>
12441
12442            <td class="entry_units">
12443
12444            Pixels in the
12445            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
12446            coordinate system.<wbr/>
12447
12448            </td>
12449
12450            <td class="entry_range">
12451            </td>
12452
12453            <td class="entry_tags">
12454              <ul class="entry_tags">
12455                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12456              </ul>
12457            </td>
12458
12459          </tr>
12460          <tr class="entries_header">
12461            <th class="th_details" colspan="5">Details</th>
12462          </tr>
12463          <tr class="entry_cont">
12464            <td class="entry_details" colspan="5">
12465              <p>The five calibration parameters that describe the
12466transform from camera-centric 3D coordinates to sensor
12467pixel coordinates:</p>
12468<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
12469</code></pre>
12470<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
12471focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
12472axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
12473being aligned with the lens plane.<wbr/></p>
12474<p>These are typically used within a transformation matrix K:</p>
12475<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
12476       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
12477       0    0,<wbr/>   1 ]
12478</code></pre>
12479<p>which can then be combined with the camera pose rotation
12480<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
12481<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
12482complete transform from world coordinates to pixel
12483coordinates:</p>
12484<pre><code>P = [ K 0   * [ R t
12485     0 1 ]     0 1 ]
12486</code></pre>
12487<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
12488and <code>p_<wbr/>s</code> being a point in the camera active pixel array
12489coordinate system,<wbr/> and with the mapping including the
12490homogeneous division by z:</p>
12491<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
12492p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
12493</code></pre>
12494<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
12495point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
12496(depth) in pixel coordinates.<wbr/></p>
12497<p>Note that the coordinate system for this transform is the
12498<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/>
12499where <code>(0,<wbr/>0)</code> is the top-left of the
12500preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
12501intrinsic calibration transforms have been applied to a
12502world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
12503transform needs to be applied,<wbr/> and the result adjusted to
12504be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
12505system (where <code>(0,<wbr/> 0)</code> is the top-left of the
12506activeArraySize rectangle),<wbr/> to determine the final pixel
12507coordinate of the world point for processed (non-RAW)
12508output buffers.<wbr/></p>
12509            </td>
12510          </tr>
12511
12512
12513          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12514           <!-- end of entry -->
12515
12516
12517          <tr class="entry" id="static_android.lens.radialDistortion">
12518            <td class="entry_name
12519             " rowspan="3">
12520              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
12521            </td>
12522            <td class="entry_type">
12523                <span class="entry_type_name">float</span>
12524                <span class="entry_type_container">x</span>
12525
12526                <span class="entry_type_array">
12527                  6
12528                </span>
12529              <span class="entry_type_visibility"> [public]</span>
12530
12531
12532
12533
12534
12535
12536            </td> <!-- entry_type -->
12537
12538            <td class="entry_description">
12539              <p>The correction coefficients to correct for this camera device's
12540radial and tangential lens distortion.<wbr/></p>
12541            </td>
12542
12543            <td class="entry_units">
12544
12545            Unitless coefficients.<wbr/>
12546
12547            </td>
12548
12549            <td class="entry_range">
12550            </td>
12551
12552            <td class="entry_tags">
12553              <ul class="entry_tags">
12554                  <li><a href="#tag_DEPTH">DEPTH</a></li>
12555              </ul>
12556            </td>
12557
12558          </tr>
12559          <tr class="entries_header">
12560            <th class="th_details" colspan="5">Details</th>
12561          </tr>
12562          <tr class="entry_cont">
12563            <td class="entry_details" colspan="5">
12564              <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
12565kappa_<wbr/>3]</code> and two tangential distortion coefficients
12566<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
12567lens's geometric distortion with the mapping equations:</p>
12568<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 ) +
12569       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
12570 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
12571       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
12572</code></pre>
12573<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
12574input image that correspond to the pixel values in the
12575corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
12576<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
12577</code></pre>
12578<p>The pixel coordinates are defined in a normalized
12579coordinate system related to the
12580<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
12581Both <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
12582lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
12583of both x and y coordinates are normalized to be 1 at the
12584edge further from the optical center,<wbr/> so the range
12585for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
12586<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
12587optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
12588is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
12589<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
12590            </td>
12591          </tr>
12592
12593
12594          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12595           <!-- end of entry -->
12596
12597
12598
12599      <!-- end of kind -->
12600      </tbody>
12601      <tr><td colspan="6" class="kind">dynamic</td></tr>
12602
12603      <thead class="entries_header">
12604        <tr>
12605          <th class="th_name">Property Name</th>
12606          <th class="th_type">Type</th>
12607          <th class="th_description">Description</th>
12608          <th class="th_units">Units</th>
12609          <th class="th_range">Range</th>
12610          <th class="th_tags">Tags</th>
12611        </tr>
12612      </thead>
12613
12614      <tbody>
12615
12616
12617
12618
12619
12620
12621
12622
12623
12624
12625          <tr class="entry" id="dynamic_android.lens.aperture">
12626            <td class="entry_name
12627             " rowspan="3">
12628              android.<wbr/>lens.<wbr/>aperture
12629            </td>
12630            <td class="entry_type">
12631                <span class="entry_type_name">float</span>
12632
12633              <span class="entry_type_visibility"> [public]</span>
12634
12635
12636              <span class="entry_type_hwlevel">[full] </span>
12637
12638
12639
12640
12641            </td> <!-- entry_type -->
12642
12643            <td class="entry_description">
12644              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12645effective aperture diameter.<wbr/></p>
12646            </td>
12647
12648            <td class="entry_units">
12649              The f-number (f/<wbr/>N)
12650            </td>
12651
12652            <td class="entry_range">
12653              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12654            </td>
12655
12656            <td class="entry_tags">
12657              <ul class="entry_tags">
12658                  <li><a href="#tag_V1">V1</a></li>
12659              </ul>
12660            </td>
12661
12662          </tr>
12663          <tr class="entries_header">
12664            <th class="th_details" colspan="5">Details</th>
12665          </tr>
12666          <tr class="entry_cont">
12667            <td class="entry_details" colspan="5">
12668              <p>Setting this value is only supported on the camera devices that have a variable
12669aperture lens.<wbr/></p>
12670<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12671this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12672<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>
12673to achieve manual exposure control.<wbr/></p>
12674<p>The requested aperture value may take several frames to reach the
12675requested value; the camera device will report the current (intermediate)
12676aperture size in capture result metadata while the aperture is changing.<wbr/>
12677While 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>
12678<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12679the ON modes,<wbr/> this will be overridden by the camera device
12680auto-exposure algorithm,<wbr/> the overridden values are then provided
12681back to the user in the corresponding result.<wbr/></p>
12682            </td>
12683          </tr>
12684
12685
12686          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12687           <!-- end of entry -->
12688
12689
12690          <tr class="entry" id="dynamic_android.lens.filterDensity">
12691            <td class="entry_name
12692             " rowspan="3">
12693              android.<wbr/>lens.<wbr/>filter<wbr/>Density
12694            </td>
12695            <td class="entry_type">
12696                <span class="entry_type_name">float</span>
12697
12698              <span class="entry_type_visibility"> [public]</span>
12699
12700
12701              <span class="entry_type_hwlevel">[full] </span>
12702
12703
12704
12705
12706            </td> <!-- entry_type -->
12707
12708            <td class="entry_description">
12709              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12710            </td>
12711
12712            <td class="entry_units">
12713              Exposure Value (EV)
12714            </td>
12715
12716            <td class="entry_range">
12717              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12718            </td>
12719
12720            <td class="entry_tags">
12721              <ul class="entry_tags">
12722                  <li><a href="#tag_V1">V1</a></li>
12723              </ul>
12724            </td>
12725
12726          </tr>
12727          <tr class="entries_header">
12728            <th class="th_details" colspan="5">Details</th>
12729          </tr>
12730          <tr class="entry_cont">
12731            <td class="entry_details" colspan="5">
12732              <p>This control will not be supported on most camera devices.<wbr/></p>
12733<p>Lens filters are typically used to lower the amount of light the
12734sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12735step is the standard logarithmic representation,<wbr/> which are
12736non-negative,<wbr/> and inversely proportional to the amount of light
12737hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
12738in no reduction of the incoming light,<wbr/> and setting this to 2 would
12739mean that the filter is set to reduce incoming light by two stops
12740(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12741<p>It may take several frames before the lens filter density changes
12742to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12743<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12744            </td>
12745          </tr>
12746
12747
12748          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12749           <!-- end of entry -->
12750
12751
12752          <tr class="entry" id="dynamic_android.lens.focalLength">
12753            <td class="entry_name
12754             " rowspan="3">
12755              android.<wbr/>lens.<wbr/>focal<wbr/>Length
12756            </td>
12757            <td class="entry_type">
12758                <span class="entry_type_name">float</span>
12759
12760              <span class="entry_type_visibility"> [public]</span>
12761
12762
12763              <span class="entry_type_hwlevel">[legacy] </span>
12764
12765
12766
12767
12768            </td> <!-- entry_type -->
12769
12770            <td class="entry_description">
12771              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12772            </td>
12773
12774            <td class="entry_units">
12775              Millimeters
12776            </td>
12777
12778            <td class="entry_range">
12779              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12780            </td>
12781
12782            <td class="entry_tags">
12783              <ul class="entry_tags">
12784                  <li><a href="#tag_BC">BC</a></li>
12785              </ul>
12786            </td>
12787
12788          </tr>
12789          <tr class="entries_header">
12790            <th class="th_details" colspan="5">Details</th>
12791          </tr>
12792          <tr class="entry_cont">
12793            <td class="entry_details" colspan="5">
12794              <p>This setting controls the physical focal length of the camera
12795device's lens.<wbr/> Changing the focal length changes the field of
12796view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12797<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
12798setting won't be applied instantaneously,<wbr/> and it may take several
12799frames before the lens can change to the requested focal length.<wbr/>
12800While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12801be set to MOVING.<wbr/></p>
12802<p>Optical zoom will not be supported on most devices.<wbr/></p>
12803            </td>
12804          </tr>
12805
12806
12807          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12808           <!-- end of entry -->
12809
12810
12811          <tr class="entry" id="dynamic_android.lens.focusDistance">
12812            <td class="entry_name
12813             " rowspan="3">
12814              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
12815            </td>
12816            <td class="entry_type">
12817                <span class="entry_type_name">float</span>
12818
12819              <span class="entry_type_visibility"> [public]</span>
12820
12821
12822              <span class="entry_type_hwlevel">[full] </span>
12823
12824
12825
12826
12827            </td> <!-- entry_type -->
12828
12829            <td class="entry_description">
12830              <p>Desired distance to plane of sharpest focus,<wbr/>
12831measured from frontmost surface of the lens.<wbr/></p>
12832            </td>
12833
12834            <td class="entry_units">
12835              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12836            </td>
12837
12838            <td class="entry_range">
12839              <p>&gt;= 0</p>
12840            </td>
12841
12842            <td class="entry_tags">
12843              <ul class="entry_tags">
12844                  <li><a href="#tag_BC">BC</a></li>
12845              </ul>
12846            </td>
12847
12848          </tr>
12849          <tr class="entries_header">
12850            <th class="th_details" colspan="5">Details</th>
12851          </tr>
12852          <tr class="entry_cont">
12853            <td class="entry_details" colspan="5">
12854              <p>Should be zero for fixed-focus cameras</p>
12855            </td>
12856          </tr>
12857
12858
12859          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12860           <!-- end of entry -->
12861
12862
12863          <tr class="entry" id="dynamic_android.lens.focusRange">
12864            <td class="entry_name
12865             " rowspan="3">
12866              android.<wbr/>lens.<wbr/>focus<wbr/>Range
12867            </td>
12868            <td class="entry_type">
12869                <span class="entry_type_name">float</span>
12870                <span class="entry_type_container">x</span>
12871
12872                <span class="entry_type_array">
12873                  2
12874                </span>
12875              <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
12876
12877
12878              <span class="entry_type_hwlevel">[limited] </span>
12879
12880
12881                <div class="entry_type_notes">Range of scene distances that are in focus</div>
12882
12883
12884            </td> <!-- entry_type -->
12885
12886            <td class="entry_description">
12887              <p>The range of scene distances that are in
12888sharp focus (depth of field).<wbr/></p>
12889            </td>
12890
12891            <td class="entry_units">
12892              A pair of focus distances in diopters: (near,<wbr/>
12893          far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
12894            </td>
12895
12896            <td class="entry_range">
12897              <p>&gt;=0</p>
12898            </td>
12899
12900            <td class="entry_tags">
12901              <ul class="entry_tags">
12902                  <li><a href="#tag_BC">BC</a></li>
12903              </ul>
12904            </td>
12905
12906          </tr>
12907          <tr class="entries_header">
12908            <th class="th_details" colspan="5">Details</th>
12909          </tr>
12910          <tr class="entry_cont">
12911            <td class="entry_details" colspan="5">
12912              <p>If variable focus not supported,<wbr/> can still report
12913fixed depth of field range</p>
12914            </td>
12915          </tr>
12916
12917
12918          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12919           <!-- end of entry -->
12920
12921
12922          <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
12923            <td class="entry_name
12924             " rowspan="3">
12925              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12926            </td>
12927            <td class="entry_type">
12928                <span class="entry_type_name entry_type_name_enum">byte</span>
12929
12930              <span class="entry_type_visibility"> [public]</span>
12931
12932
12933              <span class="entry_type_hwlevel">[limited] </span>
12934
12935
12936
12937                <ul class="entry_type_enum">
12938                  <li>
12939                    <span class="entry_type_enum_name">OFF</span>
12940                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12941                  </li>
12942                  <li>
12943                    <span class="entry_type_enum_name">ON</span>
12944                    <span class="entry_type_enum_optional">[optional]</span>
12945                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12946                  </li>
12947                </ul>
12948
12949            </td> <!-- entry_type -->
12950
12951            <td class="entry_description">
12952              <p>Sets whether the camera device uses optical image stabilization (OIS)
12953when capturing images.<wbr/></p>
12954            </td>
12955
12956            <td class="entry_units">
12957            </td>
12958
12959            <td class="entry_range">
12960              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12961            </td>
12962
12963            <td class="entry_tags">
12964              <ul class="entry_tags">
12965                  <li><a href="#tag_V1">V1</a></li>
12966              </ul>
12967            </td>
12968
12969          </tr>
12970          <tr class="entries_header">
12971            <th class="th_details" colspan="5">Details</th>
12972          </tr>
12973          <tr class="entry_cont">
12974            <td class="entry_details" colspan="5">
12975              <p>OIS is used to compensate for motion blur due to small
12976movements of the camera during capture.<wbr/> Unlike digital image
12977stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12978makes use of mechanical elements to stabilize the camera
12979sensor,<wbr/> and thus allows for longer exposure times before
12980camera shake becomes apparent.<wbr/></p>
12981<p>Switching between different optical stabilization modes may take several
12982frames to initialize,<wbr/> the camera device will report the current mode in
12983capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12984optical stabilization modes in the first several capture results may still
12985be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12986<p>If a camera device supports both OIS and digital image stabilization
12987(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12988interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12989<p>Not all devices will support OIS; see
12990<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12991available controls.<wbr/></p>
12992            </td>
12993          </tr>
12994
12995
12996          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12997           <!-- end of entry -->
12998
12999
13000          <tr class="entry" id="dynamic_android.lens.state">
13001            <td class="entry_name
13002             " rowspan="3">
13003              android.<wbr/>lens.<wbr/>state
13004            </td>
13005            <td class="entry_type">
13006                <span class="entry_type_name entry_type_name_enum">byte</span>
13007
13008              <span class="entry_type_visibility"> [public]</span>
13009
13010
13011              <span class="entry_type_hwlevel">[limited] </span>
13012
13013
13014
13015                <ul class="entry_type_enum">
13016                  <li>
13017                    <span class="entry_type_enum_name">STATIONARY</span>
13018                    <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/>
13019<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>
13020                  </li>
13021                  <li>
13022                    <span class="entry_type_enum_name">MOVING</span>
13023                    <span class="entry_type_enum_notes"><p>One or several of the lens parameters
13024(<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/>
13025<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
13026currently changing.<wbr/></p></span>
13027                  </li>
13028                </ul>
13029
13030            </td> <!-- entry_type -->
13031
13032            <td class="entry_description">
13033              <p>Current lens status.<wbr/></p>
13034            </td>
13035
13036            <td class="entry_units">
13037            </td>
13038
13039            <td class="entry_range">
13040            </td>
13041
13042            <td class="entry_tags">
13043              <ul class="entry_tags">
13044                  <li><a href="#tag_V1">V1</a></li>
13045              </ul>
13046            </td>
13047
13048          </tr>
13049          <tr class="entries_header">
13050            <th class="th_details" colspan="5">Details</th>
13051          </tr>
13052          <tr class="entry_cont">
13053            <td class="entry_details" colspan="5">
13054              <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/>
13055<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/>
13056they may take several frames to reach the requested values.<wbr/> This state indicates
13057the current status of the lens parameters.<wbr/></p>
13058<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
13059either because the parameters are all fixed,<wbr/> or because the lens has had enough
13060time to reach the most recently-requested values.<wbr/>
13061If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
13062<ul>
13063<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
13064<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
13065<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/>
13066which means the optical zoom is not supported.<wbr/></li>
13067<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>
13068<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>
13069</ul>
13070<p>Then this state will always be STATIONARY.<wbr/></p>
13071<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
13072is changing.<wbr/></p>
13073            </td>
13074          </tr>
13075
13076
13077          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13078           <!-- end of entry -->
13079
13080
13081          <tr class="entry" id="dynamic_android.lens.poseRotation">
13082            <td class="entry_name
13083             " rowspan="3">
13084              android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13085            </td>
13086            <td class="entry_type">
13087                <span class="entry_type_name">float</span>
13088                <span class="entry_type_container">x</span>
13089
13090                <span class="entry_type_array">
13091                  4
13092                </span>
13093              <span class="entry_type_visibility"> [public]</span>
13094
13095
13096
13097
13098
13099
13100            </td> <!-- entry_type -->
13101
13102            <td class="entry_description">
13103              <p>The orientation of the camera relative to the sensor
13104coordinate system.<wbr/></p>
13105            </td>
13106
13107            <td class="entry_units">
13108
13109            Quaternion coefficients
13110
13111            </td>
13112
13113            <td class="entry_range">
13114            </td>
13115
13116            <td class="entry_tags">
13117              <ul class="entry_tags">
13118                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13119              </ul>
13120            </td>
13121
13122          </tr>
13123          <tr class="entries_header">
13124            <th class="th_details" colspan="5">Details</th>
13125          </tr>
13126          <tr class="entry_cont">
13127            <td class="entry_details" colspan="5">
13128              <p>The four coefficients that describe the quaternion
13129rotation from the Android sensor coordinate system to a
13130camera-aligned coordinate system where the X-axis is
13131aligned with the long side of the image sensor,<wbr/> the Y-axis
13132is aligned with the short side of the image sensor,<wbr/> and
13133the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13134<p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13135to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13136amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13137<pre><code> theta = 2 * acos(w)
13138a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13139a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13140a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13141</code></pre>
13142<p>To create a 3x3 rotation matrix that applies the rotation
13143defined by this quaternion,<wbr/> the following matrix can be
13144used:</p>
13145<pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
13146           2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
13147           2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13148</code></pre>
13149<p>This matrix can then be used to apply the rotation to a
13150 column vector point with</p>
13151<p><code>p' = Rp</code></p>
13152<p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13153 <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13154            </td>
13155          </tr>
13156
13157
13158          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13159           <!-- end of entry -->
13160
13161
13162          <tr class="entry" id="dynamic_android.lens.poseTranslation">
13163            <td class="entry_name
13164             " rowspan="3">
13165              android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13166            </td>
13167            <td class="entry_type">
13168                <span class="entry_type_name">float</span>
13169                <span class="entry_type_container">x</span>
13170
13171                <span class="entry_type_array">
13172                  3
13173                </span>
13174              <span class="entry_type_visibility"> [public]</span>
13175
13176
13177
13178
13179
13180
13181            </td> <!-- entry_type -->
13182
13183            <td class="entry_description">
13184              <p>Position of the camera optical center.<wbr/></p>
13185            </td>
13186
13187            <td class="entry_units">
13188              Meters
13189            </td>
13190
13191            <td class="entry_range">
13192            </td>
13193
13194            <td class="entry_tags">
13195              <ul class="entry_tags">
13196                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13197              </ul>
13198            </td>
13199
13200          </tr>
13201          <tr class="entries_header">
13202            <th class="th_details" colspan="5">Details</th>
13203          </tr>
13204          <tr class="entry_cont">
13205            <td class="entry_details" colspan="5">
13206              <p>The position of the camera device's lens optical center,<wbr/>
13207as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
13208optical center of the largest camera device facing in the
13209same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
13210axes</a>.<wbr/> Note that only the axis definitions are shared with
13211the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
13212<p>If this device is the largest or only camera device with a
13213given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
13214camera device with a lens optical center located 3 cm from
13215the main sensor along the +X axis (to the right from the
13216user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13217<p>To transform a pixel coordinates between two cameras
13218facing the same direction,<wbr/> first the source camera
13219<a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
13220the source camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
13221to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
13222of the source camera,<wbr/> the translation of the source camera
13223relative to the destination camera,<wbr/> the
13224<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
13225finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
13226of the destination camera.<wbr/> This obtains a
13227radial-distortion-free coordinate in the destination
13228camera pixel coordinates.<wbr/></p>
13229<p>To compare this against a real image from the destination
13230camera,<wbr/> the destination camera image then needs to be
13231corrected for radial distortion before comparison or
13232sampling.<wbr/></p>
13233            </td>
13234          </tr>
13235
13236
13237          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13238           <!-- end of entry -->
13239
13240
13241          <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
13242            <td class="entry_name
13243             " rowspan="3">
13244              android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13245            </td>
13246            <td class="entry_type">
13247                <span class="entry_type_name">float</span>
13248                <span class="entry_type_container">x</span>
13249
13250                <span class="entry_type_array">
13251                  5
13252                </span>
13253              <span class="entry_type_visibility"> [public]</span>
13254
13255
13256
13257
13258
13259
13260            </td> <!-- entry_type -->
13261
13262            <td class="entry_description">
13263              <p>The parameters for this camera device's intrinsic
13264calibration.<wbr/></p>
13265            </td>
13266
13267            <td class="entry_units">
13268
13269            Pixels in the
13270            android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13271            coordinate system.<wbr/>
13272
13273            </td>
13274
13275            <td class="entry_range">
13276            </td>
13277
13278            <td class="entry_tags">
13279              <ul class="entry_tags">
13280                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13281              </ul>
13282            </td>
13283
13284          </tr>
13285          <tr class="entries_header">
13286            <th class="th_details" colspan="5">Details</th>
13287          </tr>
13288          <tr class="entry_cont">
13289            <td class="entry_details" colspan="5">
13290              <p>The five calibration parameters that describe the
13291transform from camera-centric 3D coordinates to sensor
13292pixel coordinates:</p>
13293<pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13294</code></pre>
13295<p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13296focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13297axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13298being aligned with the lens plane.<wbr/></p>
13299<p>These are typically used within a transformation matrix K:</p>
13300<pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
13301       0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13302       0    0,<wbr/>   1 ]
13303</code></pre>
13304<p>which can then be combined with the camera pose rotation
13305<code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13306<a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13307complete transform from world coordinates to pixel
13308coordinates:</p>
13309<pre><code>P = [ K 0   * [ R t
13310     0 1 ]     0 1 ]
13311</code></pre>
13312<p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13313and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13314coordinate system,<wbr/> and with the mapping including the
13315homogeneous division by z:</p>
13316<pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13317p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13318</code></pre>
13319<p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13320point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13321(depth) in pixel coordinates.<wbr/></p>
13322<p>Note that the coordinate system for this transform is the
13323<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/>
13324where <code>(0,<wbr/>0)</code> is the top-left of the
13325preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13326intrinsic calibration transforms have been applied to a
13327world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
13328transform needs to be applied,<wbr/> and the result adjusted to
13329be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13330system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13331activeArraySize rectangle),<wbr/> to determine the final pixel
13332coordinate of the world point for processed (non-RAW)
13333output buffers.<wbr/></p>
13334            </td>
13335          </tr>
13336
13337
13338          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13339           <!-- end of entry -->
13340
13341
13342          <tr class="entry" id="dynamic_android.lens.radialDistortion">
13343            <td class="entry_name
13344             " rowspan="3">
13345              android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13346            </td>
13347            <td class="entry_type">
13348                <span class="entry_type_name">float</span>
13349                <span class="entry_type_container">x</span>
13350
13351                <span class="entry_type_array">
13352                  6
13353                </span>
13354              <span class="entry_type_visibility"> [public]</span>
13355
13356
13357
13358
13359
13360
13361            </td> <!-- entry_type -->
13362
13363            <td class="entry_description">
13364              <p>The correction coefficients to correct for this camera device's
13365radial and tangential lens distortion.<wbr/></p>
13366            </td>
13367
13368            <td class="entry_units">
13369
13370            Unitless coefficients.<wbr/>
13371
13372            </td>
13373
13374            <td class="entry_range">
13375            </td>
13376
13377            <td class="entry_tags">
13378              <ul class="entry_tags">
13379                  <li><a href="#tag_DEPTH">DEPTH</a></li>
13380              </ul>
13381            </td>
13382
13383          </tr>
13384          <tr class="entries_header">
13385            <th class="th_details" colspan="5">Details</th>
13386          </tr>
13387          <tr class="entry_cont">
13388            <td class="entry_details" colspan="5">
13389              <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13390kappa_<wbr/>3]</code> and two tangential distortion coefficients
13391<code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13392lens's geometric distortion with the mapping equations:</p>
13393<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 ) +
13394       kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13395 y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13396       kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13397</code></pre>
13398<p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13399input image that correspond to the pixel values in the
13400corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13401<pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13402</code></pre>
13403<p>The pixel coordinates are defined in a normalized
13404coordinate system related to the
13405<a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13406Both <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
13407lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13408of both x and y coordinates are normalized to be 1 at the
13409edge further from the optical center,<wbr/> so the range
13410for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
13411<p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13412optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13413is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
13414<p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13415            </td>
13416          </tr>
13417
13418
13419          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13420           <!-- end of entry -->
13421
13422
13423
13424      <!-- end of kind -->
13425      </tbody>
13426
13427  <!-- end of section -->
13428  <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr>
13429
13430
13431      <tr><td colspan="6" class="kind">controls</td></tr>
13432
13433      <thead class="entries_header">
13434        <tr>
13435          <th class="th_name">Property Name</th>
13436          <th class="th_type">Type</th>
13437          <th class="th_description">Description</th>
13438          <th class="th_units">Units</th>
13439          <th class="th_range">Range</th>
13440          <th class="th_tags">Tags</th>
13441        </tr>
13442      </thead>
13443
13444      <tbody>
13445
13446
13447
13448
13449
13450
13451
13452
13453
13454
13455          <tr class="entry" id="controls_android.noiseReduction.mode">
13456            <td class="entry_name
13457             " rowspan="5">
13458              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
13459            </td>
13460            <td class="entry_type">
13461                <span class="entry_type_name entry_type_name_enum">byte</span>
13462
13463              <span class="entry_type_visibility"> [public]</span>
13464
13465
13466              <span class="entry_type_hwlevel">[full] </span>
13467
13468
13469
13470                <ul class="entry_type_enum">
13471                  <li>
13472                    <span class="entry_type_enum_name">OFF</span>
13473                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
13474                  </li>
13475                  <li>
13476                    <span class="entry_type_enum_name">FAST</span>
13477                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
13478output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
13479relative to sensor.<wbr/></p></span>
13480                  </li>
13481                  <li>
13482                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
13483                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
13484rate relative to sensor output.<wbr/></p></span>
13485                  </li>
13486                  <li>
13487                    <span class="entry_type_enum_name">MINIMAL</span>
13488                    <span class="entry_type_enum_optional">[optional]</span>
13489                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
13490sensor output.<wbr/> </p></span>
13491                  </li>
13492                  <li>
13493                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
13494                    <span class="entry_type_enum_optional">[optional]</span>
13495                    <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
13496based 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
13497reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
13498noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
13499for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
13500is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
13501quality may improve from FAST).<wbr/></p>
13502<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
13503with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
13504high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
13505produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
13506high-resolution buffers must not have noise reduction applied to maximize efficiency of
13507preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
13508low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
13509applied for reasonable preview quality.<wbr/></p>
13510<p>This mode is guaranteed to be supported by devices that support either the
13511YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
13512(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
13513be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
13514                  </li>
13515                </ul>
13516
13517            </td> <!-- entry_type -->
13518
13519            <td class="entry_description">
13520              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
13521            </td>
13522
13523            <td class="entry_units">
13524            </td>
13525
13526            <td class="entry_range">
13527              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
13528            </td>
13529
13530            <td class="entry_tags">
13531              <ul class="entry_tags">
13532                  <li><a href="#tag_V1">V1</a></li>
13533                  <li><a href="#tag_REPROC">REPROC</a></li>
13534              </ul>
13535            </td>
13536
13537          </tr>
13538          <tr class="entries_header">
13539            <th class="th_details" colspan="5">Details</th>
13540          </tr>
13541          <tr class="entry_cont">
13542            <td class="entry_details" colspan="5">
13543              <p>The noise reduction algorithm attempts to improve image quality by removing
13544excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
13545<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
13546YUV domain.<wbr/></p>
13547<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
13548demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
13549This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
13550<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>
13551<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
13552will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
13553will use the highest-quality noise filtering algorithms,<wbr/>
13554even if it slows down capture rate.<wbr/> FAST means the camera device will not
13555slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
13556MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
13557Every output stream will have a similar amount of enhancement applied.<wbr/></p>
13558<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
13559buffer of high-resolution images during preview and reprocess image(s) from that buffer
13560into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
13561noise reduction to low-resolution streams (below maximum recording resolution) to maximize
13562preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
13563those will be reprocessed later if necessary.<wbr/></p>
13564<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
13565will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
13566may adjust the noise reduction parameters for best image quality based on the
13567<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
13568            </td>
13569          </tr>
13570
13571          <tr class="entries_header">
13572            <th class="th_details" colspan="5">HAL Implementation Details</th>
13573          </tr>
13574          <tr class="entry_cont">
13575            <td class="entry_details" colspan="5">
13576              <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
13577adjust the internal noise reduction parameters appropriately to get the best quality
13578images.<wbr/></p>
13579            </td>
13580          </tr>
13581
13582          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13583           <!-- end of entry -->
13584
13585
13586          <tr class="entry" id="controls_android.noiseReduction.strength">
13587            <td class="entry_name
13588             " rowspan="1">
13589              android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
13590            </td>
13591            <td class="entry_type">
13592                <span class="entry_type_name">byte</span>
13593
13594              <span class="entry_type_visibility"> [system]</span>
13595
13596
13597
13598
13599
13600
13601            </td> <!-- entry_type -->
13602
13603            <td class="entry_description">
13604              <p>Control the amount of noise reduction
13605applied to the images</p>
13606            </td>
13607
13608            <td class="entry_units">
13609              1-10; 10 is max noise reduction
13610            </td>
13611
13612            <td class="entry_range">
13613              <p>1 - 10</p>
13614            </td>
13615
13616            <td class="entry_tags">
13617              <ul class="entry_tags">
13618                  <li><a href="#tag_FUTURE">FUTURE</a></li>
13619              </ul>
13620            </td>
13621
13622          </tr>
13623
13624
13625          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13626           <!-- end of entry -->
13627
13628
13629
13630      <!-- end of kind -->
13631      </tbody>
13632      <tr><td colspan="6" class="kind">static</td></tr>
13633
13634      <thead class="entries_header">
13635        <tr>
13636          <th class="th_name">Property Name</th>
13637          <th class="th_type">Type</th>
13638          <th class="th_description">Description</th>
13639          <th class="th_units">Units</th>
13640          <th class="th_range">Range</th>
13641          <th class="th_tags">Tags</th>
13642        </tr>
13643      </thead>
13644
13645      <tbody>
13646
13647
13648
13649
13650
13651
13652
13653
13654
13655
13656          <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
13657            <td class="entry_name
13658             " rowspan="5">
13659              android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
13660            </td>
13661            <td class="entry_type">
13662                <span class="entry_type_name">byte</span>
13663                <span class="entry_type_container">x</span>
13664
13665                <span class="entry_type_array">
13666                  n
13667                </span>
13668              <span class="entry_type_visibility"> [public as enumList]</span>
13669
13670
13671              <span class="entry_type_hwlevel">[limited] </span>
13672
13673
13674                <div class="entry_type_notes">list of enums</div>
13675
13676
13677            </td> <!-- entry_type -->
13678
13679            <td class="entry_description">
13680              <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
13681by this camera device.<wbr/></p>
13682            </td>
13683
13684            <td class="entry_units">
13685            </td>
13686
13687            <td class="entry_range">
13688              <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
13689            </td>
13690
13691            <td class="entry_tags">
13692              <ul class="entry_tags">
13693                  <li><a href="#tag_V1">V1</a></li>
13694                  <li><a href="#tag_REPROC">REPROC</a></li>
13695              </ul>
13696            </td>
13697
13698          </tr>
13699          <tr class="entries_header">
13700            <th class="th_details" colspan="5">Details</th>
13701          </tr>
13702          <tr class="entry_cont">
13703            <td class="entry_details" colspan="5">
13704              <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
13705<p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
13706ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
13707<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
13708            </td>
13709          </tr>
13710
13711          <tr class="entries_header">
13712            <th class="th_details" colspan="5">HAL Implementation Details</th>
13713          </tr>
13714          <tr class="entry_cont">
13715            <td class="entry_details" colspan="5">
13716              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
13717on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
13718That is,<wbr/> if the highest quality implementation on the camera device does not slow down
13719capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
13720            </td>
13721          </tr>
13722
13723          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13724           <!-- end of entry -->
13725
13726
13727
13728      <!-- end of kind -->
13729      </tbody>
13730      <tr><td colspan="6" class="kind">dynamic</td></tr>
13731
13732      <thead class="entries_header">
13733        <tr>
13734          <th class="th_name">Property Name</th>
13735          <th class="th_type">Type</th>
13736          <th class="th_description">Description</th>
13737          <th class="th_units">Units</th>
13738          <th class="th_range">Range</th>
13739          <th class="th_tags">Tags</th>
13740        </tr>
13741      </thead>
13742
13743      <tbody>
13744
13745
13746
13747
13748
13749
13750
13751
13752
13753
13754          <tr class="entry" id="dynamic_android.noiseReduction.mode">
13755            <td class="entry_name
13756             " rowspan="5">
13757              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
13758            </td>
13759            <td class="entry_type">
13760                <span class="entry_type_name entry_type_name_enum">byte</span>
13761
13762              <span class="entry_type_visibility"> [public]</span>
13763
13764
13765              <span class="entry_type_hwlevel">[full] </span>
13766
13767
13768
13769                <ul class="entry_type_enum">
13770                  <li>
13771                    <span class="entry_type_enum_name">OFF</span>
13772                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
13773                  </li>
13774                  <li>
13775                    <span class="entry_type_enum_name">FAST</span>
13776                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
13777output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
13778relative to sensor.<wbr/></p></span>
13779                  </li>
13780                  <li>
13781                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
13782                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
13783rate relative to sensor output.<wbr/></p></span>
13784                  </li>
13785                  <li>
13786                    <span class="entry_type_enum_name">MINIMAL</span>
13787                    <span class="entry_type_enum_optional">[optional]</span>
13788                    <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
13789sensor output.<wbr/> </p></span>
13790                  </li>
13791                  <li>
13792                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
13793                    <span class="entry_type_enum_optional">[optional]</span>
13794                    <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
13795based 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
13796reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
13797noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
13798for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
13799is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
13800quality may improve from FAST).<wbr/></p>
13801<p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
13802with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
13803high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
13804produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
13805high-resolution buffers must not have noise reduction applied to maximize efficiency of
13806preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
13807low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
13808applied for reasonable preview quality.<wbr/></p>
13809<p>This mode is guaranteed to be supported by devices that support either the
13810YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
13811(<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
13812be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
13813                  </li>
13814                </ul>
13815
13816            </td> <!-- entry_type -->
13817
13818            <td class="entry_description">
13819              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
13820            </td>
13821
13822            <td class="entry_units">
13823            </td>
13824
13825            <td class="entry_range">
13826              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
13827            </td>
13828
13829            <td class="entry_tags">
13830              <ul class="entry_tags">
13831                  <li><a href="#tag_V1">V1</a></li>
13832                  <li><a href="#tag_REPROC">REPROC</a></li>
13833              </ul>
13834            </td>
13835
13836          </tr>
13837          <tr class="entries_header">
13838            <th class="th_details" colspan="5">Details</th>
13839          </tr>
13840          <tr class="entry_cont">
13841            <td class="entry_details" colspan="5">
13842              <p>The noise reduction algorithm attempts to improve image quality by removing
13843excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
13844<p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
13845YUV domain.<wbr/></p>
13846<p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
13847demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
13848This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
13849<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>
13850<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
13851will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
13852will use the highest-quality noise filtering algorithms,<wbr/>
13853even if it slows down capture rate.<wbr/> FAST means the camera device will not
13854slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
13855MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
13856Every output stream will have a similar amount of enhancement applied.<wbr/></p>
13857<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
13858buffer of high-resolution images during preview and reprocess image(s) from that buffer
13859into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
13860noise reduction to low-resolution streams (below maximum recording resolution) to maximize
13861preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
13862those will be reprocessed later if necessary.<wbr/></p>
13863<p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
13864will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
13865may adjust the noise reduction parameters for best image quality based on the
13866<a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
13867            </td>
13868          </tr>
13869
13870          <tr class="entries_header">
13871            <th class="th_details" colspan="5">HAL Implementation Details</th>
13872          </tr>
13873          <tr class="entry_cont">
13874            <td class="entry_details" colspan="5">
13875              <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
13876adjust the internal noise reduction parameters appropriately to get the best quality
13877images.<wbr/></p>
13878            </td>
13879          </tr>
13880
13881          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13882           <!-- end of entry -->
13883
13884
13885
13886      <!-- end of kind -->
13887      </tbody>
13888
13889  <!-- end of section -->
13890  <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr>
13891
13892
13893      <tr><td colspan="6" class="kind">static</td></tr>
13894
13895      <thead class="entries_header">
13896        <tr>
13897          <th class="th_name">Property Name</th>
13898          <th class="th_type">Type</th>
13899          <th class="th_description">Description</th>
13900          <th class="th_units">Units</th>
13901          <th class="th_range">Range</th>
13902          <th class="th_tags">Tags</th>
13903        </tr>
13904      </thead>
13905
13906      <tbody>
13907
13908
13909
13910
13911
13912
13913
13914
13915
13916
13917          <tr class="entry" id="static_android.quirks.meteringCropRegion">
13918            <td class="entry_name
13919                entry_name_deprecated
13920             " rowspan="3">
13921              android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
13922            </td>
13923            <td class="entry_type">
13924                <span class="entry_type_name">byte</span>
13925
13926              <span class="entry_type_visibility"> [system]</span>
13927
13928
13929
13930              <span class="entry_type_deprecated">[deprecated] </span>
13931
13932
13933
13934            </td> <!-- entry_type -->
13935
13936            <td class="entry_description">
13937              <p>If set to 1,<wbr/> the camera service does not
13938scale 'normalized' coordinates with respect to the crop
13939region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
13940and output (face rectangles).<wbr/></p>
13941            </td>
13942
13943            <td class="entry_units">
13944            </td>
13945
13946            <td class="entry_range">
13947              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13948            </td>
13949
13950            <td class="entry_tags">
13951            </td>
13952
13953          </tr>
13954          <tr class="entries_header">
13955            <th class="th_details" colspan="5">Details</th>
13956          </tr>
13957          <tr class="entry_cont">
13958            <td class="entry_details" colspan="5">
13959              <p>Normalized coordinates refer to those in the
13960(-1000,<wbr/>1000) range mentioned in the
13961android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
13962<p>HAL implementations should instead always use and emit
13963sensor array-relative coordinates for all region data.<wbr/> Does
13964not need to be listed in static metadata.<wbr/> Support will be
13965removed in future versions of camera service.<wbr/></p>
13966            </td>
13967          </tr>
13968
13969
13970          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13971           <!-- end of entry -->
13972
13973
13974          <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
13975            <td class="entry_name
13976                entry_name_deprecated
13977             " rowspan="3">
13978              android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
13979            </td>
13980            <td class="entry_type">
13981                <span class="entry_type_name">byte</span>
13982
13983              <span class="entry_type_visibility"> [system]</span>
13984
13985
13986
13987              <span class="entry_type_deprecated">[deprecated] </span>
13988
13989
13990
13991            </td> <!-- entry_type -->
13992
13993            <td class="entry_description">
13994              <p>If set to 1,<wbr/> then the camera service always
13995switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
13996trigger.<wbr/></p>
13997            </td>
13998
13999            <td class="entry_units">
14000            </td>
14001
14002            <td class="entry_range">
14003              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14004            </td>
14005
14006            <td class="entry_tags">
14007            </td>
14008
14009          </tr>
14010          <tr class="entries_header">
14011            <th class="th_details" colspan="5">Details</th>
14012          </tr>
14013          <tr class="entry_cont">
14014            <td class="entry_details" colspan="5">
14015              <p>HAL implementations should implement AF trigger
14016modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
14017CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
14018not need to be listed in static metadata.<wbr/> Support will be
14019removed in future versions of camera service</p>
14020            </td>
14021          </tr>
14022
14023
14024          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14025           <!-- end of entry -->
14026
14027
14028          <tr class="entry" id="static_android.quirks.useZslFormat">
14029            <td class="entry_name
14030                entry_name_deprecated
14031             " rowspan="3">
14032              android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
14033            </td>
14034            <td class="entry_type">
14035                <span class="entry_type_name">byte</span>
14036
14037              <span class="entry_type_visibility"> [system]</span>
14038
14039
14040
14041              <span class="entry_type_deprecated">[deprecated] </span>
14042
14043
14044
14045            </td> <!-- entry_type -->
14046
14047            <td class="entry_description">
14048              <p>If set to 1,<wbr/> the camera service uses
14049CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
14050HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
14051shutter lag stream</p>
14052            </td>
14053
14054            <td class="entry_units">
14055            </td>
14056
14057            <td class="entry_range">
14058              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14059            </td>
14060
14061            <td class="entry_tags">
14062            </td>
14063
14064          </tr>
14065          <tr class="entries_header">
14066            <th class="th_details" colspan="5">Details</th>
14067          </tr>
14068          <tr class="entry_cont">
14069            <td class="entry_details" colspan="5">
14070              <p>HAL implementations should use gralloc usage flags
14071to determine that a stream will be used for
14072zero-shutter-lag,<wbr/> instead of relying on an explicit
14073format setting.<wbr/> Does not need to be listed in static
14074metadata.<wbr/> Support will be removed in future versions of
14075camera service.<wbr/></p>
14076            </td>
14077          </tr>
14078
14079
14080          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14081           <!-- end of entry -->
14082
14083
14084          <tr class="entry" id="static_android.quirks.usePartialResult">
14085            <td class="entry_name
14086                entry_name_deprecated
14087             " rowspan="5">
14088              android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
14089            </td>
14090            <td class="entry_type">
14091                <span class="entry_type_name">byte</span>
14092
14093              <span class="entry_type_visibility"> [hidden]</span>
14094
14095
14096
14097              <span class="entry_type_deprecated">[deprecated] </span>
14098
14099
14100
14101            </td> <!-- entry_type -->
14102
14103            <td class="entry_description">
14104              <p>If set to 1,<wbr/> the HAL will always split result
14105metadata for a single capture into multiple buffers,<wbr/>
14106returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
14107            </td>
14108
14109            <td class="entry_units">
14110            </td>
14111
14112            <td class="entry_range">
14113              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14114            </td>
14115
14116            <td class="entry_tags">
14117            </td>
14118
14119          </tr>
14120          <tr class="entries_header">
14121            <th class="th_details" colspan="5">Details</th>
14122          </tr>
14123          <tr class="entry_cont">
14124            <td class="entry_details" colspan="5">
14125              <p>Does not need to be listed in static
14126metadata.<wbr/> Support for partial results will be reworked in
14127future versions of camera service.<wbr/> This quirk will stop
14128working at that point; DO NOT USE without careful
14129consideration of future support.<wbr/></p>
14130            </td>
14131          </tr>
14132
14133          <tr class="entries_header">
14134            <th class="th_details" colspan="5">HAL Implementation Details</th>
14135          </tr>
14136          <tr class="entry_cont">
14137            <td class="entry_details" colspan="5">
14138              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
14139for information on how to implement partial results.<wbr/></p>
14140            </td>
14141          </tr>
14142
14143          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14144           <!-- end of entry -->
14145
14146
14147
14148      <!-- end of kind -->
14149      </tbody>
14150      <tr><td colspan="6" class="kind">dynamic</td></tr>
14151
14152      <thead class="entries_header">
14153        <tr>
14154          <th class="th_name">Property Name</th>
14155          <th class="th_type">Type</th>
14156          <th class="th_description">Description</th>
14157          <th class="th_units">Units</th>
14158          <th class="th_range">Range</th>
14159          <th class="th_tags">Tags</th>
14160        </tr>
14161      </thead>
14162
14163      <tbody>
14164
14165
14166
14167
14168
14169
14170
14171
14172
14173
14174          <tr class="entry" id="dynamic_android.quirks.partialResult">
14175            <td class="entry_name
14176                entry_name_deprecated
14177             " rowspan="5">
14178              android.<wbr/>quirks.<wbr/>partial<wbr/>Result
14179            </td>
14180            <td class="entry_type">
14181                <span class="entry_type_name entry_type_name_enum">byte</span>
14182
14183              <span class="entry_type_visibility"> [hidden as boolean]</span>
14184
14185
14186
14187              <span class="entry_type_deprecated">[deprecated] </span>
14188
14189
14190                <ul class="entry_type_enum">
14191                  <li>
14192                    <span class="entry_type_enum_name">FINAL</span>
14193                    <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
14194for this capture.<wbr/></p></span>
14195                  </li>
14196                  <li>
14197                    <span class="entry_type_enum_name">PARTIAL</span>
14198                    <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
14199capture.<wbr/> More result buffers for this capture will be sent
14200by the camera device,<wbr/> the last of which will be marked
14201FINAL.<wbr/></p></span>
14202                  </li>
14203                </ul>
14204
14205            </td> <!-- entry_type -->
14206
14207            <td class="entry_description">
14208              <p>Whether a result given to the framework is the
14209final one for the capture,<wbr/> or only a partial that contains a
14210subset of the full set of dynamic metadata
14211values.<wbr/></p>
14212            </td>
14213
14214            <td class="entry_units">
14215            </td>
14216
14217            <td class="entry_range">
14218              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14219              <p>Optional.<wbr/> Default value is FINAL.<wbr/></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>The entries in the result metadata buffers for a
14232single capture may not overlap,<wbr/> except for this entry.<wbr/> The
14233FINAL buffers must retain FIFO ordering relative to the
14234requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
14235always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
14236before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
14237in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
14238capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
14239only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
14240            </td>
14241          </tr>
14242
14243          <tr class="entries_header">
14244            <th class="th_details" colspan="5">HAL Implementation Details</th>
14245          </tr>
14246          <tr class="entry_cont">
14247            <td class="entry_details" colspan="5">
14248              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
14249for information on how to implement partial results.<wbr/></p>
14250            </td>
14251          </tr>
14252
14253          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14254           <!-- end of entry -->
14255
14256
14257
14258      <!-- end of kind -->
14259      </tbody>
14260
14261  <!-- end of section -->
14262  <tr><td colspan="6" id="section_request" class="section">request</td></tr>
14263
14264
14265      <tr><td colspan="6" class="kind">controls</td></tr>
14266
14267      <thead class="entries_header">
14268        <tr>
14269          <th class="th_name">Property Name</th>
14270          <th class="th_type">Type</th>
14271          <th class="th_description">Description</th>
14272          <th class="th_units">Units</th>
14273          <th class="th_range">Range</th>
14274          <th class="th_tags">Tags</th>
14275        </tr>
14276      </thead>
14277
14278      <tbody>
14279
14280
14281
14282
14283
14284
14285
14286
14287
14288
14289          <tr class="entry" id="controls_android.request.frameCount">
14290            <td class="entry_name
14291                entry_name_deprecated
14292             " rowspan="1">
14293              android.<wbr/>request.<wbr/>frame<wbr/>Count
14294            </td>
14295            <td class="entry_type">
14296                <span class="entry_type_name">int32</span>
14297
14298              <span class="entry_type_visibility"> [system]</span>
14299
14300
14301
14302              <span class="entry_type_deprecated">[deprecated] </span>
14303
14304
14305
14306            </td> <!-- entry_type -->
14307
14308            <td class="entry_description">
14309              <p>A frame counter set by the framework.<wbr/> Must
14310be maintained unchanged in output frame.<wbr/> This value monotonically
14311increases with every new result (that is,<wbr/> each new result has a unique
14312frameCount value).<wbr/></p>
14313            </td>
14314
14315            <td class="entry_units">
14316              incrementing integer
14317            </td>
14318
14319            <td class="entry_range">
14320              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14321              <p>Any int.<wbr/></p>
14322            </td>
14323
14324            <td class="entry_tags">
14325            </td>
14326
14327          </tr>
14328
14329
14330          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14331           <!-- end of entry -->
14332
14333
14334          <tr class="entry" id="controls_android.request.id">
14335            <td class="entry_name
14336             " rowspan="1">
14337              android.<wbr/>request.<wbr/>id
14338            </td>
14339            <td class="entry_type">
14340                <span class="entry_type_name">int32</span>
14341
14342              <span class="entry_type_visibility"> [hidden]</span>
14343
14344
14345
14346
14347
14348
14349            </td> <!-- entry_type -->
14350
14351            <td class="entry_description">
14352              <p>An application-specified ID for the current
14353request.<wbr/> Must be maintained unchanged in output
14354frame</p>
14355            </td>
14356
14357            <td class="entry_units">
14358              arbitrary integer assigned by application
14359            </td>
14360
14361            <td class="entry_range">
14362              <p>Any int</p>
14363            </td>
14364
14365            <td class="entry_tags">
14366              <ul class="entry_tags">
14367                  <li><a href="#tag_V1">V1</a></li>
14368              </ul>
14369            </td>
14370
14371          </tr>
14372
14373
14374          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14375           <!-- end of entry -->
14376
14377
14378          <tr class="entry" id="controls_android.request.inputStreams">
14379            <td class="entry_name
14380                entry_name_deprecated
14381             " rowspan="3">
14382              android.<wbr/>request.<wbr/>input<wbr/>Streams
14383            </td>
14384            <td class="entry_type">
14385                <span class="entry_type_name">int32</span>
14386                <span class="entry_type_container">x</span>
14387
14388                <span class="entry_type_array">
14389                  n
14390                </span>
14391              <span class="entry_type_visibility"> [system]</span>
14392
14393
14394
14395              <span class="entry_type_deprecated">[deprecated] </span>
14396
14397
14398
14399            </td> <!-- entry_type -->
14400
14401            <td class="entry_description">
14402              <p>List which camera reprocess stream is used
14403for the source of reprocessing data.<wbr/></p>
14404            </td>
14405
14406            <td class="entry_units">
14407              List of camera reprocess stream IDs
14408            </td>
14409
14410            <td class="entry_range">
14411              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14412              <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
14413            </td>
14414
14415            <td class="entry_tags">
14416              <ul class="entry_tags">
14417                  <li><a href="#tag_HAL2">HAL2</a></li>
14418              </ul>
14419            </td>
14420
14421          </tr>
14422          <tr class="entries_header">
14423            <th class="th_details" colspan="5">Details</th>
14424          </tr>
14425          <tr class="entry_cont">
14426            <td class="entry_details" colspan="5">
14427              <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
14428REPROCESS.<wbr/> Ignored otherwise</p>
14429            </td>
14430          </tr>
14431
14432
14433          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14434           <!-- end of entry -->
14435
14436
14437          <tr class="entry" id="controls_android.request.metadataMode">
14438            <td class="entry_name
14439             " rowspan="1">
14440              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
14441            </td>
14442            <td class="entry_type">
14443                <span class="entry_type_name entry_type_name_enum">byte</span>
14444
14445              <span class="entry_type_visibility"> [system]</span>
14446
14447
14448
14449
14450
14451                <ul class="entry_type_enum">
14452                  <li>
14453                    <span class="entry_type_enum_name">NONE</span>
14454                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
14455for application-bound buffer data.<wbr/> If no
14456application-bound streams exist,<wbr/> no frame should be
14457placed in the output frame queue.<wbr/> If such streams
14458exist,<wbr/> a frame should be placed on the output queue
14459with null metadata but with the necessary output buffer
14460information.<wbr/> Timestamp information should still be
14461included with any output stream buffers</p></span>
14462                  </li>
14463                  <li>
14464                    <span class="entry_type_enum_name">FULL</span>
14465                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
14466only be produced if they are separately
14467enabled</p></span>
14468                  </li>
14469                </ul>
14470
14471            </td> <!-- entry_type -->
14472
14473            <td class="entry_description">
14474              <p>How much metadata to produce on
14475output</p>
14476            </td>
14477
14478            <td class="entry_units">
14479            </td>
14480
14481            <td class="entry_range">
14482            </td>
14483
14484            <td class="entry_tags">
14485              <ul class="entry_tags">
14486                  <li><a href="#tag_FUTURE">FUTURE</a></li>
14487              </ul>
14488            </td>
14489
14490          </tr>
14491
14492
14493          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14494           <!-- end of entry -->
14495
14496
14497          <tr class="entry" id="controls_android.request.outputStreams">
14498            <td class="entry_name
14499                entry_name_deprecated
14500             " rowspan="3">
14501              android.<wbr/>request.<wbr/>output<wbr/>Streams
14502            </td>
14503            <td class="entry_type">
14504                <span class="entry_type_name">int32</span>
14505                <span class="entry_type_container">x</span>
14506
14507                <span class="entry_type_array">
14508                  n
14509                </span>
14510              <span class="entry_type_visibility"> [system]</span>
14511
14512
14513
14514              <span class="entry_type_deprecated">[deprecated] </span>
14515
14516
14517
14518            </td> <!-- entry_type -->
14519
14520            <td class="entry_description">
14521              <p>Lists which camera output streams image data
14522from this capture must be sent to</p>
14523            </td>
14524
14525            <td class="entry_units">
14526              List of camera stream IDs
14527            </td>
14528
14529            <td class="entry_range">
14530              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14531              <p>List must only include streams that have been
14532created</p>
14533            </td>
14534
14535            <td class="entry_tags">
14536              <ul class="entry_tags">
14537                  <li><a href="#tag_HAL2">HAL2</a></li>
14538              </ul>
14539            </td>
14540
14541          </tr>
14542          <tr class="entries_header">
14543            <th class="th_details" colspan="5">Details</th>
14544          </tr>
14545          <tr class="entry_cont">
14546            <td class="entry_details" colspan="5">
14547              <p>If no output streams are listed,<wbr/> then the image
14548data should simply be discarded.<wbr/> The image data must
14549still be captured for metadata and statistics production,<wbr/>
14550and the lens and flash must operate as requested.<wbr/></p>
14551            </td>
14552          </tr>
14553
14554
14555          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14556           <!-- end of entry -->
14557
14558
14559          <tr class="entry" id="controls_android.request.type">
14560            <td class="entry_name
14561                entry_name_deprecated
14562             " rowspan="1">
14563              android.<wbr/>request.<wbr/>type
14564            </td>
14565            <td class="entry_type">
14566                <span class="entry_type_name entry_type_name_enum">byte</span>
14567
14568              <span class="entry_type_visibility"> [system]</span>
14569
14570
14571
14572              <span class="entry_type_deprecated">[deprecated] </span>
14573
14574
14575                <ul class="entry_type_enum">
14576                  <li>
14577                    <span class="entry_type_enum_name">CAPTURE</span>
14578                    <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
14579and process it according to the
14580settings</p></span>
14581                  </li>
14582                  <li>
14583                    <span class="entry_type_enum_name">REPROCESS</span>
14584                    <span class="entry_type_enum_notes"><p>Process previously captured data; the
14585<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
14586source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
14587needed for reprocessing with [RP]</p></span>
14588                  </li>
14589                </ul>
14590
14591            </td> <!-- entry_type -->
14592
14593            <td class="entry_description">
14594              <p>The type of the request; either CAPTURE or
14595REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p>
14596            </td>
14597
14598            <td class="entry_units">
14599            </td>
14600
14601            <td class="entry_range">
14602              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14603            </td>
14604
14605            <td class="entry_tags">
14606              <ul class="entry_tags">
14607                  <li><a href="#tag_HAL2">HAL2</a></li>
14608              </ul>
14609            </td>
14610
14611          </tr>
14612
14613
14614          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14615           <!-- end of entry -->
14616
14617
14618
14619      <!-- end of kind -->
14620      </tbody>
14621      <tr><td colspan="6" class="kind">static</td></tr>
14622
14623      <thead class="entries_header">
14624        <tr>
14625          <th class="th_name">Property Name</th>
14626          <th class="th_type">Type</th>
14627          <th class="th_description">Description</th>
14628          <th class="th_units">Units</th>
14629          <th class="th_range">Range</th>
14630          <th class="th_tags">Tags</th>
14631        </tr>
14632      </thead>
14633
14634      <tbody>
14635
14636
14637
14638
14639
14640
14641
14642
14643
14644
14645          <tr class="entry" id="static_android.request.maxNumOutputStreams">
14646            <td class="entry_name
14647             " rowspan="3">
14648              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
14649            </td>
14650            <td class="entry_type">
14651                <span class="entry_type_name">int32</span>
14652                <span class="entry_type_container">x</span>
14653
14654                <span class="entry_type_array">
14655                  3
14656                </span>
14657              <span class="entry_type_visibility"> [hidden]</span>
14658
14659
14660              <span class="entry_type_hwlevel">[legacy] </span>
14661
14662
14663
14664
14665            </td> <!-- entry_type -->
14666
14667            <td class="entry_description">
14668              <p>The maximum numbers of different types of output streams
14669that can be configured and used simultaneously by a camera device.<wbr/></p>
14670            </td>
14671
14672            <td class="entry_units">
14673            </td>
14674
14675            <td class="entry_range">
14676              <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
14677<p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
14678<p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
14679for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
14680&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>
14681            </td>
14682
14683            <td class="entry_tags">
14684              <ul class="entry_tags">
14685                  <li><a href="#tag_BC">BC</a></li>
14686              </ul>
14687            </td>
14688
14689          </tr>
14690          <tr class="entries_header">
14691            <th class="th_details" colspan="5">Details</th>
14692          </tr>
14693          <tr class="entry_cont">
14694            <td class="entry_details" colspan="5">
14695              <p>This is a 3 element tuple that contains the max number of output simultaneous
14696streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
14697formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
14698stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
14699number 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>
14700<p>This lists the upper bound of the number of output streams supported by
14701the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14702CPU resources that will consume more power.<wbr/> The image format for an output stream can
14703be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
14704The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
14705into the 3 stream types as below:</p>
14706<ul>
14707<li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
14708  Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
14709<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>
14710<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>
14711  Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
14712  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or
14713  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li>
14714</ul>
14715            </td>
14716          </tr>
14717
14718
14719          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14720           <!-- end of entry -->
14721
14722
14723          <tr class="entry" id="static_android.request.maxNumOutputRaw">
14724            <td class="entry_name
14725             " rowspan="3">
14726              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
14727            </td>
14728            <td class="entry_type">
14729                <span class="entry_type_name">int32</span>
14730
14731              <span class="entry_type_visibility"> [public]</span>
14732
14733              <span class="entry_type_synthetic">[synthetic] </span>
14734
14735              <span class="entry_type_hwlevel">[legacy] </span>
14736
14737
14738
14739
14740            </td> <!-- entry_type -->
14741
14742            <td class="entry_description">
14743              <p>The maximum numbers of different types of output streams
14744that can be configured and used simultaneously by a camera device
14745for any <code>RAW</code> formats.<wbr/></p>
14746            </td>
14747
14748            <td class="entry_units">
14749            </td>
14750
14751            <td class="entry_range">
14752              <p>&gt;= 0</p>
14753            </td>
14754
14755            <td class="entry_tags">
14756            </td>
14757
14758          </tr>
14759          <tr class="entries_header">
14760            <th class="th_details" colspan="5">Details</th>
14761          </tr>
14762          <tr class="entry_cont">
14763            <td class="entry_details" colspan="5">
14764              <p>This value contains the max number of output simultaneous
14765streams from the raw sensor.<wbr/></p>
14766<p>This lists the upper bound of the number of output streams supported by
14767the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14768CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
14769be 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>
14770<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
14771<ul>
14772<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
14773<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
14774<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
14775</ul>
14776<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
14777never support raw streams.<wbr/></p>
14778            </td>
14779          </tr>
14780
14781
14782          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14783           <!-- end of entry -->
14784
14785
14786          <tr class="entry" id="static_android.request.maxNumOutputProc">
14787            <td class="entry_name
14788             " rowspan="3">
14789              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
14790            </td>
14791            <td class="entry_type">
14792                <span class="entry_type_name">int32</span>
14793
14794              <span class="entry_type_visibility"> [public]</span>
14795
14796              <span class="entry_type_synthetic">[synthetic] </span>
14797
14798              <span class="entry_type_hwlevel">[legacy] </span>
14799
14800
14801
14802
14803            </td> <!-- entry_type -->
14804
14805            <td class="entry_description">
14806              <p>The maximum numbers of different types of output streams
14807that can be configured and used simultaneously by a camera device
14808for any processed (but not-stalling) formats.<wbr/></p>
14809            </td>
14810
14811            <td class="entry_units">
14812            </td>
14813
14814            <td class="entry_range">
14815              <p>&gt;= 3
14816for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
14817&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>
14818            </td>
14819
14820            <td class="entry_tags">
14821            </td>
14822
14823          </tr>
14824          <tr class="entries_header">
14825            <th class="th_details" colspan="5">Details</th>
14826          </tr>
14827          <tr class="entry_cont">
14828            <td class="entry_details" colspan="5">
14829              <p>This value contains the max number of output simultaneous
14830streams for any processed (but not-stalling) formats.<wbr/></p>
14831<p>This lists the upper bound of the number of output streams supported by
14832the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14833CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
14834be 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>
14835<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
14836Typically:</p>
14837<ul>
14838<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
14839<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
14840<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
14841<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>
14842</ul>
14843<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
14844processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
14845<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
14846            </td>
14847          </tr>
14848
14849
14850          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14851           <!-- end of entry -->
14852
14853
14854          <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
14855            <td class="entry_name
14856             " rowspan="3">
14857              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
14858            </td>
14859            <td class="entry_type">
14860                <span class="entry_type_name">int32</span>
14861
14862              <span class="entry_type_visibility"> [public]</span>
14863
14864              <span class="entry_type_synthetic">[synthetic] </span>
14865
14866              <span class="entry_type_hwlevel">[legacy] </span>
14867
14868
14869
14870
14871            </td> <!-- entry_type -->
14872
14873            <td class="entry_description">
14874              <p>The maximum numbers of different types of output streams
14875that can be configured and used simultaneously by a camera device
14876for any processed (and stalling) formats.<wbr/></p>
14877            </td>
14878
14879            <td class="entry_units">
14880            </td>
14881
14882            <td class="entry_range">
14883              <p>&gt;= 1</p>
14884            </td>
14885
14886            <td class="entry_tags">
14887            </td>
14888
14889          </tr>
14890          <tr class="entries_header">
14891            <th class="th_details" colspan="5">Details</th>
14892          </tr>
14893          <tr class="entry_cont">
14894            <td class="entry_details" colspan="5">
14895              <p>This value contains the max number of output simultaneous
14896streams for any processed (but not-stalling) formats.<wbr/></p>
14897<p>This lists the upper bound of the number of output streams supported by
14898the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14899CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
14900be 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>
14901<p>A processed and stalling format is defined as any non-RAW format with a stallDurations
14902&gt; 0.<wbr/>  Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a
14903stalling format.<wbr/></p>
14904<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
14905processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
14906<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
14907            </td>
14908          </tr>
14909
14910
14911          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14912           <!-- end of entry -->
14913
14914
14915          <tr class="entry" id="static_android.request.maxNumReprocessStreams">
14916            <td class="entry_name
14917                entry_name_deprecated
14918             " rowspan="3">
14919              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
14920            </td>
14921            <td class="entry_type">
14922                <span class="entry_type_name">int32</span>
14923                <span class="entry_type_container">x</span>
14924
14925                <span class="entry_type_array">
14926                  1
14927                </span>
14928              <span class="entry_type_visibility"> [system]</span>
14929
14930
14931
14932              <span class="entry_type_deprecated">[deprecated] </span>
14933
14934
14935
14936            </td> <!-- entry_type -->
14937
14938            <td class="entry_description">
14939              <p>How many reprocessing streams of any type
14940can be allocated at the same time.<wbr/></p>
14941            </td>
14942
14943            <td class="entry_units">
14944            </td>
14945
14946            <td class="entry_range">
14947              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14948              <p>&gt;= 0</p>
14949            </td>
14950
14951            <td class="entry_tags">
14952              <ul class="entry_tags">
14953                  <li><a href="#tag_HAL2">HAL2</a></li>
14954              </ul>
14955            </td>
14956
14957          </tr>
14958          <tr class="entries_header">
14959            <th class="th_details" colspan="5">Details</th>
14960          </tr>
14961          <tr class="entry_cont">
14962            <td class="entry_details" colspan="5">
14963              <p>Only used by HAL2.<wbr/>x.<wbr/></p>
14964<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
14965            </td>
14966          </tr>
14967
14968
14969          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14970           <!-- end of entry -->
14971
14972
14973          <tr class="entry" id="static_android.request.maxNumInputStreams">
14974            <td class="entry_name
14975             " rowspan="5">
14976              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
14977            </td>
14978            <td class="entry_type">
14979                <span class="entry_type_name">int32</span>
14980
14981              <span class="entry_type_visibility"> [public]</span>
14982
14983
14984              <span class="entry_type_hwlevel">[full] </span>
14985
14986
14987
14988
14989            </td> <!-- entry_type -->
14990
14991            <td class="entry_description">
14992              <p>The maximum numbers of any type of input streams
14993that can be configured and used simultaneously by a camera device.<wbr/></p>
14994            </td>
14995
14996            <td class="entry_units">
14997            </td>
14998
14999            <td class="entry_range">
15000              <p>0 or 1.<wbr/></p>
15001            </td>
15002
15003            <td class="entry_tags">
15004              <ul class="entry_tags">
15005                  <li><a href="#tag_REPROC">REPROC</a></li>
15006              </ul>
15007            </td>
15008
15009          </tr>
15010          <tr class="entries_header">
15011            <th class="th_details" colspan="5">Details</th>
15012          </tr>
15013          <tr class="entry_cont">
15014            <td class="entry_details" colspan="5">
15015              <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
15016<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
15017input stream,<wbr/> there must be at least one output stream configured to to receive the
15018reprocessed images.<wbr/></p>
15019<p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
15020only the input buffer will be used to produce these output stream buffers,<wbr/> and a
15021new sensor image will not be captured.<wbr/></p>
15022<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
15023stream image format will be PRIVATE,<wbr/> the associated output stream image format
15024should be JPEG.<wbr/></p>
15025            </td>
15026          </tr>
15027
15028          <tr class="entries_header">
15029            <th class="th_details" colspan="5">HAL Implementation Details</th>
15030          </tr>
15031          <tr class="entry_cont">
15032            <td class="entry_details" colspan="5">
15033              <p>For the reprocessing flow and controls,<wbr/> see
15034hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
15035            </td>
15036          </tr>
15037
15038          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15039           <!-- end of entry -->
15040
15041
15042          <tr class="entry" id="static_android.request.pipelineMaxDepth">
15043            <td class="entry_name
15044             " rowspan="5">
15045              android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
15046            </td>
15047            <td class="entry_type">
15048                <span class="entry_type_name">byte</span>
15049
15050              <span class="entry_type_visibility"> [public]</span>
15051
15052
15053              <span class="entry_type_hwlevel">[legacy] </span>
15054
15055
15056
15057
15058            </td> <!-- entry_type -->
15059
15060            <td class="entry_description">
15061              <p>Specifies the number of maximum pipeline stages a frame
15062has to go through from when it's exposed to when it's available
15063to the framework.<wbr/></p>
15064            </td>
15065
15066            <td class="entry_units">
15067            </td>
15068
15069            <td class="entry_range">
15070            </td>
15071
15072            <td class="entry_tags">
15073            </td>
15074
15075          </tr>
15076          <tr class="entries_header">
15077            <th class="th_details" colspan="5">Details</th>
15078          </tr>
15079          <tr class="entry_cont">
15080            <td class="entry_details" colspan="5">
15081              <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
15082one stage to readout) from the sensor.<wbr/> The ISP then usually adds
15083its own stages to do custom HW processing.<wbr/> Further stages may be
15084added by SW processing.<wbr/></p>
15085<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
15086processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
15087depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
15088the max pipeline depth.<wbr/></p>
15089<p>A pipeline depth of X stages is equivalent to a pipeline latency of
15090X frame intervals.<wbr/></p>
15091<p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
15092the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
15093            </td>
15094          </tr>
15095
15096          <tr class="entries_header">
15097            <th class="th_details" colspan="5">HAL Implementation Details</th>
15098          </tr>
15099          <tr class="entry_cont">
15100            <td class="entry_details" colspan="5">
15101              <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
15102max batch sizes may be larger than 1.<wbr/></p>
15103            </td>
15104          </tr>
15105
15106          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15107           <!-- end of entry -->
15108
15109
15110          <tr class="entry" id="static_android.request.partialResultCount">
15111            <td class="entry_name
15112             " rowspan="3">
15113              android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
15114            </td>
15115            <td class="entry_type">
15116                <span class="entry_type_name">int32</span>
15117
15118              <span class="entry_type_visibility"> [public]</span>
15119
15120
15121
15122
15123
15124
15125            </td> <!-- entry_type -->
15126
15127            <td class="entry_description">
15128              <p>Defines how many sub-components
15129a result will be composed of.<wbr/></p>
15130            </td>
15131
15132            <td class="entry_units">
15133            </td>
15134
15135            <td class="entry_range">
15136              <p>&gt;= 1</p>
15137            </td>
15138
15139            <td class="entry_tags">
15140            </td>
15141
15142          </tr>
15143          <tr class="entries_header">
15144            <th class="th_details" colspan="5">Details</th>
15145          </tr>
15146          <tr class="entry_cont">
15147            <td class="entry_details" colspan="5">
15148              <p>In order to combat the pipeline latency,<wbr/> partial results
15149may be delivered to the application layer from the camera device as
15150soon as they are available.<wbr/></p>
15151<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
15152results are not supported,<wbr/> and only the final TotalCaptureResult will
15153be produced by the camera device.<wbr/></p>
15154<p>A typical use case for this might be: after requesting an
15155auto-focus (AF) lock the new AF state might be available 50%
15156of the way through the pipeline.<wbr/>  The camera device could
15157then immediately dispatch this state via a partial result to
15158the application,<wbr/> and the rest of the metadata via later
15159partial results.<wbr/></p>
15160            </td>
15161          </tr>
15162
15163
15164          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15165           <!-- end of entry -->
15166
15167
15168          <tr class="entry" id="static_android.request.availableCapabilities">
15169            <td class="entry_name
15170             " rowspan="5">
15171              android.<wbr/>request.<wbr/>available<wbr/>Capabilities
15172            </td>
15173            <td class="entry_type">
15174                <span class="entry_type_name entry_type_name_enum">byte</span>
15175                <span class="entry_type_container">x</span>
15176
15177                <span class="entry_type_array">
15178                  n
15179                </span>
15180              <span class="entry_type_visibility"> [public]</span>
15181
15182
15183              <span class="entry_type_hwlevel">[legacy] </span>
15184
15185
15186
15187                <ul class="entry_type_enum">
15188                  <li>
15189                    <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span>
15190                    <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
15191device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
15192supports.<wbr/></p>
15193<p>This capability is listed by all normal devices,<wbr/> and
15194indicates that the camera device has a feature set
15195that's comparable to the baseline requirements for the
15196older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15197<p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
15198capability,<wbr/> indicating that they support only depth measurement,<wbr/>
15199not standard color output.<wbr/></p></span>
15200                  </li>
15201                  <li>
15202                    <span class="entry_type_enum_name">MANUAL_SENSOR</span>
15203                    <span class="entry_type_enum_optional">[optional]</span>
15204                    <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
15205as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
15206The camera device supports basic manual control of the sensor image
15207acquisition related stages.<wbr/> This means the following controls are
15208guaranteed to be supported:</p>
15209<ul>
15210<li>Manual frame duration control<ul>
15211<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
15212<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
15213</ul>
15214</li>
15215<li>Manual exposure control<ul>
15216<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
15217<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
15218</ul>
15219</li>
15220<li>Manual sensitivity control<ul>
15221<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
15222<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
15223</ul>
15224</li>
15225<li>Manual lens control (if the lens is adjustable)<ul>
15226<li>android.<wbr/>lens.<wbr/>*</li>
15227</ul>
15228</li>
15229<li>Manual flash control (if a flash unit is present)<ul>
15230<li>android.<wbr/>flash.<wbr/>*</li>
15231</ul>
15232</li>
15233<li>Manual black level locking<ul>
15234<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
15235</ul>
15236</li>
15237<li>Auto exposure lock<ul>
15238<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
15239</ul>
15240</li>
15241</ul>
15242<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
15243device will accurately report the values applied by 3A in the
15244result.<wbr/></p>
15245<p>A given camera device may also support additional manual sensor controls,<wbr/>
15246but this capability only covers the above list of controls.<wbr/></p>
15247<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
15248additionally return a min frame duration that is greater than
15249zero for each supported size-format combination.<wbr/></p></span>
15250                  </li>
15251                  <li>
15252                    <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span>
15253                    <span class="entry_type_enum_optional">[optional]</span>
15254                    <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
15255The camera device supports basic manual control of the image post-processing
15256stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
15257<ul>
15258<li>
15259<p>Manual tonemap control</p>
15260<ul>
15261<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
15262<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
15263<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
15264<li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
15265<li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
15266</ul>
15267</li>
15268<li>
15269<p>Manual white balance control</p>
15270<ul>
15271<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
15272<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
15273</ul>
15274</li>
15275<li>Manual lens shading map control<ul>
15276<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
15277<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
15278<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
15279<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
15280</ul>
15281</li>
15282<li>Manual aberration correction control (if aberration correction is supported)<ul>
15283<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
15284<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
15285</ul>
15286</li>
15287<li>Auto white balance lock<ul>
15288<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
15289</ul>
15290</li>
15291</ul>
15292<p>If auto white balance is enabled,<wbr/> then the camera device
15293will accurately report the values applied by AWB in the result.<wbr/></p>
15294<p>A given camera device may also support additional post-processing
15295controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
15296                  </li>
15297                  <li>
15298                    <span class="entry_type_enum_name">RAW</span>
15299                    <span class="entry_type_enum_optional">[optional]</span>
15300                    <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
15301metadata for interpreting them.<wbr/></p>
15302<p>Devices supporting the RAW capability allow both for
15303saving DNG files,<wbr/> and for direct application processing of
15304raw sensor images.<wbr/></p>
15305<ul>
15306<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
15307<li>The maximum available resolution for RAW_<wbr/>SENSOR streams
15308  will match either the value in
15309  <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
15310  <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
15311<li>All DNG-related optional metadata entries are provided
15312  by the camera device.<wbr/></li>
15313</ul></span>
15314                  </li>
15315                  <li>
15316                    <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span>
15317                    <span class="entry_type_enum_optional">[optional]</span>
15318                    <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
15319<ul>
15320<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>
15321<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/>
15322  that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
15323  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>
15324<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
15325  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>
15326<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>
15327<li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
15328  relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
15329<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
15330  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
15331  <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
15332<li>The maximum available resolution for PRIVATE streams
15333  (both input/<wbr/>output) will match the maximum available
15334  resolution of JPEG streams.<wbr/></li>
15335<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
15336<li>Only below controls are effective for reprocessing requests and
15337  will be present in capture results,<wbr/> other controls in reprocess
15338  requests will be ignored by the camera device.<wbr/><ul>
15339<li>android.<wbr/>jpeg.<wbr/>*</li>
15340<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
15341<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
15342</ul>
15343</li>
15344<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
15345  <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>
15346</ul></span>
15347                  </li>
15348                  <li>
15349                    <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span>
15350                    <span class="entry_type_enum_optional">[optional]</span>
15351                    <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
15352the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
15353reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
15354<p>The values reported for the following controls are guaranteed to be available
15355in the CaptureResult,<wbr/> including when 3A is enabled:</p>
15356<ul>
15357<li>Exposure control<ul>
15358<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
15359</ul>
15360</li>
15361<li>Sensitivity control<ul>
15362<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
15363</ul>
15364</li>
15365<li>Lens controls (if the lens is adjustable)<ul>
15366<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
15367<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
15368</ul>
15369</li>
15370</ul>
15371<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
15372always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
15373                  </li>
15374                  <li>
15375                    <span class="entry_type_enum_name">BURST_CAPTURE</span>
15376                    <span class="entry_type_enum_optional">[optional]</span>
15377                    <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
15378second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
15379to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at &gt;= 10 frames
15380per second.<wbr/>  Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
15381resolution of the device,<wbr/> whichever is smaller.<wbr/></p>
15382<p>More specifically,<wbr/> this means that a size matching the camera device's active array
15383size 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/>
15384with a minimum frame duration for that format and size of either &lt;= 1/<wbr/>20 s,<wbr/> or
15385&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
15386lists at least one FPS range where the minimum FPS is &gt;= 1 /<wbr/> minimumFrameDuration
15387for 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/>
15388then 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
15389least one resolution &gt;= 8 megapixels,<wbr/> with a minimum frame duration of &lt;= 1/<wbr/>20
15390s.<wbr/></p>
15391<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
15392as the maximum-size YUV_<wbr/>420_<wbr/>888 resolution is.<wbr/></p>
15393<p>If the device supports the PRIVATE_<wbr/>REPROCESSING capability,<wbr/> then the same guarantees
15394as 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>
15395<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
15396and 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>
15397are also guaranteed to be <code>true</code> so burst capture with these two locks ON yields
15398consistent image output.<wbr/></p></span>
15399                  </li>
15400                  <li>
15401                    <span class="entry_type_enum_name">YUV_REPROCESSING</span>
15402                    <span class="entry_type_enum_optional">[optional]</span>
15403                    <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
15404PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
15405following:</p>
15406<ul>
15407<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>
15408<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/>
15409  YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by
15410  <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and
15411  <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li>
15412<li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
15413  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>
15414<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>
15415<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
15416  relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
15417<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
15418  <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>
15419<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
15420  maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
15421<li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
15422<li>Only the below controls are effective for reprocessing requests and will be present
15423  in capture results.<wbr/> The reprocess requests are from the original capture results that
15424  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>
15425  output buffers.<wbr/>  All other controls in the reprocess requests will be ignored by the
15426  camera device.<wbr/><ul>
15427<li>android.<wbr/>jpeg.<wbr/>*</li>
15428<li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
15429<li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
15430<li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
15431</ul>
15432</li>
15433<li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
15434  <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>
15435</ul></span>
15436                  </li>
15437                  <li>
15438                    <span class="entry_type_enum_name">DEPTH_OUTPUT</span>
15439                    <span class="entry_type_enum_optional">[optional]</span>
15440                    <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
15441<p>This capability requires the camera device to support the following:</p>
15442<ul>
15443<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as an output format.<wbr/></li>
15444<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
15445  output format.<wbr/></li>
15446<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/>
15447  will list the following calibration entries in both
15448  <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> and
15449  <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
15450<li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
15451<li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
15452<li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
15453<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
15454</ul>
15455</li>
15456<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>
15457<li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
15458  normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
15459  format.<wbr/></li>
15460</ul>
15461<p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
15462so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
15463should be accounted for (see
15464<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
15465On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
15466using a repeating burst is recommended,<wbr/> where a depth-output target is only included
15467once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
15468rate,<wbr/> including depth stall time.<wbr/></p></span>
15469                  </li>
15470                  <li>
15471                    <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO</span>
15472                    <span class="entry_type_enum_optional">[optional]</span>
15473                    <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps)
15474use case.<wbr/> The camera device will support high speed capture session created by
15475<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which
15476only accepts high speed request lists created by
15477<a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p>
15478<p>A camera device can still support high speed video streaming by advertising the high speed
15479FPS 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
15480capture request per frame control and synchronization requirements will apply to
15481the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability describes
15482the capability of a specialized operating mode with many limitations (see below),<wbr/> which
15483is only targeted at high speed video recording.<wbr/></p>
15484<p>The supported high speed video sizes and fps ranges are specified in
15485<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/>
15486To get desired output frame rates,<wbr/> the application is only allowed to select video size
15487and FPS range combinations provided by
15488<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/>
15489The 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>
15490<p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
15491ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
15492controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
15493and post-processing parameters is possible.<wbr/> All other controls operate the
15494same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
15495android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
15496<ul>
15497<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
15498<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
15499<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
15500<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
15501<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
15502<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
15503<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
15504<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
15505<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
15506<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
15507</ul>
15508<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
15509<ul>
15510<li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
15511work since aeMode is ON)</li>
15512<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
15513<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
15514<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
15515</ul>
15516<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
15517be lower than what camera can output,<wbr/> depending on the destination Surfaces for
15518the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
15519the application need check if the video encoder is capable of supporting the
15520high frame rate for a given video size,<wbr/> or it will end up with lower recording
15521frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
15522rate will be bounded by the screen refresh rate.<wbr/></p>
15523<p>The camera device will only support up to 2 high speed simultaneous output surfaces
15524(preview and recording surfaces)
15525in this mode.<wbr/> Above controls will be effective only if all of below conditions are true:</p>
15526<ul>
15527<li>The application creates a camera capture session with no more than 2 surfaces via
15528<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
15529targeted surfaces must be preview surface (either from
15530<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
15531recording surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or
15532<a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li>
15533<li>The stream sizes are selected from the sizes reported by
15534<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
15535<li>The FPS ranges are selected from
15536<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li>
15537</ul>
15538<p>When above conditions are NOT satistied,<wbr/>
15539<a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
15540will fail.<wbr/></p>
15541<p>Switching to a FPS range that has different maximum FPS may trigger some camera device
15542reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
15543the application avoids unnecessary maximum target FPS changes as much as possible
15544during high speed streaming.<wbr/></p></span>
15545                  </li>
15546                </ul>
15547
15548            </td> <!-- entry_type -->
15549
15550            <td class="entry_description">
15551              <p>List of capabilities that this camera device
15552advertises as fully supporting.<wbr/></p>
15553            </td>
15554
15555            <td class="entry_units">
15556            </td>
15557
15558            <td class="entry_range">
15559            </td>
15560
15561            <td class="entry_tags">
15562            </td>
15563
15564          </tr>
15565          <tr class="entries_header">
15566            <th class="th_details" colspan="5">Details</th>
15567          </tr>
15568          <tr class="entry_cont">
15569            <td class="entry_details" colspan="5">
15570              <p>A capability is a contract that the camera device makes in order
15571to be able to satisfy one or more use cases.<wbr/></p>
15572<p>Listing a capability guarantees that the whole set of features
15573required to support a common use will all be available.<wbr/></p>
15574<p>Using a subset of the functionality provided by an unsupported
15575capability may be possible on a specific camera device implementation;
15576to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
15577<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
15578<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
15579<p>The following capabilities are guaranteed to be available on
15580<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
15581<ul>
15582<li>MANUAL_<wbr/>SENSOR</li>
15583<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
15584</ul>
15585<p>Other capabilities may be available on either FULL or LIMITED
15586devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
15587            </td>
15588          </tr>
15589
15590          <tr class="entries_header">
15591            <th class="th_details" colspan="5">HAL Implementation Details</th>
15592          </tr>
15593          <tr class="entry_cont">
15594            <td class="entry_details" colspan="5">
15595              <p>Additional constraint details per-capability will be available
15596in the Compatibility Test Suite.<wbr/></p>
15597<p>Minimum baseline requirements required for the
15598BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
15599Instead refer to "BC" tags and the camera CTS tests in the
15600android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
15601<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
15602<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
15603request and the result in order to be considered to be
15604capability-compliant.<wbr/></p>
15605<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
15606then exposure time must be configurable via the request <em>and</em>
15607the actual exposure applied must be available via
15608the result.<wbr/></p>
15609<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
15610<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
15611<p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
15612hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
15613<p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
15614CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
15615<p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
15616YUV_<wbr/>REPROCESSING capability must support the
15617CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
15618<p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
15619<a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
15620<a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
15621<a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
15622addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
15623enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
15624if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
15625DEPTH).<wbr/></p>
15626            </td>
15627          </tr>
15628
15629          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15630           <!-- end of entry -->
15631
15632
15633          <tr class="entry" id="static_android.request.availableRequestKeys">
15634            <td class="entry_name
15635             " rowspan="5">
15636              android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
15637            </td>
15638            <td class="entry_type">
15639                <span class="entry_type_name">int32</span>
15640                <span class="entry_type_container">x</span>
15641
15642                <span class="entry_type_array">
15643                  n
15644                </span>
15645              <span class="entry_type_visibility"> [hidden]</span>
15646
15647
15648              <span class="entry_type_hwlevel">[legacy] </span>
15649
15650
15651
15652
15653            </td> <!-- entry_type -->
15654
15655            <td class="entry_description">
15656              <p>A list of all keys that the camera device has available
15657to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
15658            </td>
15659
15660            <td class="entry_units">
15661            </td>
15662
15663            <td class="entry_range">
15664            </td>
15665
15666            <td class="entry_tags">
15667            </td>
15668
15669          </tr>
15670          <tr class="entries_header">
15671            <th class="th_details" colspan="5">Details</th>
15672          </tr>
15673          <tr class="entry_cont">
15674            <td class="entry_details" colspan="5">
15675              <p>Attempting to set a key into a CaptureRequest that is not
15676listed here will result in an invalid request and will be rejected
15677by the camera device.<wbr/></p>
15678<p>This field can be used to query the feature set of a camera device
15679at a more granular level than capabilities.<wbr/> This is especially
15680important for optional keys that are not listed under any capability
15681in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
15682            </td>
15683          </tr>
15684
15685          <tr class="entries_header">
15686            <th class="th_details" colspan="5">HAL Implementation Details</th>
15687          </tr>
15688          <tr class="entry_cont">
15689            <td class="entry_details" colspan="5">
15690              <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15691extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15692<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15693vendor extensions API and not against this field.<wbr/></p>
15694<p>The HAL must not consume any request tags that are not listed either
15695here or in the vendor tag list.<wbr/></p>
15696<p>The public camera2 API will always make the vendor tags visible
15697via
15698<a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
15699            </td>
15700          </tr>
15701
15702          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15703           <!-- end of entry -->
15704
15705
15706          <tr class="entry" id="static_android.request.availableResultKeys">
15707            <td class="entry_name
15708             " rowspan="5">
15709              android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
15710            </td>
15711            <td class="entry_type">
15712                <span class="entry_type_name">int32</span>
15713                <span class="entry_type_container">x</span>
15714
15715                <span class="entry_type_array">
15716                  n
15717                </span>
15718              <span class="entry_type_visibility"> [hidden]</span>
15719
15720
15721              <span class="entry_type_hwlevel">[legacy] </span>
15722
15723
15724
15725
15726            </td> <!-- entry_type -->
15727
15728            <td class="entry_description">
15729              <p>A list of all keys that the camera device has available
15730to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p>
15731            </td>
15732
15733            <td class="entry_units">
15734            </td>
15735
15736            <td class="entry_range">
15737            </td>
15738
15739            <td class="entry_tags">
15740            </td>
15741
15742          </tr>
15743          <tr class="entries_header">
15744            <th class="th_details" colspan="5">Details</th>
15745          </tr>
15746          <tr class="entry_cont">
15747            <td class="entry_details" colspan="5">
15748              <p>Attempting to get a key from a CaptureResult that is not
15749listed here will always return a <code>null</code> value.<wbr/> Getting a key from
15750a CaptureResult that is listed here will generally never return a <code>null</code>
15751value.<wbr/></p>
15752<p>The following keys may return <code>null</code> unless they are enabled:</p>
15753<ul>
15754<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>
15755</ul>
15756<p>(Those sometimes-null keys will nevertheless be listed here
15757if they are available.<wbr/>)</p>
15758<p>This field can be used to query the feature set of a camera device
15759at a more granular level than capabilities.<wbr/> This is especially
15760important for optional keys that are not listed under any capability
15761in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
15762            </td>
15763          </tr>
15764
15765          <tr class="entries_header">
15766            <th class="th_details" colspan="5">HAL Implementation Details</th>
15767          </tr>
15768          <tr class="entry_cont">
15769            <td class="entry_details" colspan="5">
15770              <p>Tags listed here must always have an entry in the result metadata,<wbr/>
15771even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
15772matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
15773<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15774extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15775<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15776vendor extensions API and not against this field.<wbr/></p>
15777<p>The HAL must not produce any result tags that are not listed either
15778here or in the vendor tag list.<wbr/></p>
15779<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>
15780            </td>
15781          </tr>
15782
15783          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15784           <!-- end of entry -->
15785
15786
15787          <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
15788            <td class="entry_name
15789             " rowspan="5">
15790              android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
15791            </td>
15792            <td class="entry_type">
15793                <span class="entry_type_name">int32</span>
15794                <span class="entry_type_container">x</span>
15795
15796                <span class="entry_type_array">
15797                  n
15798                </span>
15799              <span class="entry_type_visibility"> [hidden]</span>
15800
15801
15802              <span class="entry_type_hwlevel">[legacy] </span>
15803
15804
15805
15806
15807            </td> <!-- entry_type -->
15808
15809            <td class="entry_description">
15810              <p>A list of all keys that the camera device has available
15811to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
15812            </td>
15813
15814            <td class="entry_units">
15815            </td>
15816
15817            <td class="entry_range">
15818            </td>
15819
15820            <td class="entry_tags">
15821            </td>
15822
15823          </tr>
15824          <tr class="entries_header">
15825            <th class="th_details" colspan="5">Details</th>
15826          </tr>
15827          <tr class="entry_cont">
15828            <td class="entry_details" colspan="5">
15829              <p>This entry follows the same rules as
15830<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
15831CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
15832details.<wbr/></p>
15833            </td>
15834          </tr>
15835
15836          <tr class="entries_header">
15837            <th class="th_details" colspan="5">HAL Implementation Details</th>
15838          </tr>
15839          <tr class="entry_cont">
15840            <td class="entry_details" colspan="5">
15841              <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
15842even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
15843matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
15844<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15845extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15846<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15847vendor extensions API and not against this field.<wbr/></p>
15848<p>The HAL must not have any tags in its static info that are not listed
15849either here or in the vendor tag list.<wbr/></p>
15850<p>The public camera2 API will always make the vendor tags visible
15851via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
15852            </td>
15853          </tr>
15854
15855          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15856           <!-- end of entry -->
15857
15858
15859
15860      <!-- end of kind -->
15861      </tbody>
15862      <tr><td colspan="6" class="kind">dynamic</td></tr>
15863
15864      <thead class="entries_header">
15865        <tr>
15866          <th class="th_name">Property Name</th>
15867          <th class="th_type">Type</th>
15868          <th class="th_description">Description</th>
15869          <th class="th_units">Units</th>
15870          <th class="th_range">Range</th>
15871          <th class="th_tags">Tags</th>
15872        </tr>
15873      </thead>
15874
15875      <tbody>
15876
15877
15878
15879
15880
15881
15882
15883
15884
15885
15886          <tr class="entry" id="dynamic_android.request.frameCount">
15887            <td class="entry_name
15888                entry_name_deprecated
15889             " rowspan="3">
15890              android.<wbr/>request.<wbr/>frame<wbr/>Count
15891            </td>
15892            <td class="entry_type">
15893                <span class="entry_type_name">int32</span>
15894
15895              <span class="entry_type_visibility"> [hidden]</span>
15896
15897
15898
15899              <span class="entry_type_deprecated">[deprecated] </span>
15900
15901
15902
15903            </td> <!-- entry_type -->
15904
15905            <td class="entry_description">
15906              <p>A frame counter set by the framework.<wbr/> This value monotonically
15907increases with every new result (that is,<wbr/> each new result has a unique
15908frameCount value).<wbr/></p>
15909            </td>
15910
15911            <td class="entry_units">
15912              count of frames
15913            </td>
15914
15915            <td class="entry_range">
15916              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15917              <p>&gt; 0</p>
15918            </td>
15919
15920            <td class="entry_tags">
15921            </td>
15922
15923          </tr>
15924          <tr class="entries_header">
15925            <th class="th_details" colspan="5">Details</th>
15926          </tr>
15927          <tr class="entry_cont">
15928            <td class="entry_details" colspan="5">
15929              <p>Reset on release()</p>
15930            </td>
15931          </tr>
15932
15933
15934          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15935           <!-- end of entry -->
15936
15937
15938          <tr class="entry" id="dynamic_android.request.id">
15939            <td class="entry_name
15940             " rowspan="1">
15941              android.<wbr/>request.<wbr/>id
15942            </td>
15943            <td class="entry_type">
15944                <span class="entry_type_name">int32</span>
15945
15946              <span class="entry_type_visibility"> [hidden]</span>
15947
15948
15949
15950
15951
15952
15953            </td> <!-- entry_type -->
15954
15955            <td class="entry_description">
15956              <p>An application-specified ID for the current
15957request.<wbr/> Must be maintained unchanged in output
15958frame</p>
15959            </td>
15960
15961            <td class="entry_units">
15962              arbitrary integer assigned by application
15963            </td>
15964
15965            <td class="entry_range">
15966              <p>Any int</p>
15967            </td>
15968
15969            <td class="entry_tags">
15970              <ul class="entry_tags">
15971                  <li><a href="#tag_V1">V1</a></li>
15972              </ul>
15973            </td>
15974
15975          </tr>
15976
15977
15978          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15979           <!-- end of entry -->
15980
15981
15982          <tr class="entry" id="dynamic_android.request.metadataMode">
15983            <td class="entry_name
15984             " rowspan="1">
15985              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
15986            </td>
15987            <td class="entry_type">
15988                <span class="entry_type_name entry_type_name_enum">byte</span>
15989
15990              <span class="entry_type_visibility"> [system]</span>
15991
15992
15993
15994
15995
15996                <ul class="entry_type_enum">
15997                  <li>
15998                    <span class="entry_type_enum_name">NONE</span>
15999                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
16000for application-bound buffer data.<wbr/> If no
16001application-bound streams exist,<wbr/> no frame should be
16002placed in the output frame queue.<wbr/> If such streams
16003exist,<wbr/> a frame should be placed on the output queue
16004with null metadata but with the necessary output buffer
16005information.<wbr/> Timestamp information should still be
16006included with any output stream buffers</p></span>
16007                  </li>
16008                  <li>
16009                    <span class="entry_type_enum_name">FULL</span>
16010                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
16011only be produced if they are separately
16012enabled</p></span>
16013                  </li>
16014                </ul>
16015
16016            </td> <!-- entry_type -->
16017
16018            <td class="entry_description">
16019              <p>How much metadata to produce on
16020output</p>
16021            </td>
16022
16023            <td class="entry_units">
16024            </td>
16025
16026            <td class="entry_range">
16027            </td>
16028
16029            <td class="entry_tags">
16030              <ul class="entry_tags">
16031                  <li><a href="#tag_FUTURE">FUTURE</a></li>
16032              </ul>
16033            </td>
16034
16035          </tr>
16036
16037
16038          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16039           <!-- end of entry -->
16040
16041
16042          <tr class="entry" id="dynamic_android.request.outputStreams">
16043            <td class="entry_name
16044                entry_name_deprecated
16045             " rowspan="3">
16046              android.<wbr/>request.<wbr/>output<wbr/>Streams
16047            </td>
16048            <td class="entry_type">
16049                <span class="entry_type_name">int32</span>
16050                <span class="entry_type_container">x</span>
16051
16052                <span class="entry_type_array">
16053                  n
16054                </span>
16055              <span class="entry_type_visibility"> [system]</span>
16056
16057
16058
16059              <span class="entry_type_deprecated">[deprecated] </span>
16060
16061
16062
16063            </td> <!-- entry_type -->
16064
16065            <td class="entry_description">
16066              <p>Lists which camera output streams image data
16067from this capture must be sent to</p>
16068            </td>
16069
16070            <td class="entry_units">
16071              List of camera stream IDs
16072            </td>
16073
16074            <td class="entry_range">
16075              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16076              <p>List must only include streams that have been
16077created</p>
16078            </td>
16079
16080            <td class="entry_tags">
16081              <ul class="entry_tags">
16082                  <li><a href="#tag_HAL2">HAL2</a></li>
16083              </ul>
16084            </td>
16085
16086          </tr>
16087          <tr class="entries_header">
16088            <th class="th_details" colspan="5">Details</th>
16089          </tr>
16090          <tr class="entry_cont">
16091            <td class="entry_details" colspan="5">
16092              <p>If no output streams are listed,<wbr/> then the image
16093data should simply be discarded.<wbr/> The image data must
16094still be captured for metadata and statistics production,<wbr/>
16095and the lens and flash must operate as requested.<wbr/></p>
16096            </td>
16097          </tr>
16098
16099
16100          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16101           <!-- end of entry -->
16102
16103
16104          <tr class="entry" id="dynamic_android.request.pipelineDepth">
16105            <td class="entry_name
16106             " rowspan="5">
16107              android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
16108            </td>
16109            <td class="entry_type">
16110                <span class="entry_type_name">byte</span>
16111
16112              <span class="entry_type_visibility"> [public]</span>
16113
16114
16115              <span class="entry_type_hwlevel">[legacy] </span>
16116
16117
16118
16119
16120            </td> <!-- entry_type -->
16121
16122            <td class="entry_description">
16123              <p>Specifies the number of pipeline stages the frame went
16124through from when it was exposed to when the final completed result
16125was available to the framework.<wbr/></p>
16126            </td>
16127
16128            <td class="entry_units">
16129            </td>
16130
16131            <td class="entry_range">
16132              <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
16133            </td>
16134
16135            <td class="entry_tags">
16136            </td>
16137
16138          </tr>
16139          <tr class="entries_header">
16140            <th class="th_details" colspan="5">Details</th>
16141          </tr>
16142          <tr class="entry_cont">
16143            <td class="entry_details" colspan="5">
16144              <p>Depending on what settings are used in the request,<wbr/> and
16145what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
16146and some pipeline stages skipped.<wbr/></p>
16147<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
16148            </td>
16149          </tr>
16150
16151          <tr class="entries_header">
16152            <th class="th_details" colspan="5">HAL Implementation Details</th>
16153          </tr>
16154          <tr class="entry_cont">
16155            <td class="entry_details" colspan="5">
16156              <p>This value must always represent the accurate count of how many
16157pipeline stages were actually used.<wbr/></p>
16158            </td>
16159          </tr>
16160
16161          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16162           <!-- end of entry -->
16163
16164
16165
16166      <!-- end of kind -->
16167      </tbody>
16168
16169  <!-- end of section -->
16170  <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr>
16171
16172
16173      <tr><td colspan="6" class="kind">controls</td></tr>
16174
16175      <thead class="entries_header">
16176        <tr>
16177          <th class="th_name">Property Name</th>
16178          <th class="th_type">Type</th>
16179          <th class="th_description">Description</th>
16180          <th class="th_units">Units</th>
16181          <th class="th_range">Range</th>
16182          <th class="th_tags">Tags</th>
16183        </tr>
16184      </thead>
16185
16186      <tbody>
16187
16188
16189
16190
16191
16192
16193
16194
16195
16196
16197          <tr class="entry" id="controls_android.scaler.cropRegion">
16198            <td class="entry_name
16199             " rowspan="5">
16200              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
16201            </td>
16202            <td class="entry_type">
16203                <span class="entry_type_name">int32</span>
16204                <span class="entry_type_container">x</span>
16205
16206                <span class="entry_type_array">
16207                  4
16208                </span>
16209              <span class="entry_type_visibility"> [public as rectangle]</span>
16210
16211
16212              <span class="entry_type_hwlevel">[legacy] </span>
16213
16214
16215
16216
16217            </td> <!-- entry_type -->
16218
16219            <td class="entry_description">
16220              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
16221            </td>
16222
16223            <td class="entry_units">
16224              Pixel coordinates relative to
16225          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
16226            </td>
16227
16228            <td class="entry_range">
16229            </td>
16230
16231            <td class="entry_tags">
16232              <ul class="entry_tags">
16233                  <li><a href="#tag_BC">BC</a></li>
16234              </ul>
16235            </td>
16236
16237          </tr>
16238          <tr class="entries_header">
16239            <th class="th_details" colspan="5">Details</th>
16240          </tr>
16241          <tr class="entry_cont">
16242            <td class="entry_details" colspan="5">
16243              <p>This control can be used to implement digital zoom.<wbr/></p>
16244<p>The crop region coordinate system is based off
16245<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
16246top-left corner of the sensor active array.<wbr/></p>
16247<p>Output streams use this rectangle to produce their output,<wbr/>
16248cropping to a smaller region if necessary to maintain the
16249stream's aspect ratio,<wbr/> then scaling the sensor input to
16250match the output's configured resolution.<wbr/></p>
16251<p>The crop region is applied after the RAW to other color
16252space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
16253(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
16254croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
16255<p>For non-raw streams,<wbr/> any additional per-stream cropping will
16256be done to maximize the final pixel area of the stream.<wbr/></p>
16257<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
16258ratio,<wbr/> then 4:3 streams will use the exact crop
16259region.<wbr/> 16:9 streams will further crop vertically
16260(letterbox).<wbr/></p>
16261<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
16262outputs will crop horizontally (pillarbox),<wbr/> and 16:9
16263streams will match exactly.<wbr/> These additional crops will
16264be centered within the crop region.<wbr/></p>
16265<p>The width and height of the crop region cannot
16266be set to be smaller than
16267<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
16268<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>
16269<p>The camera device may adjust the crop region to account
16270for rounding and other hardware requirements; the final
16271crop region used will be included in the output capture
16272result.<wbr/></p>
16273            </td>
16274          </tr>
16275
16276          <tr class="entries_header">
16277            <th class="th_details" colspan="5">HAL Implementation Details</th>
16278          </tr>
16279          <tr class="entry_cont">
16280            <td class="entry_details" colspan="5">
16281              <p>The output streams must maintain square pixels at all
16282times,<wbr/> no matter what the relative aspect ratios of the
16283crop region and the stream are.<wbr/>  Negative values for
16284corner are allowed for raw output if full pixel array is
16285larger than active pixel array.<wbr/> Width and height may be
16286rounded to nearest larger supportable width,<wbr/> especially
16287for raw output,<wbr/> where only a few fixed scales may be
16288possible.<wbr/></p>
16289<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
16290size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
16291<ul>
16292<li>
16293<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
16294array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
16295<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>
16296<ol>
16297<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
16298cropped pixel area by (tx,<wbr/> ty),<wbr/>
16299where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
16300and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
16301(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
16302<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
16303<li>Scale the width and height of requested cropRegion with scaling factor of
16304sensor<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
16305respectively.<wbr/>
16306Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
16307with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
16308follow the general cropping rule for this new cropRegion and effective active
16309array size.<wbr/></li>
16310</ol>
16311</li>
16312<li>
16313<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/>
16314The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
16315The reported cropRegion may be slightly different with the requested cropRegion since
16316the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
16317hardware limitations.<wbr/></p>
16318</li>
16319</ul>
16320<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
16321            </td>
16322          </tr>
16323
16324          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16325           <!-- end of entry -->
16326
16327
16328
16329      <!-- end of kind -->
16330      </tbody>
16331      <tr><td colspan="6" class="kind">static</td></tr>
16332
16333      <thead class="entries_header">
16334        <tr>
16335          <th class="th_name">Property Name</th>
16336          <th class="th_type">Type</th>
16337          <th class="th_description">Description</th>
16338          <th class="th_units">Units</th>
16339          <th class="th_range">Range</th>
16340          <th class="th_tags">Tags</th>
16341        </tr>
16342      </thead>
16343
16344      <tbody>
16345
16346
16347
16348
16349
16350
16351
16352
16353
16354
16355          <tr class="entry" id="static_android.scaler.availableFormats">
16356            <td class="entry_name
16357                entry_name_deprecated
16358             " rowspan="5">
16359              android.<wbr/>scaler.<wbr/>available<wbr/>Formats
16360            </td>
16361            <td class="entry_type">
16362                <span class="entry_type_name entry_type_name_enum">int32</span>
16363                <span class="entry_type_container">x</span>
16364
16365                <span class="entry_type_array">
16366                  n
16367                </span>
16368              <span class="entry_type_visibility"> [hidden as imageFormat]</span>
16369
16370
16371
16372              <span class="entry_type_deprecated">[deprecated] </span>
16373
16374
16375                <ul class="entry_type_enum">
16376                  <li>
16377                    <span class="entry_type_enum_name">RAW16</span>
16378                    <span class="entry_type_enum_optional">[optional]</span>
16379                    <span class="entry_type_enum_value">0x20</span>
16380                    <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
16381buffers with 16-bit pixels.<wbr/></p>
16382<p>Buffers of this format are typically expected to have a
16383Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
16384<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
16385CFAs that are not representable by a format in
16386<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
16387use this format.<wbr/></p>
16388<p>Buffers of this format will also follow the constraints given for
16389RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
16390<p>This format is intended to give users access to the full contents
16391of the buffers coming directly from the image sensor prior to any
16392cropping or scaling operations,<wbr/> and all coordinate systems for
16393metadata used for this format are relative to the size of the
16394active region of the image sensor before any geometric distortion
16395correction has been applied (i.<wbr/>e.<wbr/>
16396<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
16397dimensions for this format are limited to the full dimensions of
16398the 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
16399<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
16400only supported output size).<wbr/></p>
16401<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
16402the full set of performance guarantees.<wbr/></p></span>
16403                  </li>
16404                  <li>
16405                    <span class="entry_type_enum_name">RAW_OPAQUE</span>
16406                    <span class="entry_type_enum_optional">[optional]</span>
16407                    <span class="entry_type_enum_value">0x24</span>
16408                    <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE is a format for raw image buffers coming from an
16409image sensor.<wbr/></p>
16410<p>The actual structure of buffers of this format is
16411platform-specific,<wbr/> but must follow several constraints:</p>
16412<ol>
16413<li>No image post-processing operations may have been applied to
16414buffers of this type.<wbr/> These buffers contain raw image data coming
16415directly from the image sensor.<wbr/></li>
16416<li>If a buffer of this format is passed to the camera device for
16417reprocessing,<wbr/> the resulting images will be identical to the images
16418produced if the buffer had come directly from the sensor and was
16419processed with the same settings.<wbr/></li>
16420</ol>
16421<p>The intended use for this format is to allow access to the native
16422raw format buffers coming directly from the camera sensor without
16423any additional conversions or decrease in framerate.<wbr/></p>
16424<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
16425performance guarantees.<wbr/></p></span>
16426                  </li>
16427                  <li>
16428                    <span class="entry_type_enum_name">YV12</span>
16429                    <span class="entry_type_enum_optional">[optional]</span>
16430                    <span class="entry_type_enum_value">0x32315659</span>
16431                    <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
16432                  </li>
16433                  <li>
16434                    <span class="entry_type_enum_name">YCrCb_420_SP</span>
16435                    <span class="entry_type_enum_optional">[optional]</span>
16436                    <span class="entry_type_enum_value">0x11</span>
16437                    <span class="entry_type_enum_notes"><p>NV21</p></span>
16438                  </li>
16439                  <li>
16440                    <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span>
16441                    <span class="entry_type_enum_value">0x22</span>
16442                    <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
16443                  </li>
16444                  <li>
16445                    <span class="entry_type_enum_name">YCbCr_420_888</span>
16446                    <span class="entry_type_enum_value">0x23</span>
16447                    <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
16448                  </li>
16449                  <li>
16450                    <span class="entry_type_enum_name">BLOB</span>
16451                    <span class="entry_type_enum_value">0x21</span>
16452                    <span class="entry_type_enum_notes"><p>JPEG format</p></span>
16453                  </li>
16454                </ul>
16455
16456            </td> <!-- entry_type -->
16457
16458            <td class="entry_description">
16459              <p>The list of image formats that are supported by this
16460camera device for output streams.<wbr/></p>
16461            </td>
16462
16463            <td class="entry_units">
16464            </td>
16465
16466            <td class="entry_range">
16467              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16468            </td>
16469
16470            <td class="entry_tags">
16471              <ul class="entry_tags">
16472                  <li><a href="#tag_BC">BC</a></li>
16473              </ul>
16474            </td>
16475
16476          </tr>
16477          <tr class="entries_header">
16478            <th class="th_details" colspan="5">Details</th>
16479          </tr>
16480          <tr class="entry_cont">
16481            <td class="entry_details" colspan="5">
16482              <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
16483<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
16484            </td>
16485          </tr>
16486
16487          <tr class="entries_header">
16488            <th class="th_details" colspan="5">HAL Implementation Details</th>
16489          </tr>
16490          <tr class="entry_cont">
16491            <td class="entry_details" colspan="5">
16492              <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
16493system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
16494<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
16495gralloc module will select a format based on the usage flags provided
16496by the camera HAL device and the other endpoint of the stream.<wbr/> It is
16497usually used by preview and recording streams,<wbr/> where the application doesn't
16498need access the image data.<wbr/></p>
16499<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
16500needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
16501<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
16502<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
16503recommended that any information used by the camera device when
16504processing images is fully expressed by the result metadata
16505for that image buffer.<wbr/></p>
16506            </td>
16507          </tr>
16508
16509          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16510           <!-- end of entry -->
16511
16512
16513          <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
16514            <td class="entry_name
16515                entry_name_deprecated
16516             " rowspan="3">
16517              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
16518            </td>
16519            <td class="entry_type">
16520                <span class="entry_type_name">int64</span>
16521                <span class="entry_type_container">x</span>
16522
16523                <span class="entry_type_array">
16524                  n
16525                </span>
16526              <span class="entry_type_visibility"> [hidden]</span>
16527
16528
16529
16530              <span class="entry_type_deprecated">[deprecated] </span>
16531
16532
16533
16534            </td> <!-- entry_type -->
16535
16536            <td class="entry_description">
16537              <p>The minimum frame duration that is supported
16538for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
16539            </td>
16540
16541            <td class="entry_units">
16542              Nanoseconds
16543            </td>
16544
16545            <td class="entry_range">
16546              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16547              <p>TODO: Remove property.<wbr/></p>
16548            </td>
16549
16550            <td class="entry_tags">
16551              <ul class="entry_tags">
16552                  <li><a href="#tag_BC">BC</a></li>
16553              </ul>
16554            </td>
16555
16556          </tr>
16557          <tr class="entries_header">
16558            <th class="th_details" colspan="5">Details</th>
16559          </tr>
16560          <tr class="entry_cont">
16561            <td class="entry_details" colspan="5">
16562              <p>This corresponds to the minimum steady-state frame duration when only
16563that JPEG stream is active and captured in a burst,<wbr/> with all
16564processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
16565<p>When multiple streams are configured,<wbr/> the minimum
16566frame duration will be &gt;= max(individual stream min
16567durations)</p>
16568            </td>
16569          </tr>
16570
16571
16572          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16573           <!-- end of entry -->
16574
16575
16576          <tr class="entry" id="static_android.scaler.availableJpegSizes">
16577            <td class="entry_name
16578                entry_name_deprecated
16579             " rowspan="5">
16580              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
16581            </td>
16582            <td class="entry_type">
16583                <span class="entry_type_name">int32</span>
16584                <span class="entry_type_container">x</span>
16585
16586                <span class="entry_type_array">
16587                  n x 2
16588                </span>
16589              <span class="entry_type_visibility"> [hidden as size]</span>
16590
16591
16592
16593              <span class="entry_type_deprecated">[deprecated] </span>
16594
16595
16596
16597            </td> <!-- entry_type -->
16598
16599            <td class="entry_description">
16600              <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
16601            </td>
16602
16603            <td class="entry_units">
16604            </td>
16605
16606            <td class="entry_range">
16607              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16608              <p>TODO: Remove property.<wbr/></p>
16609            </td>
16610
16611            <td class="entry_tags">
16612              <ul class="entry_tags">
16613                  <li><a href="#tag_BC">BC</a></li>
16614              </ul>
16615            </td>
16616
16617          </tr>
16618          <tr class="entries_header">
16619            <th class="th_details" colspan="5">Details</th>
16620          </tr>
16621          <tr class="entry_cont">
16622            <td class="entry_details" colspan="5">
16623              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
16624sensor 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>
16625            </td>
16626          </tr>
16627
16628          <tr class="entries_header">
16629            <th class="th_details" colspan="5">HAL Implementation Details</th>
16630          </tr>
16631          <tr class="entry_cont">
16632            <td class="entry_details" colspan="5">
16633              <p>The HAL must include sensor maximum resolution
16634(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
16635and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
16636            </td>
16637          </tr>
16638
16639          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16640           <!-- end of entry -->
16641
16642
16643          <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
16644            <td class="entry_name
16645             " rowspan="3">
16646              android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
16647            </td>
16648            <td class="entry_type">
16649                <span class="entry_type_name">float</span>
16650
16651              <span class="entry_type_visibility"> [public]</span>
16652
16653
16654              <span class="entry_type_hwlevel">[legacy] </span>
16655
16656
16657
16658
16659            </td> <!-- entry_type -->
16660
16661            <td class="entry_description">
16662              <p>The maximum ratio between both active area width
16663and crop region width,<wbr/> and active area height and
16664crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
16665            </td>
16666
16667            <td class="entry_units">
16668              Zoom scale factor
16669            </td>
16670
16671            <td class="entry_range">
16672              <p>&gt;=1</p>
16673            </td>
16674
16675            <td class="entry_tags">
16676              <ul class="entry_tags">
16677                  <li><a href="#tag_BC">BC</a></li>
16678              </ul>
16679            </td>
16680
16681          </tr>
16682          <tr class="entries_header">
16683            <th class="th_details" colspan="5">Details</th>
16684          </tr>
16685          <tr class="entry_cont">
16686            <td class="entry_details" colspan="5">
16687              <p>This represents the maximum amount of zooming possible by
16688the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
16689window size.<wbr/></p>
16690<p>Crop regions that have a width or height that is smaller
16691than this ratio allows will be rounded up to the minimum
16692allowed size by the camera device.<wbr/></p>
16693            </td>
16694          </tr>
16695
16696
16697          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16698           <!-- end of entry -->
16699
16700
16701          <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
16702            <td class="entry_name
16703                entry_name_deprecated
16704             " rowspan="3">
16705              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
16706            </td>
16707            <td class="entry_type">
16708                <span class="entry_type_name">int64</span>
16709                <span class="entry_type_container">x</span>
16710
16711                <span class="entry_type_array">
16712                  n
16713                </span>
16714              <span class="entry_type_visibility"> [hidden]</span>
16715
16716
16717
16718              <span class="entry_type_deprecated">[deprecated] </span>
16719
16720
16721
16722            </td> <!-- entry_type -->
16723
16724            <td class="entry_description">
16725              <p>For each available processed output size (defined in
16726<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
16727minimum supportable frame duration for that size.<wbr/></p>
16728            </td>
16729
16730            <td class="entry_units">
16731              Nanoseconds
16732            </td>
16733
16734            <td class="entry_range">
16735              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16736            </td>
16737
16738            <td class="entry_tags">
16739              <ul class="entry_tags">
16740                  <li><a href="#tag_BC">BC</a></li>
16741              </ul>
16742            </td>
16743
16744          </tr>
16745          <tr class="entries_header">
16746            <th class="th_details" colspan="5">Details</th>
16747          </tr>
16748          <tr class="entry_cont">
16749            <td class="entry_details" colspan="5">
16750              <p>This should correspond to the frame duration when only that processed
16751stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
16752set to FAST.<wbr/></p>
16753<p>When multiple streams are configured,<wbr/> the minimum frame duration will
16754be &gt;= max(individual stream min durations).<wbr/></p>
16755            </td>
16756          </tr>
16757
16758
16759          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16760           <!-- end of entry -->
16761
16762
16763          <tr class="entry" id="static_android.scaler.availableProcessedSizes">
16764            <td class="entry_name
16765                entry_name_deprecated
16766             " rowspan="5">
16767              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
16768            </td>
16769            <td class="entry_type">
16770                <span class="entry_type_name">int32</span>
16771                <span class="entry_type_container">x</span>
16772
16773                <span class="entry_type_array">
16774                  n x 2
16775                </span>
16776              <span class="entry_type_visibility"> [hidden as size]</span>
16777
16778
16779
16780              <span class="entry_type_deprecated">[deprecated] </span>
16781
16782
16783
16784            </td> <!-- entry_type -->
16785
16786            <td class="entry_description">
16787              <p>The resolutions available for use with
16788processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
16789platform opaque YUV/<wbr/>RGB streams to the GPU or video
16790encoders.<wbr/></p>
16791            </td>
16792
16793            <td class="entry_units">
16794            </td>
16795
16796            <td class="entry_range">
16797              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16798            </td>
16799
16800            <td class="entry_tags">
16801              <ul class="entry_tags">
16802                  <li><a href="#tag_BC">BC</a></li>
16803              </ul>
16804            </td>
16805
16806          </tr>
16807          <tr class="entries_header">
16808            <th class="th_details" colspan="5">Details</th>
16809          </tr>
16810          <tr class="entry_cont">
16811            <td class="entry_details" colspan="5">
16812              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
16813<p>For a given use case,<wbr/> the actual maximum supported resolution
16814may be lower than what is listed here,<wbr/> depending on the destination
16815Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
16816the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
16817smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
16818can provide.<wbr/></p>
16819<p>Please reference the documentation for the image data destination to
16820check if it limits the maximum size for image data.<wbr/></p>
16821            </td>
16822          </tr>
16823
16824          <tr class="entries_header">
16825            <th class="th_details" colspan="5">HAL Implementation Details</th>
16826          </tr>
16827          <tr class="entry_cont">
16828            <td class="entry_details" colspan="5">
16829              <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/>
16830the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>
16831and each below resolution if it is smaller than or equal to the sensor
16832maximum resolution (if they are not listed in JPEG sizes already):</p>
16833<ul>
16834<li>240p (320 x 240)</li>
16835<li>480p (640 x 480)</li>
16836<li>720p (1280 x 720)</li>
16837<li>1080p (1920 x 1080)</li>
16838</ul>
16839<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/>
16840the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
16841            </td>
16842          </tr>
16843
16844          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16845           <!-- end of entry -->
16846
16847
16848          <tr class="entry" id="static_android.scaler.availableRawMinDurations">
16849            <td class="entry_name
16850                entry_name_deprecated
16851             " rowspan="3">
16852              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
16853            </td>
16854            <td class="entry_type">
16855                <span class="entry_type_name">int64</span>
16856                <span class="entry_type_container">x</span>
16857
16858                <span class="entry_type_array">
16859                  n
16860                </span>
16861              <span class="entry_type_visibility"> [system]</span>
16862
16863
16864
16865              <span class="entry_type_deprecated">[deprecated] </span>
16866
16867
16868
16869            </td> <!-- entry_type -->
16870
16871            <td class="entry_description">
16872              <p>For each available raw output size (defined in
16873<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
16874supportable frame duration for that size.<wbr/></p>
16875            </td>
16876
16877            <td class="entry_units">
16878              Nanoseconds
16879            </td>
16880
16881            <td class="entry_range">
16882              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</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>Should correspond to the frame duration when only the raw stream is
16898active.<wbr/></p>
16899<p>When multiple streams are configured,<wbr/> the minimum
16900frame duration will be &gt;= max(individual stream min
16901durations)</p>
16902            </td>
16903          </tr>
16904
16905
16906          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16907           <!-- end of entry -->
16908
16909
16910          <tr class="entry" id="static_android.scaler.availableRawSizes">
16911            <td class="entry_name
16912                entry_name_deprecated
16913             " rowspan="1">
16914              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
16915            </td>
16916            <td class="entry_type">
16917                <span class="entry_type_name">int32</span>
16918                <span class="entry_type_container">x</span>
16919
16920                <span class="entry_type_array">
16921                  n x 2
16922                </span>
16923              <span class="entry_type_visibility"> [system as size]</span>
16924
16925
16926
16927              <span class="entry_type_deprecated">[deprecated] </span>
16928
16929
16930
16931            </td> <!-- entry_type -->
16932
16933            <td class="entry_description">
16934              <p>The resolutions available for use with raw
16935sensor output streams,<wbr/> listed as width,<wbr/>
16936height</p>
16937            </td>
16938
16939            <td class="entry_units">
16940            </td>
16941
16942            <td class="entry_range">
16943              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16944            </td>
16945
16946            <td class="entry_tags">
16947            </td>
16948
16949          </tr>
16950
16951
16952          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16953           <!-- end of entry -->
16954
16955
16956          <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
16957            <td class="entry_name
16958             " rowspan="5">
16959              android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
16960            </td>
16961            <td class="entry_type">
16962                <span class="entry_type_name">int32</span>
16963
16964              <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
16965
16966
16967
16968
16969
16970
16971            </td> <!-- entry_type -->
16972
16973            <td class="entry_description">
16974              <p>The mapping of image formats that are supported by this
16975camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
16976            </td>
16977
16978            <td class="entry_units">
16979            </td>
16980
16981            <td class="entry_range">
16982            </td>
16983
16984            <td class="entry_tags">
16985              <ul class="entry_tags">
16986                  <li><a href="#tag_REPROC">REPROC</a></li>
16987              </ul>
16988            </td>
16989
16990          </tr>
16991          <tr class="entries_header">
16992            <th class="th_details" colspan="5">Details</th>
16993          </tr>
16994          <tr class="entry_cont">
16995            <td class="entry_details" colspan="5">
16996              <p>All camera devices with at least 1
16997<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
16998available input format.<wbr/></p>
16999<p>The camera device will support the following map of formats,<wbr/>
17000if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
17001<table>
17002<thead>
17003<tr>
17004<th align="left">Input Format</th>
17005<th align="left">Output Format</th>
17006<th align="left">Capability</th>
17007</tr>
17008</thead>
17009<tbody>
17010<tr>
17011<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17012<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17013<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
17014</tr>
17015<tr>
17016<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17017<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>
17018<td align="left">PRIVATE_<wbr/>REPROCESSING</td>
17019</tr>
17020<tr>
17021<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>
17022<td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17023<td align="left">YUV_<wbr/>REPROCESSING</td>
17024</tr>
17025<tr>
17026<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>
17027<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>
17028<td align="left">YUV_<wbr/>REPROCESSING</td>
17029</tr>
17030</tbody>
17031</table>
17032<p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
17033PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
17034with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
17035<p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
17036or 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>
17037<p>Attempting to configure an input stream with output streams not
17038listed as available in this map is not valid.<wbr/></p>
17039            </td>
17040          </tr>
17041
17042          <tr class="entries_header">
17043            <th class="th_details" colspan="5">HAL Implementation Details</th>
17044          </tr>
17045          <tr class="entry_cont">
17046            <td class="entry_details" colspan="5">
17047              <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
17048of the image format enumerations.<wbr/> The PRIVATE format refers to the
17049HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
17050the actual format by using the gralloc usage flags.<wbr/>
17051For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
17052processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
17053See camera3.<wbr/>h for more details.<wbr/></p>
17054<p>This value is encoded as a variable-size array-of-arrays.<wbr/>
17055The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
17056<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
17057inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
17058<p>A code sample to read/<wbr/>write this encoding (with a device that
17059supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
17060and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
17061<pre><code>//<wbr/> reading
17062int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
17063for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
17064    int32_<wbr/>t format = contents[i++];
17065    int32_<wbr/>t length = contents[i++];
17066    int32_<wbr/>t output_<wbr/>formats[length];
17067    memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
17068           length * sizeof(int32_<wbr/>t));
17069    i += length;
17070}
17071
17072//<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
17073int32_<wbr/>t[] contents = {
17074  IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
17075  YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
17076};
17077update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
17078      sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
17079</code></pre>
17080<p>If the HAL claims to support any of the capabilities listed in the
17081above details,<wbr/> then it must also support all the input-output
17082combinations listed for that capability.<wbr/> It can optionally support
17083additional formats if it so chooses.<wbr/></p>
17084            </td>
17085          </tr>
17086
17087          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17088           <!-- end of entry -->
17089
17090
17091          <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
17092            <td class="entry_name
17093             " rowspan="5">
17094              android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
17095            </td>
17096            <td class="entry_type">
17097                <span class="entry_type_name entry_type_name_enum">int32</span>
17098                <span class="entry_type_container">x</span>
17099
17100                <span class="entry_type_array">
17101                  n x 4
17102                </span>
17103              <span class="entry_type_visibility"> [hidden as streamConfiguration]</span>
17104
17105
17106              <span class="entry_type_hwlevel">[legacy] </span>
17107
17108
17109
17110                <ul class="entry_type_enum">
17111                  <li>
17112                    <span class="entry_type_enum_name">OUTPUT</span>
17113                  </li>
17114                  <li>
17115                    <span class="entry_type_enum_name">INPUT</span>
17116                  </li>
17117                </ul>
17118
17119            </td> <!-- entry_type -->
17120
17121            <td class="entry_description">
17122              <p>The available stream configurations that this
17123camera device supports
17124(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
17125            </td>
17126
17127            <td class="entry_units">
17128            </td>
17129
17130            <td class="entry_range">
17131            </td>
17132
17133            <td class="entry_tags">
17134            </td>
17135
17136          </tr>
17137          <tr class="entries_header">
17138            <th class="th_details" colspan="5">Details</th>
17139          </tr>
17140          <tr class="entry_cont">
17141            <td class="entry_details" colspan="5">
17142              <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
17143tuples.<wbr/></p>
17144<p>For a given use case,<wbr/> the actual maximum supported resolution
17145may be lower than what is listed here,<wbr/> depending on the destination
17146Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17147the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17148smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17149can provide.<wbr/></p>
17150<p>Please reference the documentation for the image data destination to
17151check if it limits the maximum size for image data.<wbr/></p>
17152<p>Not all output formats may be supported in a configuration with
17153an input stream of a particular format.<wbr/> For more details,<wbr/> see
17154<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
17155<p>The following table describes the minimum required output stream
17156configurations based on the hardware level
17157(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
17158<table>
17159<thead>
17160<tr>
17161<th align="center">Format</th>
17162<th align="center">Size</th>
17163<th align="center">Hardware Level</th>
17164<th align="center">Notes</th>
17165</tr>
17166</thead>
17167<tbody>
17168<tr>
17169<td align="center">JPEG</td>
17170<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
17171<td align="center">Any</td>
17172<td align="center"></td>
17173</tr>
17174<tr>
17175<td align="center">JPEG</td>
17176<td align="center">1920x1080 (1080p)</td>
17177<td align="center">Any</td>
17178<td align="center">if 1080p &lt;= activeArraySize</td>
17179</tr>
17180<tr>
17181<td align="center">JPEG</td>
17182<td align="center">1280x720 (720)</td>
17183<td align="center">Any</td>
17184<td align="center">if 720p &lt;= activeArraySize</td>
17185</tr>
17186<tr>
17187<td align="center">JPEG</td>
17188<td align="center">640x480 (480p)</td>
17189<td align="center">Any</td>
17190<td align="center">if 480p &lt;= activeArraySize</td>
17191</tr>
17192<tr>
17193<td align="center">JPEG</td>
17194<td align="center">320x240 (240p)</td>
17195<td align="center">Any</td>
17196<td align="center">if 240p &lt;= activeArraySize</td>
17197</tr>
17198<tr>
17199<td align="center">YUV_<wbr/>420_<wbr/>888</td>
17200<td align="center">all output sizes available for JPEG</td>
17201<td align="center">FULL</td>
17202<td align="center"></td>
17203</tr>
17204<tr>
17205<td align="center">YUV_<wbr/>420_<wbr/>888</td>
17206<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
17207<td align="center">LIMITED</td>
17208<td align="center"></td>
17209</tr>
17210<tr>
17211<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
17212<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
17213<td align="center">Any</td>
17214<td align="center"></td>
17215</tr>
17216</tbody>
17217</table>
17218<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
17219mandatory stream configurations on a per-capability basis.<wbr/></p>
17220            </td>
17221          </tr>
17222
17223          <tr class="entries_header">
17224            <th class="th_details" colspan="5">HAL Implementation Details</th>
17225          </tr>
17226          <tr class="entry_cont">
17227            <td class="entry_details" colspan="5">
17228              <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
17229of sensor maximum resolution for JPEG formats (regardless of hardware
17230level).<wbr/></p>
17231<p>(The following is a rewording of the above required table):</p>
17232<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
17233<ul>
17234<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
17235(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
17236(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/>
17237it does not have to be included in the supported JPEG sizes.<wbr/></li>
17238<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
17239the dimensions being a multiple of 16.<wbr/></li>
17240</ul>
17241<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
17242However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
17243resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
17244additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
17245if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
17246ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
172473264x2448.<wbr/></p>
17248<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/>
17249the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
17250here as output streams.<wbr/></p>
17251<p>It must also include each below resolution if it is smaller than or
17252equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
17253formats),<wbr/> as output streams:</p>
17254<ul>
17255<li>240p (320 x 240)</li>
17256<li>480p (640 x 480)</li>
17257<li>720p (1280 x 720)</li>
17258<li>1080p (1920 x 1080)</li>
17259</ul>
17260<p>For LIMITED capability devices
17261(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
17262the HAL only has to list up to the maximum video size
17263supported by the device.<wbr/></p>
17264<p>Regardless of hardware level,<wbr/> every output resolution available for
17265YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
17266<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
17267<ul>
17268<li>availableFormats</li>
17269<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
17270</ul>
17271            </td>
17272          </tr>
17273
17274          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17275           <!-- end of entry -->
17276
17277
17278          <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
17279            <td class="entry_name
17280             " rowspan="3">
17281              android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
17282            </td>
17283            <td class="entry_type">
17284                <span class="entry_type_name">int64</span>
17285                <span class="entry_type_container">x</span>
17286
17287                <span class="entry_type_array">
17288                  4 x n
17289                </span>
17290              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
17291
17292
17293              <span class="entry_type_hwlevel">[legacy] </span>
17294
17295
17296
17297
17298            </td> <!-- entry_type -->
17299
17300            <td class="entry_description">
17301              <p>This lists the minimum frame duration for each
17302format/<wbr/>size combination.<wbr/></p>
17303            </td>
17304
17305            <td class="entry_units">
17306              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
17307            </td>
17308
17309            <td class="entry_range">
17310            </td>
17311
17312            <td class="entry_tags">
17313              <ul class="entry_tags">
17314                  <li><a href="#tag_V1">V1</a></li>
17315              </ul>
17316            </td>
17317
17318          </tr>
17319          <tr class="entries_header">
17320            <th class="th_details" colspan="5">Details</th>
17321          </tr>
17322          <tr class="entry_cont">
17323            <td class="entry_details" colspan="5">
17324              <p>This should correspond to the frame duration when only that
17325stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
17326set to either OFF or FAST.<wbr/></p>
17327<p>When multiple streams are used in a request,<wbr/> the minimum frame
17328duration will be max(individual stream min durations).<wbr/></p>
17329<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
17330is the same regardless of whether the stream is input or output.<wbr/></p>
17331<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
17332<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
17333calculating the max frame rate.<wbr/></p>
17334<p>(Keep in sync with
17335<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
17336            </td>
17337          </tr>
17338
17339
17340          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17341           <!-- end of entry -->
17342
17343
17344          <tr class="entry" id="static_android.scaler.availableStallDurations">
17345            <td class="entry_name
17346             " rowspan="5">
17347              android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
17348            </td>
17349            <td class="entry_type">
17350                <span class="entry_type_name">int64</span>
17351                <span class="entry_type_container">x</span>
17352
17353                <span class="entry_type_array">
17354                  4 x n
17355                </span>
17356              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
17357
17358
17359              <span class="entry_type_hwlevel">[legacy] </span>
17360
17361
17362
17363
17364            </td> <!-- entry_type -->
17365
17366            <td class="entry_description">
17367              <p>This lists the maximum stall duration for each
17368output format/<wbr/>size combination.<wbr/></p>
17369            </td>
17370
17371            <td class="entry_units">
17372              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
17373            </td>
17374
17375            <td class="entry_range">
17376            </td>
17377
17378            <td class="entry_tags">
17379              <ul class="entry_tags">
17380                  <li><a href="#tag_V1">V1</a></li>
17381              </ul>
17382            </td>
17383
17384          </tr>
17385          <tr class="entries_header">
17386            <th class="th_details" colspan="5">Details</th>
17387          </tr>
17388          <tr class="entry_cont">
17389            <td class="entry_details" colspan="5">
17390              <p>A stall duration is how much extra time would get added
17391to the normal minimum frame duration for a repeating request
17392that has streams with non-zero stall.<wbr/></p>
17393<p>For example,<wbr/> consider JPEG captures which have the following
17394characteristics:</p>
17395<ul>
17396<li>JPEG streams act like processed YUV streams in requests for which
17397they are not included; in requests in which they are directly
17398referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
17399JPEG stream requires the underlying YUV data to always be ready for
17400use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
17401frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
17402<li>The JPEG processor can run concurrently to the rest of the camera
17403pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
17404</ul>
17405<p>In other words,<wbr/> using a repeating YUV request would result
17406in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
17407JPEG request is submitted periodically,<wbr/> the frame rate will stay
17408at 30 FPS (as long as we wait for the previous JPEG to return each
17409time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
17410the frame rate will drop from 30 FPS.<wbr/></p>
17411<p>In general,<wbr/> submitting a new request with a non-0 stall time
17412stream will <em>not</em> cause a frame rate drop unless there are still
17413outstanding buffers for that stream from previous requests.<wbr/></p>
17414<p>Submitting a repeating request with streams (call this <code>S</code>)
17415is the same as setting the minimum frame duration from
17416the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
17417the maximum stall duration for <code>S</code>.<wbr/></p>
17418<p>If interleaving requests with and without a stall duration,<wbr/>
17419a request will stall by the maximum of the remaining times
17420for each can-stall stream with outstanding buffers.<wbr/></p>
17421<p>This means that a stalling request will not have an exposure start
17422until the stall has completed.<wbr/></p>
17423<p>This should correspond to the stall duration when only that stream is
17424active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
17425or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
17426effectively results in an indeterminate stall duration for all
17427streams in a request (the regular stall calculation rules are
17428ignored).<wbr/></p>
17429<p>The following formats may always have a stall duration:</p>
17430<ul>
17431<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
17432<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
17433</ul>
17434<p>The following formats will never have a stall duration:</p>
17435<ul>
17436<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>
17437<li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
17438</ul>
17439<p>All other formats may or may not have an allowed stall duration on
17440a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
17441for more details.<wbr/></p>
17442<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
17443calculating the max frame rate (absent stalls).<wbr/></p>
17444<p>(Keep up to date with
17445<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> )</p>
17446            </td>
17447          </tr>
17448
17449          <tr class="entries_header">
17450            <th class="th_details" colspan="5">HAL Implementation Details</th>
17451          </tr>
17452          <tr class="entry_cont">
17453            <td class="entry_details" colspan="5">
17454              <p>If possible,<wbr/> it is recommended that all non-JPEG formats
17455(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
17456and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
17457            </td>
17458          </tr>
17459
17460          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17461           <!-- end of entry -->
17462
17463
17464          <tr class="entry" id="static_android.scaler.streamConfigurationMap">
17465            <td class="entry_name
17466             " rowspan="5">
17467              android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
17468            </td>
17469            <td class="entry_type">
17470                <span class="entry_type_name">int32</span>
17471
17472              <span class="entry_type_visibility"> [public as streamConfigurationMap]</span>
17473
17474              <span class="entry_type_synthetic">[synthetic] </span>
17475
17476              <span class="entry_type_hwlevel">[legacy] </span>
17477
17478
17479
17480
17481            </td> <!-- entry_type -->
17482
17483            <td class="entry_description">
17484              <p>The available stream configurations that this
17485camera device supports; also includes the minimum frame durations
17486and the stall durations for each format/<wbr/>size combination.<wbr/></p>
17487            </td>
17488
17489            <td class="entry_units">
17490            </td>
17491
17492            <td class="entry_range">
17493            </td>
17494
17495            <td class="entry_tags">
17496            </td>
17497
17498          </tr>
17499          <tr class="entries_header">
17500            <th class="th_details" colspan="5">Details</th>
17501          </tr>
17502          <tr class="entry_cont">
17503            <td class="entry_details" colspan="5">
17504              <p>All camera devices will support sensor maximum resolution (defined by
17505<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>
17506<p>For a given use case,<wbr/> the actual maximum supported resolution
17507may be lower than what is listed here,<wbr/> depending on the destination
17508Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17509the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17510smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17511can provide.<wbr/></p>
17512<p>Please reference the documentation for the image data destination to
17513check if it limits the maximum size for image data.<wbr/></p>
17514<p>The following table describes the minimum required output stream
17515configurations based on the hardware level
17516(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
17517<table>
17518<thead>
17519<tr>
17520<th align="center">Format</th>
17521<th align="center">Size</th>
17522<th align="center">Hardware Level</th>
17523<th align="center">Notes</th>
17524</tr>
17525</thead>
17526<tbody>
17527<tr>
17528<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17529<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
17530<td align="center">Any</td>
17531<td align="center"></td>
17532</tr>
17533<tr>
17534<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17535<td align="center">1920x1080 (1080p)</td>
17536<td align="center">Any</td>
17537<td align="center">if 1080p &lt;= activeArraySize</td>
17538</tr>
17539<tr>
17540<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17541<td align="center">1280x720 (720p)</td>
17542<td align="center">Any</td>
17543<td align="center">if 720p &lt;= activeArraySize</td>
17544</tr>
17545<tr>
17546<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17547<td align="center">640x480 (480p)</td>
17548<td align="center">Any</td>
17549<td align="center">if 480p &lt;= activeArraySize</td>
17550</tr>
17551<tr>
17552<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17553<td align="center">320x240 (240p)</td>
17554<td align="center">Any</td>
17555<td align="center">if 240p &lt;= activeArraySize</td>
17556</tr>
17557<tr>
17558<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>
17559<td align="center">all output sizes available for JPEG</td>
17560<td align="center">FULL</td>
17561<td align="center"></td>
17562</tr>
17563<tr>
17564<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>
17565<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
17566<td align="center">LIMITED</td>
17567<td align="center"></td>
17568</tr>
17569<tr>
17570<td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17571<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
17572<td align="center">Any</td>
17573<td align="center"></td>
17574</tr>
17575</tbody>
17576</table>
17577<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
17578stream configurations on a per-capability basis.<wbr/></p>
17579<p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
17580<ul>
17581<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
17582(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
17583(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/>
17584it does not have to be included in the supported JPEG sizes.<wbr/></li>
17585<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
17586the dimensions being a multiple of 16.<wbr/>
17587Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
17588However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
17589resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
17590additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
17591if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
17592ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
175933264x2448.<wbr/></li>
17594</ul>
17595            </td>
17596          </tr>
17597
17598          <tr class="entries_header">
17599            <th class="th_details" colspan="5">HAL Implementation Details</th>
17600          </tr>
17601          <tr class="entry_cont">
17602            <td class="entry_details" colspan="5">
17603              <p>Do not set this property directly
17604(it is synthetic and will not be available at the HAL layer);
17605set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
17606<p>Not all output formats may be supported in a configuration with
17607an input stream of a particular format.<wbr/> For more details,<wbr/> see
17608<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
17609<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
17610of sensor maximum resolution for JPEG formats (regardless of hardware
17611level).<wbr/></p>
17612<p>(The following is a rewording of the above required table):</p>
17613<p>The HAL must include sensor maximum resolution (defined by
17614<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
17615<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/>
17616the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
17617here as output streams.<wbr/></p>
17618<p>It must also include each below resolution if it is smaller than or
17619equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
17620formats),<wbr/> as output streams:</p>
17621<ul>
17622<li>240p (320 x 240)</li>
17623<li>480p (640 x 480)</li>
17624<li>720p (1280 x 720)</li>
17625<li>1080p (1920 x 1080)</li>
17626</ul>
17627<p>For LIMITED capability devices
17628(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
17629the HAL only has to list up to the maximum video size
17630supported by the device.<wbr/></p>
17631<p>Regardless of hardware level,<wbr/> every output resolution available for
17632YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
17633<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
17634<ul>
17635<li>availableFormats</li>
17636<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
17637</ul>
17638            </td>
17639          </tr>
17640
17641          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17642           <!-- end of entry -->
17643
17644
17645          <tr class="entry" id="static_android.scaler.croppingType">
17646            <td class="entry_name
17647             " rowspan="3">
17648              android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
17649            </td>
17650            <td class="entry_type">
17651                <span class="entry_type_name entry_type_name_enum">byte</span>
17652
17653              <span class="entry_type_visibility"> [public]</span>
17654
17655
17656              <span class="entry_type_hwlevel">[legacy] </span>
17657
17658
17659
17660                <ul class="entry_type_enum">
17661                  <li>
17662                    <span class="entry_type_enum_name">CENTER_ONLY</span>
17663                    <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
17664                  </li>
17665                  <li>
17666                    <span class="entry_type_enum_name">FREEFORM</span>
17667                    <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
17668                  </li>
17669                </ul>
17670
17671            </td> <!-- entry_type -->
17672
17673            <td class="entry_description">
17674              <p>The crop type that this camera device supports.<wbr/></p>
17675            </td>
17676
17677            <td class="entry_units">
17678            </td>
17679
17680            <td class="entry_range">
17681            </td>
17682
17683            <td class="entry_tags">
17684            </td>
17685
17686          </tr>
17687          <tr class="entries_header">
17688            <th class="th_details" colspan="5">Details</th>
17689          </tr>
17690          <tr class="entry_cont">
17691            <td class="entry_details" colspan="5">
17692              <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
17693device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
17694crop 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>)
17695and keep the crop region width and height unchanged.<wbr/> The camera device will return the
17696final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
17697<p>Camera devices that support FREEFORM cropping will support any crop region that
17698is inside of the active array.<wbr/> The camera device will apply the same crop region and
17699return 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>
17700<p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
17701            </td>
17702          </tr>
17703
17704
17705          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17706           <!-- end of entry -->
17707
17708
17709
17710      <!-- end of kind -->
17711      </tbody>
17712      <tr><td colspan="6" class="kind">dynamic</td></tr>
17713
17714      <thead class="entries_header">
17715        <tr>
17716          <th class="th_name">Property Name</th>
17717          <th class="th_type">Type</th>
17718          <th class="th_description">Description</th>
17719          <th class="th_units">Units</th>
17720          <th class="th_range">Range</th>
17721          <th class="th_tags">Tags</th>
17722        </tr>
17723      </thead>
17724
17725      <tbody>
17726
17727
17728
17729
17730
17731
17732
17733
17734
17735
17736          <tr class="entry" id="dynamic_android.scaler.cropRegion">
17737            <td class="entry_name
17738             " rowspan="5">
17739              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
17740            </td>
17741            <td class="entry_type">
17742                <span class="entry_type_name">int32</span>
17743                <span class="entry_type_container">x</span>
17744
17745                <span class="entry_type_array">
17746                  4
17747                </span>
17748              <span class="entry_type_visibility"> [public as rectangle]</span>
17749
17750
17751              <span class="entry_type_hwlevel">[legacy] </span>
17752
17753
17754
17755
17756            </td> <!-- entry_type -->
17757
17758            <td class="entry_description">
17759              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
17760            </td>
17761
17762            <td class="entry_units">
17763              Pixel coordinates relative to
17764          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
17765            </td>
17766
17767            <td class="entry_range">
17768            </td>
17769
17770            <td class="entry_tags">
17771              <ul class="entry_tags">
17772                  <li><a href="#tag_BC">BC</a></li>
17773              </ul>
17774            </td>
17775
17776          </tr>
17777          <tr class="entries_header">
17778            <th class="th_details" colspan="5">Details</th>
17779          </tr>
17780          <tr class="entry_cont">
17781            <td class="entry_details" colspan="5">
17782              <p>This control can be used to implement digital zoom.<wbr/></p>
17783<p>The crop region coordinate system is based off
17784<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
17785top-left corner of the sensor active array.<wbr/></p>
17786<p>Output streams use this rectangle to produce their output,<wbr/>
17787cropping to a smaller region if necessary to maintain the
17788stream's aspect ratio,<wbr/> then scaling the sensor input to
17789match the output's configured resolution.<wbr/></p>
17790<p>The crop region is applied after the RAW to other color
17791space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
17792(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
17793croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
17794<p>For non-raw streams,<wbr/> any additional per-stream cropping will
17795be done to maximize the final pixel area of the stream.<wbr/></p>
17796<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
17797ratio,<wbr/> then 4:3 streams will use the exact crop
17798region.<wbr/> 16:9 streams will further crop vertically
17799(letterbox).<wbr/></p>
17800<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
17801outputs will crop horizontally (pillarbox),<wbr/> and 16:9
17802streams will match exactly.<wbr/> These additional crops will
17803be centered within the crop region.<wbr/></p>
17804<p>The width and height of the crop region cannot
17805be set to be smaller than
17806<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
17807<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>
17808<p>The camera device may adjust the crop region to account
17809for rounding and other hardware requirements; the final
17810crop region used will be included in the output capture
17811result.<wbr/></p>
17812            </td>
17813          </tr>
17814
17815          <tr class="entries_header">
17816            <th class="th_details" colspan="5">HAL Implementation Details</th>
17817          </tr>
17818          <tr class="entry_cont">
17819            <td class="entry_details" colspan="5">
17820              <p>The output streams must maintain square pixels at all
17821times,<wbr/> no matter what the relative aspect ratios of the
17822crop region and the stream are.<wbr/>  Negative values for
17823corner are allowed for raw output if full pixel array is
17824larger than active pixel array.<wbr/> Width and height may be
17825rounded to nearest larger supportable width,<wbr/> especially
17826for raw output,<wbr/> where only a few fixed scales may be
17827possible.<wbr/></p>
17828<p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
17829size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
17830<ul>
17831<li>
17832<p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
17833array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
17834<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>
17835<ol>
17836<li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
17837cropped pixel area by (tx,<wbr/> ty),<wbr/>
17838where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
17839and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
17840(sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
17841<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
17842<li>Scale the width and height of requested cropRegion with scaling factor of
17843sensor<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
17844respectively.<wbr/>
17845Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
17846with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
17847follow the general cropping rule for this new cropRegion and effective active
17848array size.<wbr/></li>
17849</ol>
17850</li>
17851<li>
17852<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/>
17853The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
17854The reported cropRegion may be slightly different with the requested cropRegion since
17855the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
17856hardware limitations.<wbr/></p>
17857</li>
17858</ul>
17859<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
17860            </td>
17861          </tr>
17862
17863          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17864           <!-- end of entry -->
17865
17866
17867
17868      <!-- end of kind -->
17869      </tbody>
17870
17871  <!-- end of section -->
17872  <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr>
17873
17874
17875      <tr><td colspan="6" class="kind">controls</td></tr>
17876
17877      <thead class="entries_header">
17878        <tr>
17879          <th class="th_name">Property Name</th>
17880          <th class="th_type">Type</th>
17881          <th class="th_description">Description</th>
17882          <th class="th_units">Units</th>
17883          <th class="th_range">Range</th>
17884          <th class="th_tags">Tags</th>
17885        </tr>
17886      </thead>
17887
17888      <tbody>
17889
17890
17891
17892
17893
17894
17895
17896
17897
17898
17899          <tr class="entry" id="controls_android.sensor.exposureTime">
17900            <td class="entry_name
17901             " rowspan="3">
17902              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
17903            </td>
17904            <td class="entry_type">
17905                <span class="entry_type_name">int64</span>
17906
17907              <span class="entry_type_visibility"> [public]</span>
17908
17909
17910              <span class="entry_type_hwlevel">[full] </span>
17911
17912
17913
17914
17915            </td> <!-- entry_type -->
17916
17917            <td class="entry_description">
17918              <p>Duration each pixel is exposed to
17919light.<wbr/></p>
17920            </td>
17921
17922            <td class="entry_units">
17923              Nanoseconds
17924            </td>
17925
17926            <td class="entry_range">
17927              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
17928            </td>
17929
17930            <td class="entry_tags">
17931              <ul class="entry_tags">
17932                  <li><a href="#tag_V1">V1</a></li>
17933              </ul>
17934            </td>
17935
17936          </tr>
17937          <tr class="entries_header">
17938            <th class="th_details" colspan="5">Details</th>
17939          </tr>
17940          <tr class="entry_cont">
17941            <td class="entry_details" colspan="5">
17942              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
17943duration exposed to the nearest possible value (rather than expose longer).<wbr/>
17944The final exposure time used will be available in the output capture result.<wbr/></p>
17945<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
17946OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
17947            </td>
17948          </tr>
17949
17950
17951          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17952           <!-- end of entry -->
17953
17954
17955          <tr class="entry" id="controls_android.sensor.frameDuration">
17956            <td class="entry_name
17957             " rowspan="5">
17958              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
17959            </td>
17960            <td class="entry_type">
17961                <span class="entry_type_name">int64</span>
17962
17963              <span class="entry_type_visibility"> [public]</span>
17964
17965
17966              <span class="entry_type_hwlevel">[full] </span>
17967
17968
17969
17970
17971            </td> <!-- entry_type -->
17972
17973            <td class="entry_description">
17974              <p>Duration from start of frame exposure to
17975start of next frame exposure.<wbr/></p>
17976            </td>
17977
17978            <td class="entry_units">
17979              Nanoseconds
17980            </td>
17981
17982            <td class="entry_range">
17983              <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
17984<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
17985is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
17986            </td>
17987
17988            <td class="entry_tags">
17989              <ul class="entry_tags">
17990                  <li><a href="#tag_V1">V1</a></li>
17991              </ul>
17992            </td>
17993
17994          </tr>
17995          <tr class="entries_header">
17996            <th class="th_details" colspan="5">Details</th>
17997          </tr>
17998          <tr class="entry_cont">
17999            <td class="entry_details" colspan="5">
18000              <p>The maximum frame rate that can be supported by a camera subsystem is
18001a function of many factors:</p>
18002<ul>
18003<li>Requested resolutions of output image streams</li>
18004<li>Availability of binning /<wbr/> skipping modes on the imager</li>
18005<li>The bandwidth of the imager interface</li>
18006<li>The bandwidth of the various ISP processing blocks</li>
18007</ul>
18008<p>Since these factors can vary greatly between different ISPs and
18009sensors,<wbr/> the camera abstraction tries to represent the bandwidth
18010restrictions with as simple a model as possible.<wbr/></p>
18011<p>The model presented has the following characteristics:</p>
18012<ul>
18013<li>The image sensor is always configured to output the smallest
18014resolution possible given the application's requested output stream
18015sizes.<wbr/>  The smallest resolution is defined as being at least as large
18016as the largest requested output stream size; the camera pipeline must
18017never digitally upsample sensor data when the crop region covers the
18018whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
18019resolutions are configured,<wbr/> the sensor can provide a higher frame
18020rate.<wbr/></li>
18021<li>Since any request may use any or all the currently configured
18022output streams,<wbr/> the sensor and ISP must be configured to support
18023scaling a single capture to all the streams at the same time.<wbr/>  This
18024means the camera pipeline must be ready to produce the largest
18025requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
18026frame rate of a given configured stream set is governed only by the
18027largest requested stream resolution.<wbr/></li>
18028<li>Using more than one output stream in a request does not affect the
18029frame duration.<wbr/></li>
18030<li>Certain format-streams may need to do additional background processing
18031before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
18032can run concurrently to the rest of the camera pipeline,<wbr/> but
18033cannot process more than 1 capture at a time.<wbr/></li>
18034</ul>
18035<p>The necessary information for the application,<wbr/> given the model above,<wbr/>
18036is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
18037<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
18038These are used to determine the maximum frame rate /<wbr/> minimum frame
18039duration that is possible for a given stream configuration.<wbr/></p>
18040<p>Specifically,<wbr/> the application can use the following rules to
18041determine the minimum frame duration it can request from the camera
18042device:</p>
18043<ol>
18044<li>Let the set of currently configured input/<wbr/>output streams
18045be called <code>S</code>.<wbr/></li>
18046<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
18047it 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>
18048(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
18049called <code>F</code>.<wbr/></li>
18050<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
18051for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
18052used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
18053</ol>
18054<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>
18055using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
18056determines the steady state frame rate that the application will get
18057if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
18058request be called <code>Rsimple</code>.<wbr/></p>
18059<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
18060by a single capture of a new request <code>Rstall</code> (which has at least
18061one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
18062same minimum frame duration this will not cause a frame rate loss
18063if all buffers from the previous <code>Rstall</code> have already been
18064delivered.<wbr/></p>
18065<p>For more details about stalling,<wbr/> see
18066<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
18067<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
18068OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
18069            </td>
18070          </tr>
18071
18072          <tr class="entries_header">
18073            <th class="th_details" colspan="5">HAL Implementation Details</th>
18074          </tr>
18075          <tr class="entry_cont">
18076            <td class="entry_details" colspan="5">
18077              <p>For more details about stalling,<wbr/> see
18078<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
18079            </td>
18080          </tr>
18081
18082          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18083           <!-- end of entry -->
18084
18085
18086          <tr class="entry" id="controls_android.sensor.sensitivity">
18087            <td class="entry_name
18088             " rowspan="5">
18089              android.<wbr/>sensor.<wbr/>sensitivity
18090            </td>
18091            <td class="entry_type">
18092                <span class="entry_type_name">int32</span>
18093
18094              <span class="entry_type_visibility"> [public]</span>
18095
18096
18097              <span class="entry_type_hwlevel">[full] </span>
18098
18099
18100
18101
18102            </td> <!-- entry_type -->
18103
18104            <td class="entry_description">
18105              <p>The amount of gain applied to sensor data
18106before processing.<wbr/></p>
18107            </td>
18108
18109            <td class="entry_units">
18110              ISO arithmetic units
18111            </td>
18112
18113            <td class="entry_range">
18114              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
18115            </td>
18116
18117            <td class="entry_tags">
18118              <ul class="entry_tags">
18119                  <li><a href="#tag_V1">V1</a></li>
18120              </ul>
18121            </td>
18122
18123          </tr>
18124          <tr class="entries_header">
18125            <th class="th_details" colspan="5">Details</th>
18126          </tr>
18127          <tr class="entry_cont">
18128            <td class="entry_details" colspan="5">
18129              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
18130as defined in ISO 12232:2006.<wbr/></p>
18131<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
18132if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
18133is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
18134<p>If the camera device cannot apply the exact sensitivity
18135requested,<wbr/> it will reduce the gain to the nearest supported
18136value.<wbr/> The final sensitivity used will be available in the
18137output capture result.<wbr/></p>
18138            </td>
18139          </tr>
18140
18141          <tr class="entries_header">
18142            <th class="th_details" colspan="5">HAL Implementation Details</th>
18143          </tr>
18144          <tr class="entry_cont">
18145            <td class="entry_details" colspan="5">
18146              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
18147            </td>
18148          </tr>
18149
18150          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18151           <!-- end of entry -->
18152
18153
18154          <tr class="entry" id="controls_android.sensor.testPatternData">
18155            <td class="entry_name
18156             " rowspan="5">
18157              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
18158            </td>
18159            <td class="entry_type">
18160                <span class="entry_type_name">int32</span>
18161                <span class="entry_type_container">x</span>
18162
18163                <span class="entry_type_array">
18164                  4
18165                </span>
18166              <span class="entry_type_visibility"> [public]</span>
18167
18168
18169
18170
18171
18172
18173            </td> <!-- entry_type -->
18174
18175            <td class="entry_description">
18176              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
18177when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
18178            </td>
18179
18180            <td class="entry_units">
18181            </td>
18182
18183            <td class="entry_range">
18184            </td>
18185
18186            <td class="entry_tags">
18187            </td>
18188
18189          </tr>
18190          <tr class="entries_header">
18191            <th class="th_details" colspan="5">Details</th>
18192          </tr>
18193          <tr class="entry_cont">
18194            <td class="entry_details" colspan="5">
18195              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
18196The camera device then uses the most significant X bits
18197that correspond to how many bits are in its Bayer raw sensor
18198output.<wbr/></p>
18199<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
1820010 most significant bits from each color channel.<wbr/></p>
18201            </td>
18202          </tr>
18203
18204          <tr class="entries_header">
18205            <th class="th_details" colspan="5">HAL Implementation Details</th>
18206          </tr>
18207          <tr class="entry_cont">
18208            <td class="entry_details" colspan="5">
18209
18210            </td>
18211          </tr>
18212
18213          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18214           <!-- end of entry -->
18215
18216
18217          <tr class="entry" id="controls_android.sensor.testPatternMode">
18218            <td class="entry_name
18219             " rowspan="5">
18220              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
18221            </td>
18222            <td class="entry_type">
18223                <span class="entry_type_name entry_type_name_enum">int32</span>
18224
18225              <span class="entry_type_visibility"> [public]</span>
18226
18227
18228
18229
18230
18231                <ul class="entry_type_enum">
18232                  <li>
18233                    <span class="entry_type_enum_name">OFF</span>
18234                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
18235device returns captures from the image sensor.<wbr/></p>
18236<p>This is the default if the key is not set.<wbr/></p></span>
18237                  </li>
18238                  <li>
18239                    <span class="entry_type_enum_name">SOLID_COLOR</span>
18240                    <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
18241respective color channel provided in
18242<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
18243<p>For example:</p>
18244<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
18245</code></pre>
18246<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
18247<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
18248</code></pre>
18249<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
18250are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
18251                  </li>
18252                  <li>
18253                    <span class="entry_type_enum_name">COLOR_BARS</span>
18254                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
18255<p>The vertical bars (left-to-right) are as follows:</p>
18256<ul>
18257<li>100% white</li>
18258<li>yellow</li>
18259<li>cyan</li>
18260<li>green</li>
18261<li>magenta</li>
18262<li>red</li>
18263<li>blue</li>
18264<li>black</li>
18265</ul>
18266<p>In general the image would look like the following:</p>
18267<pre><code>W Y C G M R B K
18268W Y C G M R B K
18269W Y C G M R B K
18270W Y C G M R B K
18271W Y C G M R B K
18272.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18273.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18274.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18275
18276(B = Blue,<wbr/> K = Black)
18277</code></pre>
18278<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
18279When this is not possible,<wbr/> the bar size should be rounded
18280down to the nearest integer and the pattern can repeat
18281on the right side.<wbr/></p>
18282<p>Each bar's height must always take up the full sensor
18283pixel array height.<wbr/></p>
18284<p>Each pixel in this test pattern must be set to either
182850% intensity or 100% intensity.<wbr/></p></span>
18286                  </li>
18287                  <li>
18288                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
18289                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
18290each bar should start at its specified color at the top,<wbr/>
18291and fade to gray at the bottom.<wbr/></p>
18292<p>Furthermore each bar is further subdivided into a left and
18293right half.<wbr/> The left half should have a smooth gradient,<wbr/>
18294and the right half should have a quantized gradient.<wbr/></p>
18295<p>In particular,<wbr/> the right half's should consist of blocks of the
18296same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
18297<p>The least significant bits in the quantized gradient should
18298be copied from the most significant bits of the smooth gradient.<wbr/></p>
18299<p>The height of each bar should always be a multiple of 128.<wbr/>
18300When this is not the case,<wbr/> the pattern should repeat at the bottom
18301of the image.<wbr/></p></span>
18302                  </li>
18303                  <li>
18304                    <span class="entry_type_enum_name">PN9</span>
18305                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
18306generated from a PN9 512-bit sequence (typically implemented
18307in hardware with a linear feedback shift register).<wbr/></p>
18308<p>The generator should be reset at the beginning of each frame,<wbr/>
18309and thus each subsequent raw frame with this test pattern should
18310be exactly the same as the last.<wbr/></p></span>
18311                  </li>
18312                  <li>
18313                    <span class="entry_type_enum_name">CUSTOM1</span>
18314                    <span class="entry_type_enum_value">256</span>
18315                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
18316available only on this camera device are at least this numeric
18317value.<wbr/></p>
18318<p>All of the custom test patterns will be static
18319(that is the raw image must not vary from frame to frame).<wbr/></p></span>
18320                  </li>
18321                </ul>
18322
18323            </td> <!-- entry_type -->
18324
18325            <td class="entry_description">
18326              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
18327doing a real exposure from the camera.<wbr/></p>
18328            </td>
18329
18330            <td class="entry_units">
18331            </td>
18332
18333            <td class="entry_range">
18334              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
18335            </td>
18336
18337            <td class="entry_tags">
18338            </td>
18339
18340          </tr>
18341          <tr class="entries_header">
18342            <th class="th_details" colspan="5">Details</th>
18343          </tr>
18344          <tr class="entry_cont">
18345            <td class="entry_details" colspan="5">
18346              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
18347by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
18348work as normal.<wbr/></p>
18349<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
18350occur (and that the test pattern remain unmodified,<wbr/> since the flash
18351would not actually affect it).<wbr/></p>
18352<p>Defaults to OFF.<wbr/></p>
18353            </td>
18354          </tr>
18355
18356          <tr class="entries_header">
18357            <th class="th_details" colspan="5">HAL Implementation Details</th>
18358          </tr>
18359          <tr class="entry_cont">
18360            <td class="entry_details" colspan="5">
18361              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
18362<p>The HAL may choose to substitute test patterns from the sensor
18363with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
18364indistinguishable to the ISP whether the data came from the
18365sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
18366            </td>
18367          </tr>
18368
18369          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18370           <!-- end of entry -->
18371
18372
18373
18374      <!-- end of kind -->
18375      </tbody>
18376      <tr><td colspan="6" class="kind">static</td></tr>
18377
18378      <thead class="entries_header">
18379        <tr>
18380          <th class="th_name">Property Name</th>
18381          <th class="th_type">Type</th>
18382          <th class="th_description">Description</th>
18383          <th class="th_units">Units</th>
18384          <th class="th_range">Range</th>
18385          <th class="th_tags">Tags</th>
18386        </tr>
18387      </thead>
18388
18389      <tbody>
18390
18391
18392
18393
18394
18395
18396
18397
18398
18399
18400
18401
18402          <tr class="entry" id="static_android.sensor.info.activeArraySize">
18403            <td class="entry_name
18404             " rowspan="5">
18405              android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
18406            </td>
18407            <td class="entry_type">
18408                <span class="entry_type_name">int32</span>
18409                <span class="entry_type_container">x</span>
18410
18411                <span class="entry_type_array">
18412                  4
18413                </span>
18414              <span class="entry_type_visibility"> [public as rectangle]</span>
18415
18416
18417              <span class="entry_type_hwlevel">[legacy] </span>
18418
18419
18420                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
18421
18422
18423            </td> <!-- entry_type -->
18424
18425            <td class="entry_description">
18426              <p>The area of the image sensor which corresponds to active pixels after any geometric
18427distortion correction has been applied.<wbr/></p>
18428            </td>
18429
18430            <td class="entry_units">
18431              Pixel coordinates on the image sensor
18432            </td>
18433
18434            <td class="entry_range">
18435            </td>
18436
18437            <td class="entry_tags">
18438              <ul class="entry_tags">
18439                  <li><a href="#tag_RAW">RAW</a></li>
18440              </ul>
18441            </td>
18442
18443          </tr>
18444          <tr class="entries_header">
18445            <th class="th_details" colspan="5">Details</th>
18446          </tr>
18447          <tr class="entry_cont">
18448            <td class="entry_details" colspan="5">
18449              <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
18450the region that actually receives light from the scene) after any geometric correction
18451has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
18452image output formats aside from the raw formats.<wbr/></p>
18453<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
18454the full pixel array,<wbr/> and the size of the full pixel array is given by
18455<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
18456<p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
18457<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
18458this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
18459<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
18460include black calibration pixels or other inactive regions,<wbr/> and geometric correction
18461resulting in scaling or cropping may have been applied.<wbr/></p>
18462            </td>
18463          </tr>
18464
18465          <tr class="entries_header">
18466            <th class="th_details" colspan="5">HAL Implementation Details</th>
18467          </tr>
18468          <tr class="entry_cont">
18469            <td class="entry_details" colspan="5">
18470              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
18471&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
18472The <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>
18473            </td>
18474          </tr>
18475
18476          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18477           <!-- end of entry -->
18478
18479
18480          <tr class="entry" id="static_android.sensor.info.sensitivityRange">
18481            <td class="entry_name
18482             " rowspan="3">
18483              android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
18484            </td>
18485            <td class="entry_type">
18486                <span class="entry_type_name">int32</span>
18487                <span class="entry_type_container">x</span>
18488
18489                <span class="entry_type_array">
18490                  2
18491                </span>
18492              <span class="entry_type_visibility"> [public as rangeInt]</span>
18493
18494
18495              <span class="entry_type_hwlevel">[full] </span>
18496
18497
18498                <div class="entry_type_notes">Range of supported sensitivities</div>
18499
18500
18501            </td> <!-- entry_type -->
18502
18503            <td class="entry_description">
18504              <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
18505camera device.<wbr/></p>
18506            </td>
18507
18508            <td class="entry_units">
18509            </td>
18510
18511            <td class="entry_range">
18512              <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
18513            </td>
18514
18515            <td class="entry_tags">
18516              <ul class="entry_tags">
18517                  <li><a href="#tag_BC">BC</a></li>
18518                  <li><a href="#tag_V1">V1</a></li>
18519              </ul>
18520            </td>
18521
18522          </tr>
18523          <tr class="entries_header">
18524            <th class="th_details" colspan="5">Details</th>
18525          </tr>
18526          <tr class="entry_cont">
18527            <td class="entry_details" colspan="5">
18528              <p>The values are the standard ISO sensitivity values,<wbr/>
18529as defined in ISO 12232:2006.<wbr/></p>
18530            </td>
18531          </tr>
18532
18533
18534          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18535           <!-- end of entry -->
18536
18537
18538          <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
18539            <td class="entry_name
18540             " rowspan="1">
18541              android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
18542            </td>
18543            <td class="entry_type">
18544                <span class="entry_type_name entry_type_name_enum">byte</span>
18545
18546              <span class="entry_type_visibility"> [public]</span>
18547
18548
18549              <span class="entry_type_hwlevel">[full] </span>
18550
18551
18552
18553                <ul class="entry_type_enum">
18554                  <li>
18555                    <span class="entry_type_enum_name">RGGB</span>
18556                  </li>
18557                  <li>
18558                    <span class="entry_type_enum_name">GRBG</span>
18559                  </li>
18560                  <li>
18561                    <span class="entry_type_enum_name">GBRG</span>
18562                  </li>
18563                  <li>
18564                    <span class="entry_type_enum_name">BGGR</span>
18565                  </li>
18566                  <li>
18567                    <span class="entry_type_enum_name">RGB</span>
18568                    <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
18569values for each pixel,<wbr/> instead of just 1 16-bit value
18570per pixel.<wbr/></p></span>
18571                  </li>
18572                </ul>
18573
18574            </td> <!-- entry_type -->
18575
18576            <td class="entry_description">
18577              <p>The arrangement of color filters on sensor;
18578represents the colors in the top-left 2x2 section of
18579the sensor,<wbr/> in reading order.<wbr/></p>
18580            </td>
18581
18582            <td class="entry_units">
18583            </td>
18584
18585            <td class="entry_range">
18586            </td>
18587
18588            <td class="entry_tags">
18589              <ul class="entry_tags">
18590                  <li><a href="#tag_RAW">RAW</a></li>
18591              </ul>
18592            </td>
18593
18594          </tr>
18595
18596
18597          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18598           <!-- end of entry -->
18599
18600
18601          <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
18602            <td class="entry_name
18603             " rowspan="3">
18604              android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
18605            </td>
18606            <td class="entry_type">
18607                <span class="entry_type_name">int64</span>
18608                <span class="entry_type_container">x</span>
18609
18610                <span class="entry_type_array">
18611                  2
18612                </span>
18613              <span class="entry_type_visibility"> [public as rangeLong]</span>
18614
18615
18616              <span class="entry_type_hwlevel">[full] </span>
18617
18618
18619                <div class="entry_type_notes">nanoseconds</div>
18620
18621
18622            </td> <!-- entry_type -->
18623
18624            <td class="entry_description">
18625              <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
18626by this camera device.<wbr/></p>
18627            </td>
18628
18629            <td class="entry_units">
18630              Nanoseconds
18631            </td>
18632
18633            <td class="entry_range">
18634              <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
18635capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18636the maximum exposure time will be greater than 100ms.<wbr/></p>
18637            </td>
18638
18639            <td class="entry_tags">
18640              <ul class="entry_tags">
18641                  <li><a href="#tag_V1">V1</a></li>
18642              </ul>
18643            </td>
18644
18645          </tr>
18646
18647          <tr class="entries_header">
18648            <th class="th_details" colspan="5">HAL Implementation Details</th>
18649          </tr>
18650          <tr class="entry_cont">
18651            <td class="entry_details" colspan="5">
18652              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18653The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
18654100ms.<wbr/></p>
18655            </td>
18656          </tr>
18657
18658          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18659           <!-- end of entry -->
18660
18661
18662          <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
18663            <td class="entry_name
18664             " rowspan="5">
18665              android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
18666            </td>
18667            <td class="entry_type">
18668                <span class="entry_type_name">int64</span>
18669
18670              <span class="entry_type_visibility"> [public]</span>
18671
18672
18673              <span class="entry_type_hwlevel">[full] </span>
18674
18675
18676
18677
18678            </td> <!-- entry_type -->
18679
18680            <td class="entry_description">
18681              <p>The maximum possible frame duration (minimum frame rate) for
18682<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
18683            </td>
18684
18685            <td class="entry_units">
18686              Nanoseconds
18687            </td>
18688
18689            <td class="entry_range">
18690              <p>For FULL capability devices
18691(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
18692            </td>
18693
18694            <td class="entry_tags">
18695              <ul class="entry_tags">
18696                  <li><a href="#tag_V1">V1</a></li>
18697              </ul>
18698            </td>
18699
18700          </tr>
18701          <tr class="entries_header">
18702            <th class="th_details" colspan="5">Details</th>
18703          </tr>
18704          <tr class="entry_cont">
18705            <td class="entry_details" colspan="5">
18706              <p>Attempting to use frame durations beyond the maximum will result in the frame
18707duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
18708durations.<wbr/></p>
18709<p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
18710for the minimum frame duration values.<wbr/></p>
18711            </td>
18712          </tr>
18713
18714          <tr class="entries_header">
18715            <th class="th_details" colspan="5">HAL Implementation Details</th>
18716          </tr>
18717          <tr class="entry_cont">
18718            <td class="entry_details" colspan="5">
18719              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18720The maximum of the range SHOULD be at least
187211 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
18722<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
18723equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
18724value (since exposure time overrides frame duration).<wbr/></p>
18725<p>Available minimum frame durations for JPEG must be no greater
18726than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
18727minimum frame durations (for that respective size).<wbr/></p>
18728<p>Since JPEG processing is considered offline and can take longer than
18729a single uncompressed capture,<wbr/> refer to
18730<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
18731for details about encoding this scenario.<wbr/></p>
18732            </td>
18733          </tr>
18734
18735          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18736           <!-- end of entry -->
18737
18738
18739          <tr class="entry" id="static_android.sensor.info.physicalSize">
18740            <td class="entry_name
18741             " rowspan="5">
18742              android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
18743            </td>
18744            <td class="entry_type">
18745                <span class="entry_type_name">float</span>
18746                <span class="entry_type_container">x</span>
18747
18748                <span class="entry_type_array">
18749                  2
18750                </span>
18751              <span class="entry_type_visibility"> [public as sizeF]</span>
18752
18753
18754              <span class="entry_type_hwlevel">[legacy] </span>
18755
18756
18757                <div class="entry_type_notes">width x height</div>
18758
18759
18760            </td> <!-- entry_type -->
18761
18762            <td class="entry_description">
18763              <p>The physical dimensions of the full pixel
18764array.<wbr/></p>
18765            </td>
18766
18767            <td class="entry_units">
18768              Millimeters
18769            </td>
18770
18771            <td class="entry_range">
18772            </td>
18773
18774            <td class="entry_tags">
18775              <ul class="entry_tags">
18776                  <li><a href="#tag_V1">V1</a></li>
18777                  <li><a href="#tag_BC">BC</a></li>
18778              </ul>
18779            </td>
18780
18781          </tr>
18782          <tr class="entries_header">
18783            <th class="th_details" colspan="5">Details</th>
18784          </tr>
18785          <tr class="entry_cont">
18786            <td class="entry_details" colspan="5">
18787              <p>This is the physical size of the sensor pixel
18788array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
18789            </td>
18790          </tr>
18791
18792          <tr class="entries_header">
18793            <th class="th_details" colspan="5">HAL Implementation Details</th>
18794          </tr>
18795          <tr class="entry_cont">
18796            <td class="entry_details" colspan="5">
18797              <p>Needed for FOV calculation for old API</p>
18798            </td>
18799          </tr>
18800
18801          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18802           <!-- end of entry -->
18803
18804
18805          <tr class="entry" id="static_android.sensor.info.pixelArraySize">
18806            <td class="entry_name
18807             " rowspan="3">
18808              android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
18809            </td>
18810            <td class="entry_type">
18811                <span class="entry_type_name">int32</span>
18812                <span class="entry_type_container">x</span>
18813
18814                <span class="entry_type_array">
18815                  2
18816                </span>
18817              <span class="entry_type_visibility"> [public as size]</span>
18818
18819
18820              <span class="entry_type_hwlevel">[legacy] </span>
18821
18822
18823
18824
18825            </td> <!-- entry_type -->
18826
18827            <td class="entry_description">
18828              <p>Dimensions of the full pixel array,<wbr/> possibly
18829including black calibration pixels.<wbr/></p>
18830            </td>
18831
18832            <td class="entry_units">
18833              Pixels
18834            </td>
18835
18836            <td class="entry_range">
18837            </td>
18838
18839            <td class="entry_tags">
18840              <ul class="entry_tags">
18841                  <li><a href="#tag_RAW">RAW</a></li>
18842                  <li><a href="#tag_BC">BC</a></li>
18843              </ul>
18844            </td>
18845
18846          </tr>
18847          <tr class="entries_header">
18848            <th class="th_details" colspan="5">Details</th>
18849          </tr>
18850          <tr class="entry_cont">
18851            <td class="entry_details" colspan="5">
18852              <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
18853<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
18854the raw buffers produced by this sensor.<wbr/></p>
18855<p>If a camera device supports raw sensor formats,<wbr/> either this or
18856<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
18857output formats listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> (this depends on
18858whether or not the image sensor returns buffers containing pixels that are not
18859part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
18860<p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
18861or 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
18862defines the rectangle of active pixels that will be included in processed image
18863formats.<wbr/></p>
18864            </td>
18865          </tr>
18866
18867
18868          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18869           <!-- end of entry -->
18870
18871
18872          <tr class="entry" id="static_android.sensor.info.whiteLevel">
18873            <td class="entry_name
18874             " rowspan="5">
18875              android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
18876            </td>
18877            <td class="entry_type">
18878                <span class="entry_type_name">int32</span>
18879
18880              <span class="entry_type_visibility"> [public]</span>
18881
18882
18883
18884
18885
18886
18887            </td> <!-- entry_type -->
18888
18889            <td class="entry_description">
18890              <p>Maximum raw value output by sensor.<wbr/></p>
18891            </td>
18892
18893            <td class="entry_units">
18894            </td>
18895
18896            <td class="entry_range">
18897              <p>&gt; 255 (8-bit output)</p>
18898            </td>
18899
18900            <td class="entry_tags">
18901              <ul class="entry_tags">
18902                  <li><a href="#tag_RAW">RAW</a></li>
18903              </ul>
18904            </td>
18905
18906          </tr>
18907          <tr class="entries_header">
18908            <th class="th_details" colspan="5">Details</th>
18909          </tr>
18910          <tr class="entry_cont">
18911            <td class="entry_details" colspan="5">
18912              <p>This specifies the fully-saturated encoding level for the raw
18913sample values from the sensor.<wbr/>  This is typically caused by the
18914sensor becoming highly non-linear or clipping.<wbr/> The minimum for
18915each channel is specified by the offset in the
18916<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
18917<p>The white level is typically determined either by sensor bit depth
18918(8-14 bits is expected),<wbr/> or by the point where the sensor response
18919becomes too non-linear to be useful.<wbr/>  The default value for this is
18920maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
18921            </td>
18922          </tr>
18923
18924          <tr class="entries_header">
18925            <th class="th_details" colspan="5">HAL Implementation Details</th>
18926          </tr>
18927          <tr class="entry_cont">
18928            <td class="entry_details" colspan="5">
18929              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
18930so the value for linear sensors should not be significantly lower
18931than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
18932            </td>
18933          </tr>
18934
18935          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18936           <!-- end of entry -->
18937
18938
18939          <tr class="entry" id="static_android.sensor.info.timestampSource">
18940            <td class="entry_name
18941             " rowspan="3">
18942              android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
18943            </td>
18944            <td class="entry_type">
18945                <span class="entry_type_name entry_type_name_enum">byte</span>
18946
18947              <span class="entry_type_visibility"> [public]</span>
18948
18949
18950              <span class="entry_type_hwlevel">[legacy] </span>
18951
18952
18953
18954                <ul class="entry_type_enum">
18955                  <li>
18956                    <span class="entry_type_enum_name">UNKNOWN</span>
18957                    <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/>
18958but can not be compared to timestamps from other subsystems
18959(e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
18960camera devices in the same system.<wbr/> Timestamps between streams and results for
18961a single camera instance are comparable,<wbr/> and the timestamps for all buffers
18962and the result metadata generated by a single capture are identical.<wbr/></p></span>
18963                  </li>
18964                  <li>
18965                    <span class="entry_type_enum_name">REALTIME</span>
18966                    <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
18967<a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
18968and they can be compared to other timestamps using that base.<wbr/></p></span>
18969                  </li>
18970                </ul>
18971
18972            </td> <!-- entry_type -->
18973
18974            <td class="entry_description">
18975              <p>The time base source for sensor capture start timestamps.<wbr/></p>
18976            </td>
18977
18978            <td class="entry_units">
18979            </td>
18980
18981            <td class="entry_range">
18982            </td>
18983
18984            <td class="entry_tags">
18985              <ul class="entry_tags">
18986                  <li><a href="#tag_V1">V1</a></li>
18987              </ul>
18988            </td>
18989
18990          </tr>
18991          <tr class="entries_header">
18992            <th class="th_details" colspan="5">Details</th>
18993          </tr>
18994          <tr class="entry_cont">
18995            <td class="entry_details" colspan="5">
18996              <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
18997may not based on a time source that can be compared to other system time sources.<wbr/></p>
18998<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
18999can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
19000            </td>
19001          </tr>
19002
19003
19004          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19005           <!-- end of entry -->
19006
19007
19008          <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
19009            <td class="entry_name
19010             " rowspan="3">
19011              android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
19012            </td>
19013            <td class="entry_type">
19014                <span class="entry_type_name entry_type_name_enum">byte</span>
19015
19016              <span class="entry_type_visibility"> [public as boolean]</span>
19017
19018
19019
19020
19021
19022                <ul class="entry_type_enum">
19023                  <li>
19024                    <span class="entry_type_enum_name">FALSE</span>
19025                  </li>
19026                  <li>
19027                    <span class="entry_type_enum_name">TRUE</span>
19028                  </li>
19029                </ul>
19030
19031            </td> <!-- entry_type -->
19032
19033            <td class="entry_description">
19034              <p>Whether the RAW images output from this camera device are subject to
19035lens shading correction.<wbr/></p>
19036            </td>
19037
19038            <td class="entry_units">
19039            </td>
19040
19041            <td class="entry_range">
19042            </td>
19043
19044            <td class="entry_tags">
19045            </td>
19046
19047          </tr>
19048          <tr class="entries_header">
19049            <th class="th_details" colspan="5">Details</th>
19050          </tr>
19051          <tr class="entry_cont">
19052            <td class="entry_details" colspan="5">
19053              <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
19054have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
19055not be adjusted for lens shading correction.<wbr/>
19056See <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>
19057<p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
19058Devices with RAW capability will always report this information in this key.<wbr/></p>
19059            </td>
19060          </tr>
19061
19062
19063          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19064           <!-- end of entry -->
19065
19066
19067          <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
19068            <td class="entry_name
19069             " rowspan="5">
19070              android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
19071            </td>
19072            <td class="entry_type">
19073                <span class="entry_type_name">int32</span>
19074                <span class="entry_type_container">x</span>
19075
19076                <span class="entry_type_array">
19077                  4
19078                </span>
19079              <span class="entry_type_visibility"> [public as rectangle]</span>
19080
19081
19082              <span class="entry_type_hwlevel">[legacy] </span>
19083
19084
19085                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
19086
19087
19088            </td> <!-- entry_type -->
19089
19090            <td class="entry_description">
19091              <p>The area of the image sensor which corresponds to active pixels prior to the
19092application of any geometric distortion correction.<wbr/></p>
19093            </td>
19094
19095            <td class="entry_units">
19096              Pixel coordinates on the image sensor
19097            </td>
19098
19099            <td class="entry_range">
19100            </td>
19101
19102            <td class="entry_tags">
19103              <ul class="entry_tags">
19104                  <li><a href="#tag_RAW">RAW</a></li>
19105              </ul>
19106            </td>
19107
19108          </tr>
19109          <tr class="entries_header">
19110            <th class="th_details" colspan="5">Details</th>
19111          </tr>
19112          <tr class="entry_cont">
19113            <td class="entry_details" colspan="5">
19114              <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
19115the region that actually receives light from the scene) before any geometric correction
19116has been applied,<wbr/> and should be treated as the active region rectangle for any of the
19117raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
19118correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
19119the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
19120<p>The size of this region determines the maximum field of view and the maximum number of
19121pixels that an image from this sensor can contain,<wbr/> prior to the application of
19122geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
19123post-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>
19124field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
19125can be calculated by applying the geometric distortion correction fields to this
19126rectangle,<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>
19127<p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
19128dimensions 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/>
19129(x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
19130<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
19131<ol>
19132<li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
19133<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
19134to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
19135<li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
19136(x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
19137buffers is defined relative to the top,<wbr/> left of the
19138<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>
19139<li>If the resulting corrected pixel coordinate is within the region given in
19140<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
19141processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
19142when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
19143</ol>
19144<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>
19145is (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/>
19146<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
19147correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
19148pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
19149with 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)
19150relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
19151<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19152<p>The currently supported fields that correct for geometric distortion are:</p>
19153<ol>
19154<li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li>
19155</ol>
19156<p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
19157as the post-distortion-corrected rectangle given in
19158<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19159<p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
19160the full pixel array,<wbr/> and the size of the full pixel array is given by
19161<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19162<p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
19163full array may include black calibration pixels or other inactive regions.<wbr/></p>
19164            </td>
19165          </tr>
19166
19167          <tr class="entries_header">
19168            <th class="th_details" colspan="5">HAL Implementation Details</th>
19169          </tr>
19170          <tr class="entry_cont">
19171            <td class="entry_details" colspan="5">
19172              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
19173&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
19174The <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>
19175<p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
19176the same as the post-correction active array region given in
19177<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19178            </td>
19179          </tr>
19180
19181          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19182           <!-- end of entry -->
19183
19184
19185
19186
19187
19188          <tr class="entry" id="static_android.sensor.referenceIlluminant1">
19189            <td class="entry_name
19190             " rowspan="5">
19191              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
19192            </td>
19193            <td class="entry_type">
19194                <span class="entry_type_name entry_type_name_enum">byte</span>
19195
19196              <span class="entry_type_visibility"> [public]</span>
19197
19198
19199
19200
19201
19202                <ul class="entry_type_enum">
19203                  <li>
19204                    <span class="entry_type_enum_name">DAYLIGHT</span>
19205                    <span class="entry_type_enum_value">1</span>
19206                  </li>
19207                  <li>
19208                    <span class="entry_type_enum_name">FLUORESCENT</span>
19209                    <span class="entry_type_enum_value">2</span>
19210                  </li>
19211                  <li>
19212                    <span class="entry_type_enum_name">TUNGSTEN</span>
19213                    <span class="entry_type_enum_value">3</span>
19214                    <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
19215                  </li>
19216                  <li>
19217                    <span class="entry_type_enum_name">FLASH</span>
19218                    <span class="entry_type_enum_value">4</span>
19219                  </li>
19220                  <li>
19221                    <span class="entry_type_enum_name">FINE_WEATHER</span>
19222                    <span class="entry_type_enum_value">9</span>
19223                  </li>
19224                  <li>
19225                    <span class="entry_type_enum_name">CLOUDY_WEATHER</span>
19226                    <span class="entry_type_enum_value">10</span>
19227                  </li>
19228                  <li>
19229                    <span class="entry_type_enum_name">SHADE</span>
19230                    <span class="entry_type_enum_value">11</span>
19231                  </li>
19232                  <li>
19233                    <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span>
19234                    <span class="entry_type_enum_value">12</span>
19235                    <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
19236                  </li>
19237                  <li>
19238                    <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span>
19239                    <span class="entry_type_enum_value">13</span>
19240                    <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
19241                  </li>
19242                  <li>
19243                    <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span>
19244                    <span class="entry_type_enum_value">14</span>
19245                    <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
19246                  </li>
19247                  <li>
19248                    <span class="entry_type_enum_name">WHITE_FLUORESCENT</span>
19249                    <span class="entry_type_enum_value">15</span>
19250                    <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
19251                  </li>
19252                  <li>
19253                    <span class="entry_type_enum_name">STANDARD_A</span>
19254                    <span class="entry_type_enum_value">17</span>
19255                  </li>
19256                  <li>
19257                    <span class="entry_type_enum_name">STANDARD_B</span>
19258                    <span class="entry_type_enum_value">18</span>
19259                  </li>
19260                  <li>
19261                    <span class="entry_type_enum_name">STANDARD_C</span>
19262                    <span class="entry_type_enum_value">19</span>
19263                  </li>
19264                  <li>
19265                    <span class="entry_type_enum_name">D55</span>
19266                    <span class="entry_type_enum_value">20</span>
19267                  </li>
19268                  <li>
19269                    <span class="entry_type_enum_name">D65</span>
19270                    <span class="entry_type_enum_value">21</span>
19271                  </li>
19272                  <li>
19273                    <span class="entry_type_enum_name">D75</span>
19274                    <span class="entry_type_enum_value">22</span>
19275                  </li>
19276                  <li>
19277                    <span class="entry_type_enum_name">D50</span>
19278                    <span class="entry_type_enum_value">23</span>
19279                  </li>
19280                  <li>
19281                    <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span>
19282                    <span class="entry_type_enum_value">24</span>
19283                  </li>
19284                </ul>
19285
19286            </td> <!-- entry_type -->
19287
19288            <td class="entry_description">
19289              <p>The standard reference illuminant used as the scene light source when
19290calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
19291<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
19292<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
19293            </td>
19294
19295            <td class="entry_units">
19296            </td>
19297
19298            <td class="entry_range">
19299            </td>
19300
19301            <td class="entry_tags">
19302              <ul class="entry_tags">
19303                  <li><a href="#tag_RAW">RAW</a></li>
19304              </ul>
19305            </td>
19306
19307          </tr>
19308          <tr class="entries_header">
19309            <th class="th_details" colspan="5">Details</th>
19310          </tr>
19311          <tr class="entry_cont">
19312            <td class="entry_details" colspan="5">
19313              <p>The values in this key correspond to the values defined for the
19314EXIF LightSource tag.<wbr/> These illuminants are standard light sources
19315that are often used calibrating camera devices.<wbr/></p>
19316<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
19317<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
19318<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
19319<p>Some devices may choose to provide a second set of calibration
19320information for improved quality,<wbr/> including
19321<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
19322            </td>
19323          </tr>
19324
19325          <tr class="entries_header">
19326            <th class="th_details" colspan="5">HAL Implementation Details</th>
19327          </tr>
19328          <tr class="entry_cont">
19329            <td class="entry_details" colspan="5">
19330              <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
19331and corresponding matrices must be present to support the RAW capability
19332and DNG output.<wbr/></p>
19333<p>When producing raw images with a color profile that has only been
19334calibrated against a single light source,<wbr/> it is valid to omit
19335<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
19336<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/>
19337and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
19338<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
19339chosen so that it is representative of typical scene lighting.<wbr/>  In
19340general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
19341<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
19342<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
19343chosen to represent the typical range of scene lighting conditions.<wbr/>
19344In general,<wbr/> low color temperature illuminant such as Standard-A will
19345be chosen for the first reference illuminant and a higher color
19346temperature illuminant such as D65 will be chosen for the second
19347reference illuminant.<wbr/></p>
19348            </td>
19349          </tr>
19350
19351          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19352           <!-- end of entry -->
19353
19354
19355          <tr class="entry" id="static_android.sensor.referenceIlluminant2">
19356            <td class="entry_name
19357             " rowspan="3">
19358              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
19359            </td>
19360            <td class="entry_type">
19361                <span class="entry_type_name">byte</span>
19362
19363              <span class="entry_type_visibility"> [public]</span>
19364
19365
19366
19367
19368
19369
19370            </td> <!-- entry_type -->
19371
19372            <td class="entry_description">
19373              <p>The standard reference illuminant used as the scene light source when
19374calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
19375<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
19376<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
19377            </td>
19378
19379            <td class="entry_units">
19380            </td>
19381
19382            <td class="entry_range">
19383              <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
19384            </td>
19385
19386            <td class="entry_tags">
19387              <ul class="entry_tags">
19388                  <li><a href="#tag_RAW">RAW</a></li>
19389              </ul>
19390            </td>
19391
19392          </tr>
19393          <tr class="entries_header">
19394            <th class="th_details" colspan="5">Details</th>
19395          </tr>
19396          <tr class="entry_cont">
19397            <td class="entry_details" colspan="5">
19398              <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
19399<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
19400<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
19401<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
19402            </td>
19403          </tr>
19404
19405
19406          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19407           <!-- end of entry -->
19408
19409
19410          <tr class="entry" id="static_android.sensor.calibrationTransform1">
19411            <td class="entry_name
19412             " rowspan="3">
19413              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
19414            </td>
19415            <td class="entry_type">
19416                <span class="entry_type_name">rational</span>
19417                <span class="entry_type_container">x</span>
19418
19419                <span class="entry_type_array">
19420                  3 x 3
19421                </span>
19422              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19423
19424
19425
19426
19427                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19428
19429
19430            </td> <!-- entry_type -->
19431
19432            <td class="entry_description">
19433              <p>A per-device calibration transform matrix that maps from the
19434reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
19435            </td>
19436
19437            <td class="entry_units">
19438            </td>
19439
19440            <td class="entry_range">
19441            </td>
19442
19443            <td class="entry_tags">
19444              <ul class="entry_tags">
19445                  <li><a href="#tag_RAW">RAW</a></li>
19446              </ul>
19447            </td>
19448
19449          </tr>
19450          <tr class="entries_header">
19451            <th class="th_details" colspan="5">Details</th>
19452          </tr>
19453          <tr class="entry_cont">
19454            <td class="entry_details" colspan="5">
19455              <p>This matrix is used to correct for per-device variations in the
19456sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
19457<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19458contains a per-device calibration transform that maps colors
19459from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
19460colorspace) into this camera device's native sensor color
19461space under the first reference illuminant
19462(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
19463            </td>
19464          </tr>
19465
19466
19467          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19468           <!-- end of entry -->
19469
19470
19471          <tr class="entry" id="static_android.sensor.calibrationTransform2">
19472            <td class="entry_name
19473             " rowspan="3">
19474              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
19475            </td>
19476            <td class="entry_type">
19477                <span class="entry_type_name">rational</span>
19478                <span class="entry_type_container">x</span>
19479
19480                <span class="entry_type_array">
19481                  3 x 3
19482                </span>
19483              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19484
19485
19486
19487
19488                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19489
19490
19491            </td> <!-- entry_type -->
19492
19493            <td class="entry_description">
19494              <p>A per-device calibration transform matrix that maps from the
19495reference sensor colorspace to the actual device sensor colorspace
19496(this is the colorspace of the raw buffer data).<wbr/></p>
19497            </td>
19498
19499            <td class="entry_units">
19500            </td>
19501
19502            <td class="entry_range">
19503            </td>
19504
19505            <td class="entry_tags">
19506              <ul class="entry_tags">
19507                  <li><a href="#tag_RAW">RAW</a></li>
19508              </ul>
19509            </td>
19510
19511          </tr>
19512          <tr class="entries_header">
19513            <th class="th_details" colspan="5">Details</th>
19514          </tr>
19515          <tr class="entry_cont">
19516            <td class="entry_details" colspan="5">
19517              <p>This matrix is used to correct for per-device variations in the
19518sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
19519<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19520contains a per-device calibration transform that maps colors
19521from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
19522colorspace) into this camera device's native sensor color
19523space under the second reference illuminant
19524(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
19525<p>This matrix will only be present if the second reference
19526illuminant is present.<wbr/></p>
19527            </td>
19528          </tr>
19529
19530
19531          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19532           <!-- end of entry -->
19533
19534
19535          <tr class="entry" id="static_android.sensor.colorTransform1">
19536            <td class="entry_name
19537             " rowspan="3">
19538              android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
19539            </td>
19540            <td class="entry_type">
19541                <span class="entry_type_name">rational</span>
19542                <span class="entry_type_container">x</span>
19543
19544                <span class="entry_type_array">
19545                  3 x 3
19546                </span>
19547              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19548
19549
19550
19551
19552                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19553
19554
19555            </td> <!-- entry_type -->
19556
19557            <td class="entry_description">
19558              <p>A matrix that transforms color values from CIE XYZ color space to
19559reference sensor color space.<wbr/></p>
19560            </td>
19561
19562            <td class="entry_units">
19563            </td>
19564
19565            <td class="entry_range">
19566            </td>
19567
19568            <td class="entry_tags">
19569              <ul class="entry_tags">
19570                  <li><a href="#tag_RAW">RAW</a></li>
19571              </ul>
19572            </td>
19573
19574          </tr>
19575          <tr class="entries_header">
19576            <th class="th_details" colspan="5">Details</th>
19577          </tr>
19578          <tr class="entry_cont">
19579            <td class="entry_details" colspan="5">
19580              <p>This matrix is used to convert from the standard CIE XYZ color
19581space to the reference sensor colorspace,<wbr/> and is used when processing
19582raw buffer data.<wbr/></p>
19583<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19584contains a color transform matrix that maps colors from the CIE
19585XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
19586"golden module" colorspace) under the first reference illuminant
19587(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
19588<p>The white points chosen in both the reference sensor color space
19589and the CIE XYZ colorspace when calculating this transform will
19590match the standard white point for the first reference illuminant
19591(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
19592            </td>
19593          </tr>
19594
19595
19596          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19597           <!-- end of entry -->
19598
19599
19600          <tr class="entry" id="static_android.sensor.colorTransform2">
19601            <td class="entry_name
19602             " rowspan="3">
19603              android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
19604            </td>
19605            <td class="entry_type">
19606                <span class="entry_type_name">rational</span>
19607                <span class="entry_type_container">x</span>
19608
19609                <span class="entry_type_array">
19610                  3 x 3
19611                </span>
19612              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19613
19614
19615
19616
19617                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19618
19619
19620            </td> <!-- entry_type -->
19621
19622            <td class="entry_description">
19623              <p>A matrix that transforms color values from CIE XYZ color space to
19624reference sensor color space.<wbr/></p>
19625            </td>
19626
19627            <td class="entry_units">
19628            </td>
19629
19630            <td class="entry_range">
19631            </td>
19632
19633            <td class="entry_tags">
19634              <ul class="entry_tags">
19635                  <li><a href="#tag_RAW">RAW</a></li>
19636              </ul>
19637            </td>
19638
19639          </tr>
19640          <tr class="entries_header">
19641            <th class="th_details" colspan="5">Details</th>
19642          </tr>
19643          <tr class="entry_cont">
19644            <td class="entry_details" colspan="5">
19645              <p>This matrix is used to convert from the standard CIE XYZ color
19646space to the reference sensor colorspace,<wbr/> and is used when processing
19647raw buffer data.<wbr/></p>
19648<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19649contains a color transform matrix that maps colors from the CIE
19650XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
19651"golden module" colorspace) under the second reference illuminant
19652(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
19653<p>The white points chosen in both the reference sensor color space
19654and the CIE XYZ colorspace when calculating this transform will
19655match the standard white point for the second reference illuminant
19656(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
19657<p>This matrix will only be present if the second reference
19658illuminant is present.<wbr/></p>
19659            </td>
19660          </tr>
19661
19662
19663          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19664           <!-- end of entry -->
19665
19666
19667          <tr class="entry" id="static_android.sensor.forwardMatrix1">
19668            <td class="entry_name
19669             " rowspan="3">
19670              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
19671            </td>
19672            <td class="entry_type">
19673                <span class="entry_type_name">rational</span>
19674                <span class="entry_type_container">x</span>
19675
19676                <span class="entry_type_array">
19677                  3 x 3
19678                </span>
19679              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19680
19681
19682
19683
19684                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19685
19686
19687            </td> <!-- entry_type -->
19688
19689            <td class="entry_description">
19690              <p>A matrix that transforms white balanced camera colors from the reference
19691sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
19692            </td>
19693
19694            <td class="entry_units">
19695            </td>
19696
19697            <td class="entry_range">
19698            </td>
19699
19700            <td class="entry_tags">
19701              <ul class="entry_tags">
19702                  <li><a href="#tag_RAW">RAW</a></li>
19703              </ul>
19704            </td>
19705
19706          </tr>
19707          <tr class="entries_header">
19708            <th class="th_details" colspan="5">Details</th>
19709          </tr>
19710          <tr class="entry_cont">
19711            <td class="entry_details" colspan="5">
19712              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
19713is used when processing raw buffer data.<wbr/></p>
19714<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
19715a color transform matrix that maps white balanced colors from the
19716reference sensor color space to the CIE XYZ color space with a D50 white
19717point.<wbr/></p>
19718<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
19719this matrix is chosen so that the standard white point for this reference
19720illuminant in the reference sensor colorspace is mapped to D50 in the
19721CIE XYZ colorspace.<wbr/></p>
19722            </td>
19723          </tr>
19724
19725
19726          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19727           <!-- end of entry -->
19728
19729
19730          <tr class="entry" id="static_android.sensor.forwardMatrix2">
19731            <td class="entry_name
19732             " rowspan="3">
19733              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
19734            </td>
19735            <td class="entry_type">
19736                <span class="entry_type_name">rational</span>
19737                <span class="entry_type_container">x</span>
19738
19739                <span class="entry_type_array">
19740                  3 x 3
19741                </span>
19742              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19743
19744
19745
19746
19747                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19748
19749
19750            </td> <!-- entry_type -->
19751
19752            <td class="entry_description">
19753              <p>A matrix that transforms white balanced camera colors from the reference
19754sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
19755            </td>
19756
19757            <td class="entry_units">
19758            </td>
19759
19760            <td class="entry_range">
19761            </td>
19762
19763            <td class="entry_tags">
19764              <ul class="entry_tags">
19765                  <li><a href="#tag_RAW">RAW</a></li>
19766              </ul>
19767            </td>
19768
19769          </tr>
19770          <tr class="entries_header">
19771            <th class="th_details" colspan="5">Details</th>
19772          </tr>
19773          <tr class="entry_cont">
19774            <td class="entry_details" colspan="5">
19775              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
19776is used when processing raw buffer data.<wbr/></p>
19777<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
19778a color transform matrix that maps white balanced colors from the
19779reference sensor color space to the CIE XYZ color space with a D50 white
19780point.<wbr/></p>
19781<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
19782this matrix is chosen so that the standard white point for this reference
19783illuminant in the reference sensor colorspace is mapped to D50 in the
19784CIE XYZ colorspace.<wbr/></p>
19785<p>This matrix will only be present if the second reference
19786illuminant is present.<wbr/></p>
19787            </td>
19788          </tr>
19789
19790
19791          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19792           <!-- end of entry -->
19793
19794
19795          <tr class="entry" id="static_android.sensor.baseGainFactor">
19796            <td class="entry_name
19797             " rowspan="1">
19798              android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
19799            </td>
19800            <td class="entry_type">
19801                <span class="entry_type_name">rational</span>
19802
19803              <span class="entry_type_visibility"> [system]</span>
19804
19805
19806
19807
19808
19809
19810            </td> <!-- entry_type -->
19811
19812            <td class="entry_description">
19813              <p>Gain factor from electrons to raw units when
19814ISO=100</p>
19815            </td>
19816
19817            <td class="entry_units">
19818            </td>
19819
19820            <td class="entry_range">
19821            </td>
19822
19823            <td class="entry_tags">
19824              <ul class="entry_tags">
19825                  <li><a href="#tag_FUTURE">FUTURE</a></li>
19826              </ul>
19827            </td>
19828
19829          </tr>
19830
19831
19832          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19833           <!-- end of entry -->
19834
19835
19836          <tr class="entry" id="static_android.sensor.blackLevelPattern">
19837            <td class="entry_name
19838             " rowspan="5">
19839              android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
19840            </td>
19841            <td class="entry_type">
19842                <span class="entry_type_name">int32</span>
19843                <span class="entry_type_container">x</span>
19844
19845                <span class="entry_type_array">
19846                  4
19847                </span>
19848              <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
19849
19850
19851
19852
19853                <div class="entry_type_notes">2x2 raw count block</div>
19854
19855
19856            </td> <!-- entry_type -->
19857
19858            <td class="entry_description">
19859              <p>A fixed black level offset for each of the color filter arrangement
19860(CFA) mosaic channels.<wbr/></p>
19861            </td>
19862
19863            <td class="entry_units">
19864            </td>
19865
19866            <td class="entry_range">
19867              <p>&gt;= 0 for each.<wbr/></p>
19868            </td>
19869
19870            <td class="entry_tags">
19871              <ul class="entry_tags">
19872                  <li><a href="#tag_RAW">RAW</a></li>
19873              </ul>
19874            </td>
19875
19876          </tr>
19877          <tr class="entries_header">
19878            <th class="th_details" colspan="5">Details</th>
19879          </tr>
19880          <tr class="entry_cont">
19881            <td class="entry_details" colspan="5">
19882              <p>This key specifies the zero light value for each of the CFA mosaic
19883channels in the camera sensor.<wbr/>  The maximal value output by the
19884sensor 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>
19885<p>The values are given in the same order as channels listed for the CFA
19886layout 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
19887nth value given corresponds to the black level offset for the nth
19888color channel listed in the CFA.<wbr/></p>
19889            </td>
19890          </tr>
19891
19892          <tr class="entries_header">
19893            <th class="th_details" colspan="5">HAL Implementation Details</th>
19894          </tr>
19895          <tr class="entry_cont">
19896            <td class="entry_details" colspan="5">
19897              <p>The values are given in row-column scan order,<wbr/> with the first value
19898corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
19899            </td>
19900          </tr>
19901
19902          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19903           <!-- end of entry -->
19904
19905
19906          <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
19907            <td class="entry_name
19908             " rowspan="3">
19909              android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
19910            </td>
19911            <td class="entry_type">
19912                <span class="entry_type_name">int32</span>
19913
19914              <span class="entry_type_visibility"> [public]</span>
19915
19916
19917              <span class="entry_type_hwlevel">[full] </span>
19918
19919
19920
19921
19922            </td> <!-- entry_type -->
19923
19924            <td class="entry_description">
19925              <p>Maximum sensitivity that is implemented
19926purely through analog gain.<wbr/></p>
19927            </td>
19928
19929            <td class="entry_units">
19930            </td>
19931
19932            <td class="entry_range">
19933            </td>
19934
19935            <td class="entry_tags">
19936              <ul class="entry_tags">
19937                  <li><a href="#tag_V1">V1</a></li>
19938                  <li><a href="#tag_FULL">FULL</a></li>
19939              </ul>
19940            </td>
19941
19942          </tr>
19943          <tr class="entries_header">
19944            <th class="th_details" colspan="5">Details</th>
19945          </tr>
19946          <tr class="entry_cont">
19947            <td class="entry_details" colspan="5">
19948              <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
19949equal to this,<wbr/> all applied gain must be analog.<wbr/> For
19950values above this,<wbr/> the gain applied can be a mix of analog and
19951digital.<wbr/></p>
19952            </td>
19953          </tr>
19954
19955
19956          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19957           <!-- end of entry -->
19958
19959
19960          <tr class="entry" id="static_android.sensor.orientation">
19961            <td class="entry_name
19962             " rowspan="3">
19963              android.<wbr/>sensor.<wbr/>orientation
19964            </td>
19965            <td class="entry_type">
19966                <span class="entry_type_name">int32</span>
19967
19968              <span class="entry_type_visibility"> [public]</span>
19969
19970
19971              <span class="entry_type_hwlevel">[legacy] </span>
19972
19973
19974
19975
19976            </td> <!-- entry_type -->
19977
19978            <td class="entry_description">
19979              <p>Clockwise angle through which the output image needs to be rotated to be
19980upright on the device screen in its native orientation.<wbr/></p>
19981            </td>
19982
19983            <td class="entry_units">
19984              Degrees of clockwise rotation; always a multiple of
19985          90
19986            </td>
19987
19988            <td class="entry_range">
19989              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
19990            </td>
19991
19992            <td class="entry_tags">
19993              <ul class="entry_tags">
19994                  <li><a href="#tag_BC">BC</a></li>
19995              </ul>
19996            </td>
19997
19998          </tr>
19999          <tr class="entries_header">
20000            <th class="th_details" colspan="5">Details</th>
20001          </tr>
20002          <tr class="entry_cont">
20003            <td class="entry_details" colspan="5">
20004              <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
20005the sensor's coordinate system.<wbr/></p>
20006            </td>
20007          </tr>
20008
20009
20010          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20011           <!-- end of entry -->
20012
20013
20014          <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
20015            <td class="entry_name
20016             " rowspan="3">
20017              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
20018            </td>
20019            <td class="entry_type">
20020                <span class="entry_type_name">int32</span>
20021                <span class="entry_type_container">x</span>
20022
20023                <span class="entry_type_array">
20024                  3
20025                </span>
20026              <span class="entry_type_visibility"> [system]</span>
20027
20028
20029
20030
20031                <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
20032
20033
20034            </td> <!-- entry_type -->
20035
20036            <td class="entry_description">
20037              <p>The number of input samples for each dimension of
20038<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
20039            </td>
20040
20041            <td class="entry_units">
20042            </td>
20043
20044            <td class="entry_range">
20045              <p>Hue &gt;= 1,<wbr/>
20046Saturation &gt;= 2,<wbr/>
20047Value &gt;= 1</p>
20048            </td>
20049
20050            <td class="entry_tags">
20051              <ul class="entry_tags">
20052                  <li><a href="#tag_RAW">RAW</a></li>
20053              </ul>
20054            </td>
20055
20056          </tr>
20057          <tr class="entries_header">
20058            <th class="th_details" colspan="5">Details</th>
20059          </tr>
20060          <tr class="entry_cont">
20061            <td class="entry_details" colspan="5">
20062              <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
20063dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the
20064dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
20065element.<wbr/></p>
20066            </td>
20067          </tr>
20068
20069
20070          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20071           <!-- end of entry -->
20072
20073
20074          <tr class="entry" id="static_android.sensor.availableTestPatternModes">
20075            <td class="entry_name
20076             " rowspan="5">
20077              android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
20078            </td>
20079            <td class="entry_type">
20080                <span class="entry_type_name">int32</span>
20081                <span class="entry_type_container">x</span>
20082
20083                <span class="entry_type_array">
20084                  n
20085                </span>
20086              <span class="entry_type_visibility"> [public]</span>
20087
20088
20089
20090
20091                <div class="entry_type_notes">list of enums</div>
20092
20093
20094            </td> <!-- entry_type -->
20095
20096            <td class="entry_description">
20097              <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
20098supported by this camera device.<wbr/></p>
20099            </td>
20100
20101            <td class="entry_units">
20102            </td>
20103
20104            <td class="entry_range">
20105              <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
20106            </td>
20107
20108            <td class="entry_tags">
20109            </td>
20110
20111          </tr>
20112          <tr class="entries_header">
20113            <th class="th_details" colspan="5">Details</th>
20114          </tr>
20115          <tr class="entry_cont">
20116            <td class="entry_details" colspan="5">
20117              <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
20118            </td>
20119          </tr>
20120
20121          <tr class="entries_header">
20122            <th class="th_details" colspan="5">HAL Implementation Details</th>
20123          </tr>
20124          <tr class="entry_cont">
20125            <td class="entry_details" colspan="5">
20126              <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
20127            </td>
20128          </tr>
20129
20130          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20131           <!-- end of entry -->
20132
20133
20134
20135      <!-- end of kind -->
20136      </tbody>
20137      <tr><td colspan="6" class="kind">dynamic</td></tr>
20138
20139      <thead class="entries_header">
20140        <tr>
20141          <th class="th_name">Property Name</th>
20142          <th class="th_type">Type</th>
20143          <th class="th_description">Description</th>
20144          <th class="th_units">Units</th>
20145          <th class="th_range">Range</th>
20146          <th class="th_tags">Tags</th>
20147        </tr>
20148      </thead>
20149
20150      <tbody>
20151
20152
20153
20154
20155
20156
20157
20158
20159
20160
20161          <tr class="entry" id="dynamic_android.sensor.exposureTime">
20162            <td class="entry_name
20163             " rowspan="3">
20164              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
20165            </td>
20166            <td class="entry_type">
20167                <span class="entry_type_name">int64</span>
20168
20169              <span class="entry_type_visibility"> [public]</span>
20170
20171
20172              <span class="entry_type_hwlevel">[full] </span>
20173
20174
20175
20176
20177            </td> <!-- entry_type -->
20178
20179            <td class="entry_description">
20180              <p>Duration each pixel is exposed to
20181light.<wbr/></p>
20182            </td>
20183
20184            <td class="entry_units">
20185              Nanoseconds
20186            </td>
20187
20188            <td class="entry_range">
20189              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
20190            </td>
20191
20192            <td class="entry_tags">
20193              <ul class="entry_tags">
20194                  <li><a href="#tag_V1">V1</a></li>
20195              </ul>
20196            </td>
20197
20198          </tr>
20199          <tr class="entries_header">
20200            <th class="th_details" colspan="5">Details</th>
20201          </tr>
20202          <tr class="entry_cont">
20203            <td class="entry_details" colspan="5">
20204              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
20205duration exposed to the nearest possible value (rather than expose longer).<wbr/>
20206The final exposure time used will be available in the output capture result.<wbr/></p>
20207<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
20208OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20209            </td>
20210          </tr>
20211
20212
20213          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20214           <!-- end of entry -->
20215
20216
20217          <tr class="entry" id="dynamic_android.sensor.frameDuration">
20218            <td class="entry_name
20219             " rowspan="5">
20220              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
20221            </td>
20222            <td class="entry_type">
20223                <span class="entry_type_name">int64</span>
20224
20225              <span class="entry_type_visibility"> [public]</span>
20226
20227
20228              <span class="entry_type_hwlevel">[full] </span>
20229
20230
20231
20232
20233            </td> <!-- entry_type -->
20234
20235            <td class="entry_description">
20236              <p>Duration from start of frame exposure to
20237start of next frame exposure.<wbr/></p>
20238            </td>
20239
20240            <td class="entry_units">
20241              Nanoseconds
20242            </td>
20243
20244            <td class="entry_range">
20245              <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
20246<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
20247is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
20248            </td>
20249
20250            <td class="entry_tags">
20251              <ul class="entry_tags">
20252                  <li><a href="#tag_V1">V1</a></li>
20253              </ul>
20254            </td>
20255
20256          </tr>
20257          <tr class="entries_header">
20258            <th class="th_details" colspan="5">Details</th>
20259          </tr>
20260          <tr class="entry_cont">
20261            <td class="entry_details" colspan="5">
20262              <p>The maximum frame rate that can be supported by a camera subsystem is
20263a function of many factors:</p>
20264<ul>
20265<li>Requested resolutions of output image streams</li>
20266<li>Availability of binning /<wbr/> skipping modes on the imager</li>
20267<li>The bandwidth of the imager interface</li>
20268<li>The bandwidth of the various ISP processing blocks</li>
20269</ul>
20270<p>Since these factors can vary greatly between different ISPs and
20271sensors,<wbr/> the camera abstraction tries to represent the bandwidth
20272restrictions with as simple a model as possible.<wbr/></p>
20273<p>The model presented has the following characteristics:</p>
20274<ul>
20275<li>The image sensor is always configured to output the smallest
20276resolution possible given the application's requested output stream
20277sizes.<wbr/>  The smallest resolution is defined as being at least as large
20278as the largest requested output stream size; the camera pipeline must
20279never digitally upsample sensor data when the crop region covers the
20280whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
20281resolutions are configured,<wbr/> the sensor can provide a higher frame
20282rate.<wbr/></li>
20283<li>Since any request may use any or all the currently configured
20284output streams,<wbr/> the sensor and ISP must be configured to support
20285scaling a single capture to all the streams at the same time.<wbr/>  This
20286means the camera pipeline must be ready to produce the largest
20287requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
20288frame rate of a given configured stream set is governed only by the
20289largest requested stream resolution.<wbr/></li>
20290<li>Using more than one output stream in a request does not affect the
20291frame duration.<wbr/></li>
20292<li>Certain format-streams may need to do additional background processing
20293before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
20294can run concurrently to the rest of the camera pipeline,<wbr/> but
20295cannot process more than 1 capture at a time.<wbr/></li>
20296</ul>
20297<p>The necessary information for the application,<wbr/> given the model above,<wbr/>
20298is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
20299<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
20300These are used to determine the maximum frame rate /<wbr/> minimum frame
20301duration that is possible for a given stream configuration.<wbr/></p>
20302<p>Specifically,<wbr/> the application can use the following rules to
20303determine the minimum frame duration it can request from the camera
20304device:</p>
20305<ol>
20306<li>Let the set of currently configured input/<wbr/>output streams
20307be called <code>S</code>.<wbr/></li>
20308<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
20309it 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>
20310(with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
20311called <code>F</code>.<wbr/></li>
20312<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
20313for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
20314used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
20315</ol>
20316<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>
20317using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
20318determines the steady state frame rate that the application will get
20319if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
20320request be called <code>Rsimple</code>.<wbr/></p>
20321<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
20322by a single capture of a new request <code>Rstall</code> (which has at least
20323one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
20324same minimum frame duration this will not cause a frame rate loss
20325if all buffers from the previous <code>Rstall</code> have already been
20326delivered.<wbr/></p>
20327<p>For more details about stalling,<wbr/> see
20328<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
20329<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
20330OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20331            </td>
20332          </tr>
20333
20334          <tr class="entries_header">
20335            <th class="th_details" colspan="5">HAL Implementation Details</th>
20336          </tr>
20337          <tr class="entry_cont">
20338            <td class="entry_details" colspan="5">
20339              <p>For more details about stalling,<wbr/> see
20340<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
20341            </td>
20342          </tr>
20343
20344          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20345           <!-- end of entry -->
20346
20347
20348          <tr class="entry" id="dynamic_android.sensor.sensitivity">
20349            <td class="entry_name
20350             " rowspan="5">
20351              android.<wbr/>sensor.<wbr/>sensitivity
20352            </td>
20353            <td class="entry_type">
20354                <span class="entry_type_name">int32</span>
20355
20356              <span class="entry_type_visibility"> [public]</span>
20357
20358
20359              <span class="entry_type_hwlevel">[full] </span>
20360
20361
20362
20363
20364            </td> <!-- entry_type -->
20365
20366            <td class="entry_description">
20367              <p>The amount of gain applied to sensor data
20368before processing.<wbr/></p>
20369            </td>
20370
20371            <td class="entry_units">
20372              ISO arithmetic units
20373            </td>
20374
20375            <td class="entry_range">
20376              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
20377            </td>
20378
20379            <td class="entry_tags">
20380              <ul class="entry_tags">
20381                  <li><a href="#tag_V1">V1</a></li>
20382              </ul>
20383            </td>
20384
20385          </tr>
20386          <tr class="entries_header">
20387            <th class="th_details" colspan="5">Details</th>
20388          </tr>
20389          <tr class="entry_cont">
20390            <td class="entry_details" colspan="5">
20391              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
20392as defined in ISO 12232:2006.<wbr/></p>
20393<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
20394if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
20395is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
20396<p>If the camera device cannot apply the exact sensitivity
20397requested,<wbr/> it will reduce the gain to the nearest supported
20398value.<wbr/> The final sensitivity used will be available in the
20399output capture result.<wbr/></p>
20400            </td>
20401          </tr>
20402
20403          <tr class="entries_header">
20404            <th class="th_details" colspan="5">HAL Implementation Details</th>
20405          </tr>
20406          <tr class="entry_cont">
20407            <td class="entry_details" colspan="5">
20408              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
20409            </td>
20410          </tr>
20411
20412          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20413           <!-- end of entry -->
20414
20415
20416          <tr class="entry" id="dynamic_android.sensor.timestamp">
20417            <td class="entry_name
20418             " rowspan="5">
20419              android.<wbr/>sensor.<wbr/>timestamp
20420            </td>
20421            <td class="entry_type">
20422                <span class="entry_type_name">int64</span>
20423
20424              <span class="entry_type_visibility"> [public]</span>
20425
20426
20427              <span class="entry_type_hwlevel">[legacy] </span>
20428
20429
20430
20431
20432            </td> <!-- entry_type -->
20433
20434            <td class="entry_description">
20435              <p>Time at start of exposure of first
20436row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
20437            </td>
20438
20439            <td class="entry_units">
20440              Nanoseconds
20441            </td>
20442
20443            <td class="entry_range">
20444              <p>&gt; 0</p>
20445            </td>
20446
20447            <td class="entry_tags">
20448              <ul class="entry_tags">
20449                  <li><a href="#tag_BC">BC</a></li>
20450              </ul>
20451            </td>
20452
20453          </tr>
20454          <tr class="entries_header">
20455            <th class="th_details" colspan="5">Details</th>
20456          </tr>
20457          <tr class="entry_cont">
20458            <td class="entry_details" colspan="5">
20459              <p>The timestamps are also included in all image
20460buffers produced for the same capture,<wbr/> and will be identical
20461on all the outputs.<wbr/></p>
20462<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
20463the timestamps measure time since an unspecified starting point,<wbr/>
20464and are monotonically increasing.<wbr/> They can be compared with the
20465timestamps for other captures from the same camera device,<wbr/> but are
20466not guaranteed to be comparable to any other time source.<wbr/></p>
20467<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
20468timestamps 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
20469be compared to other timestamps from other subsystems that
20470are using that base.<wbr/></p>
20471<p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
20472the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
20473timestamp</a> in the TotalCaptureResult that was used to create the
20474reprocess capture request.<wbr/></p>
20475            </td>
20476          </tr>
20477
20478          <tr class="entries_header">
20479            <th class="th_details" colspan="5">HAL Implementation Details</th>
20480          </tr>
20481          <tr class="entry_cont">
20482            <td class="entry_details" colspan="5">
20483              <p>All timestamps must be in reference to the kernel's
20484CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
20485time spent asleep.<wbr/> This allows for synchronization with
20486sensors that continue to operate while the system is
20487otherwise asleep.<wbr/></p>
20488<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
20489The timestamp must be synchronized with the timestamps from other
20490sensor subsystems that are using the same timebase.<wbr/></p>
20491<p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
20492with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
20493capture request.<wbr/></p>
20494            </td>
20495          </tr>
20496
20497          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20498           <!-- end of entry -->
20499
20500
20501          <tr class="entry" id="dynamic_android.sensor.temperature">
20502            <td class="entry_name
20503             " rowspan="1">
20504              android.<wbr/>sensor.<wbr/>temperature
20505            </td>
20506            <td class="entry_type">
20507                <span class="entry_type_name">float</span>
20508
20509              <span class="entry_type_visibility"> [system]</span>
20510
20511
20512
20513
20514
20515
20516            </td> <!-- entry_type -->
20517
20518            <td class="entry_description">
20519              <p>The temperature of the sensor,<wbr/> sampled at the time
20520exposure began for this frame.<wbr/></p>
20521<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
20522somewhere close to it.<wbr/></p>
20523            </td>
20524
20525            <td class="entry_units">
20526              Celsius
20527            </td>
20528
20529            <td class="entry_range">
20530              <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
20531            </td>
20532
20533            <td class="entry_tags">
20534              <ul class="entry_tags">
20535                  <li><a href="#tag_FUTURE">FUTURE</a></li>
20536              </ul>
20537            </td>
20538
20539          </tr>
20540
20541
20542          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20543           <!-- end of entry -->
20544
20545
20546          <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
20547            <td class="entry_name
20548             " rowspan="3">
20549              android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
20550            </td>
20551            <td class="entry_type">
20552                <span class="entry_type_name">rational</span>
20553                <span class="entry_type_container">x</span>
20554
20555                <span class="entry_type_array">
20556                  3
20557                </span>
20558              <span class="entry_type_visibility"> [public]</span>
20559
20560
20561
20562
20563
20564
20565            </td> <!-- entry_type -->
20566
20567            <td class="entry_description">
20568              <p>The estimated camera neutral color in the native sensor colorspace at
20569the time of capture.<wbr/></p>
20570            </td>
20571
20572            <td class="entry_units">
20573            </td>
20574
20575            <td class="entry_range">
20576            </td>
20577
20578            <td class="entry_tags">
20579              <ul class="entry_tags">
20580                  <li><a href="#tag_RAW">RAW</a></li>
20581              </ul>
20582            </td>
20583
20584          </tr>
20585          <tr class="entries_header">
20586            <th class="th_details" colspan="5">Details</th>
20587          </tr>
20588          <tr class="entry_cont">
20589            <td class="entry_details" colspan="5">
20590              <p>This value gives the neutral color point encoded as an RGB value in the
20591native sensor color space.<wbr/>  The neutral color point indicates the
20592currently estimated white point of the scene illumination.<wbr/>  It can be
20593used to interpolate between the provided color transforms when
20594processing raw sensor data.<wbr/></p>
20595<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
20596            </td>
20597          </tr>
20598
20599
20600          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20601           <!-- end of entry -->
20602
20603
20604          <tr class="entry" id="dynamic_android.sensor.noiseProfile">
20605            <td class="entry_name
20606             " rowspan="5">
20607              android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
20608            </td>
20609            <td class="entry_type">
20610                <span class="entry_type_name">double</span>
20611                <span class="entry_type_container">x</span>
20612
20613                <span class="entry_type_array">
20614                  2 x CFA Channels
20615                </span>
20616              <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
20617
20618
20619
20620
20621                <div class="entry_type_notes">Pairs of noise model coefficients</div>
20622
20623
20624            </td> <!-- entry_type -->
20625
20626            <td class="entry_description">
20627              <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
20628            </td>
20629
20630            <td class="entry_units">
20631            </td>
20632
20633            <td class="entry_range">
20634            </td>
20635
20636            <td class="entry_tags">
20637              <ul class="entry_tags">
20638                  <li><a href="#tag_RAW">RAW</a></li>
20639              </ul>
20640            </td>
20641
20642          </tr>
20643          <tr class="entries_header">
20644            <th class="th_details" colspan="5">Details</th>
20645          </tr>
20646          <tr class="entry_cont">
20647            <td class="entry_details" colspan="5">
20648              <p>This key contains two noise model coefficients for each CFA channel
20649corresponding to the sensor amplification (S) and sensor readout
20650noise (O).<wbr/>  These are given as pairs of coefficients for each channel
20651in the same order as channels listed for the CFA layout key
20652(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
20653represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
20654the first member of the Pair at index n is the S coefficient and the
20655second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
20656<p>These coefficients are used in a two parameter noise model to describe
20657the amount of noise present in the image for each CFA channel.<wbr/>  The
20658noise model used here is:</p>
20659<p>N(x) = sqrt(Sx + O)</p>
20660<p>Where x represents the recorded signal of a CFA channel normalized to
20661the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
20662that channel.<wbr/></p>
20663<p>A more detailed description of the noise model can be found in the
20664Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
20665            </td>
20666          </tr>
20667
20668          <tr class="entries_header">
20669            <th class="th_details" colspan="5">HAL Implementation Details</th>
20670          </tr>
20671          <tr class="entry_cont">
20672            <td class="entry_details" colspan="5">
20673              <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
20674an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
20675for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
20676channel,<wbr/> etc.<wbr/></p>
20677            </td>
20678          </tr>
20679
20680          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20681           <!-- end of entry -->
20682
20683
20684          <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
20685            <td class="entry_name
20686             " rowspan="3">
20687              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
20688            </td>
20689            <td class="entry_type">
20690                <span class="entry_type_name">float</span>
20691                <span class="entry_type_container">x</span>
20692
20693                <span class="entry_type_array">
20694                  hue_samples x saturation_samples x value_samples x 3
20695                </span>
20696              <span class="entry_type_visibility"> [system]</span>
20697
20698
20699
20700
20701                <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
20702
20703
20704            </td> <!-- entry_type -->
20705
20706            <td class="entry_description">
20707              <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
20708for each pixel.<wbr/></p>
20709            </td>
20710
20711            <td class="entry_units">
20712
20713          The hue shift is given in degrees; saturation and value scale factors are
20714          unitless and are between 0 and 1 inclusive
20715
20716            </td>
20717
20718            <td class="entry_range">
20719            </td>
20720
20721            <td class="entry_tags">
20722              <ul class="entry_tags">
20723                  <li><a href="#tag_RAW">RAW</a></li>
20724              </ul>
20725            </td>
20726
20727          </tr>
20728          <tr class="entries_header">
20729            <th class="th_details" colspan="5">Details</th>
20730          </tr>
20731          <tr class="entry_cont">
20732            <td class="entry_details" colspan="5">
20733              <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
20734<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
20735<p>Each entry of this map contains three floats corresponding to the
20736hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
20737hue shift has the lowest index.<wbr/> The map entries are stored in the key
20738in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
20739hue divisions in the middle loop,<wbr/> and the saturation divisions in the
20740inner loop.<wbr/> All zero input saturation entries are required to have a
20741value scale factor of 1.<wbr/>0.<wbr/></p>
20742            </td>
20743          </tr>
20744
20745
20746          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20747           <!-- end of entry -->
20748
20749
20750          <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
20751            <td class="entry_name
20752             " rowspan="3">
20753              android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
20754            </td>
20755            <td class="entry_type">
20756                <span class="entry_type_name">float</span>
20757                <span class="entry_type_container">x</span>
20758
20759                <span class="entry_type_array">
20760                  samples x 2
20761                </span>
20762              <span class="entry_type_visibility"> [system]</span>
20763
20764
20765
20766
20767                <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
20768
20769
20770            </td> <!-- entry_type -->
20771
20772            <td class="entry_description">
20773              <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
20774            </td>
20775
20776            <td class="entry_units">
20777            </td>
20778
20779            <td class="entry_range">
20780              <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
20781<code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
20782sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
20783            </td>
20784
20785            <td class="entry_tags">
20786              <ul class="entry_tags">
20787                  <li><a href="#tag_RAW">RAW</a></li>
20788              </ul>
20789            </td>
20790
20791          </tr>
20792          <tr class="entries_header">
20793            <th class="th_details" colspan="5">Details</th>
20794          </tr>
20795          <tr class="entry_cont">
20796            <td class="entry_details" colspan="5">
20797              <p>This key contains a default tone curve that can be applied while
20798processing the image as a starting point for user adjustments.<wbr/>
20799The curve is specified as a list of value pairs in linear gamma.<wbr/>
20800The curve is interpolated using a cubic spline.<wbr/></p>
20801            </td>
20802          </tr>
20803
20804
20805          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20806           <!-- end of entry -->
20807
20808
20809          <tr class="entry" id="dynamic_android.sensor.greenSplit">
20810            <td class="entry_name
20811             " rowspan="5">
20812              android.<wbr/>sensor.<wbr/>green<wbr/>Split
20813            </td>
20814            <td class="entry_type">
20815                <span class="entry_type_name">float</span>
20816
20817              <span class="entry_type_visibility"> [public]</span>
20818
20819
20820
20821
20822
20823
20824            </td> <!-- entry_type -->
20825
20826            <td class="entry_description">
20827              <p>The worst-case divergence between Bayer green channels.<wbr/></p>
20828            </td>
20829
20830            <td class="entry_units">
20831            </td>
20832
20833            <td class="entry_range">
20834              <p>&gt;= 0</p>
20835            </td>
20836
20837            <td class="entry_tags">
20838              <ul class="entry_tags">
20839                  <li><a href="#tag_RAW">RAW</a></li>
20840              </ul>
20841            </td>
20842
20843          </tr>
20844          <tr class="entries_header">
20845            <th class="th_details" colspan="5">Details</th>
20846          </tr>
20847          <tr class="entry_cont">
20848            <td class="entry_details" colspan="5">
20849              <p>This value is an estimate of the worst case split between the
20850Bayer green channels in the red and blue rows in the sensor color
20851filter array.<wbr/></p>
20852<p>The green split is calculated as follows:</p>
20853<ol>
20854<li>A 5x5 pixel (or larger) window W within the active sensor array is
20855chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
20856mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
20857chosen is implementation defined,<wbr/> and should be chosen to provide a
20858green split estimate that is both representative of the entire image
20859for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
20860<li>The arithmetic mean of the green channels from the red
20861rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
20862<li>The arithmetic mean of the green channels from the blue
20863rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
20864<li>The maximum ratio R of the two means is computed as follows:
20865<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
20866</ol>
20867<p>The ratio R is the green split divergence reported for this property,<wbr/>
20868which represents how much the green channels differ in the mosaic
20869pattern.<wbr/>  This value is typically used to determine the treatment of
20870the green mosaic channels when demosaicing.<wbr/></p>
20871<p>The green split value can be roughly interpreted as follows:</p>
20872<ul>
20873<li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
20874<li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
20875correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
20876<li>R &gt; 1.<wbr/>20 will require strong software correction to produce
20877a usuable image (&gt;20% divergence).<wbr/></li>
20878</ul>
20879            </td>
20880          </tr>
20881
20882          <tr class="entries_header">
20883            <th class="th_details" colspan="5">HAL Implementation Details</th>
20884          </tr>
20885          <tr class="entry_cont">
20886            <td class="entry_details" colspan="5">
20887              <p>The green split given may be a static value based on prior
20888characterization of the camera sensor using the green split
20889calculation method given here over a large,<wbr/> representative,<wbr/> sample
20890set of images.<wbr/>  Other methods of calculation that produce equivalent
20891results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
20892            </td>
20893          </tr>
20894
20895          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20896           <!-- end of entry -->
20897
20898
20899          <tr class="entry" id="dynamic_android.sensor.testPatternData">
20900            <td class="entry_name
20901             " rowspan="5">
20902              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
20903            </td>
20904            <td class="entry_type">
20905                <span class="entry_type_name">int32</span>
20906                <span class="entry_type_container">x</span>
20907
20908                <span class="entry_type_array">
20909                  4
20910                </span>
20911              <span class="entry_type_visibility"> [public]</span>
20912
20913
20914
20915
20916
20917
20918            </td> <!-- entry_type -->
20919
20920            <td class="entry_description">
20921              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
20922when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
20923            </td>
20924
20925            <td class="entry_units">
20926            </td>
20927
20928            <td class="entry_range">
20929            </td>
20930
20931            <td class="entry_tags">
20932            </td>
20933
20934          </tr>
20935          <tr class="entries_header">
20936            <th class="th_details" colspan="5">Details</th>
20937          </tr>
20938          <tr class="entry_cont">
20939            <td class="entry_details" colspan="5">
20940              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
20941The camera device then uses the most significant X bits
20942that correspond to how many bits are in its Bayer raw sensor
20943output.<wbr/></p>
20944<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
2094510 most significant bits from each color channel.<wbr/></p>
20946            </td>
20947          </tr>
20948
20949          <tr class="entries_header">
20950            <th class="th_details" colspan="5">HAL Implementation Details</th>
20951          </tr>
20952          <tr class="entry_cont">
20953            <td class="entry_details" colspan="5">
20954
20955            </td>
20956          </tr>
20957
20958          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20959           <!-- end of entry -->
20960
20961
20962          <tr class="entry" id="dynamic_android.sensor.testPatternMode">
20963            <td class="entry_name
20964             " rowspan="5">
20965              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
20966            </td>
20967            <td class="entry_type">
20968                <span class="entry_type_name entry_type_name_enum">int32</span>
20969
20970              <span class="entry_type_visibility"> [public]</span>
20971
20972
20973
20974
20975
20976                <ul class="entry_type_enum">
20977                  <li>
20978                    <span class="entry_type_enum_name">OFF</span>
20979                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
20980device returns captures from the image sensor.<wbr/></p>
20981<p>This is the default if the key is not set.<wbr/></p></span>
20982                  </li>
20983                  <li>
20984                    <span class="entry_type_enum_name">SOLID_COLOR</span>
20985                    <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
20986respective color channel provided in
20987<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
20988<p>For example:</p>
20989<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20990</code></pre>
20991<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
20992<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20993</code></pre>
20994<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
20995are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
20996                  </li>
20997                  <li>
20998                    <span class="entry_type_enum_name">COLOR_BARS</span>
20999                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
21000<p>The vertical bars (left-to-right) are as follows:</p>
21001<ul>
21002<li>100% white</li>
21003<li>yellow</li>
21004<li>cyan</li>
21005<li>green</li>
21006<li>magenta</li>
21007<li>red</li>
21008<li>blue</li>
21009<li>black</li>
21010</ul>
21011<p>In general the image would look like the following:</p>
21012<pre><code>W Y C G M R B K
21013W Y C G M R B K
21014W Y C G M R B K
21015W Y C G M R B K
21016W Y C G M R B K
21017.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21018.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21019.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21020
21021(B = Blue,<wbr/> K = Black)
21022</code></pre>
21023<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
21024When this is not possible,<wbr/> the bar size should be rounded
21025down to the nearest integer and the pattern can repeat
21026on the right side.<wbr/></p>
21027<p>Each bar's height must always take up the full sensor
21028pixel array height.<wbr/></p>
21029<p>Each pixel in this test pattern must be set to either
210300% intensity or 100% intensity.<wbr/></p></span>
21031                  </li>
21032                  <li>
21033                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
21034                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
21035each bar should start at its specified color at the top,<wbr/>
21036and fade to gray at the bottom.<wbr/></p>
21037<p>Furthermore each bar is further subdivided into a left and
21038right half.<wbr/> The left half should have a smooth gradient,<wbr/>
21039and the right half should have a quantized gradient.<wbr/></p>
21040<p>In particular,<wbr/> the right half's should consist of blocks of the
21041same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
21042<p>The least significant bits in the quantized gradient should
21043be copied from the most significant bits of the smooth gradient.<wbr/></p>
21044<p>The height of each bar should always be a multiple of 128.<wbr/>
21045When this is not the case,<wbr/> the pattern should repeat at the bottom
21046of the image.<wbr/></p></span>
21047                  </li>
21048                  <li>
21049                    <span class="entry_type_enum_name">PN9</span>
21050                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
21051generated from a PN9 512-bit sequence (typically implemented
21052in hardware with a linear feedback shift register).<wbr/></p>
21053<p>The generator should be reset at the beginning of each frame,<wbr/>
21054and thus each subsequent raw frame with this test pattern should
21055be exactly the same as the last.<wbr/></p></span>
21056                  </li>
21057                  <li>
21058                    <span class="entry_type_enum_name">CUSTOM1</span>
21059                    <span class="entry_type_enum_value">256</span>
21060                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
21061available only on this camera device are at least this numeric
21062value.<wbr/></p>
21063<p>All of the custom test patterns will be static
21064(that is the raw image must not vary from frame to frame).<wbr/></p></span>
21065                  </li>
21066                </ul>
21067
21068            </td> <!-- entry_type -->
21069
21070            <td class="entry_description">
21071              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
21072doing a real exposure from the camera.<wbr/></p>
21073            </td>
21074
21075            <td class="entry_units">
21076            </td>
21077
21078            <td class="entry_range">
21079              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
21080            </td>
21081
21082            <td class="entry_tags">
21083            </td>
21084
21085          </tr>
21086          <tr class="entries_header">
21087            <th class="th_details" colspan="5">Details</th>
21088          </tr>
21089          <tr class="entry_cont">
21090            <td class="entry_details" colspan="5">
21091              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
21092by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
21093work as normal.<wbr/></p>
21094<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
21095occur (and that the test pattern remain unmodified,<wbr/> since the flash
21096would not actually affect it).<wbr/></p>
21097<p>Defaults to OFF.<wbr/></p>
21098            </td>
21099          </tr>
21100
21101          <tr class="entries_header">
21102            <th class="th_details" colspan="5">HAL Implementation Details</th>
21103          </tr>
21104          <tr class="entry_cont">
21105            <td class="entry_details" colspan="5">
21106              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
21107<p>The HAL may choose to substitute test patterns from the sensor
21108with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
21109indistinguishable to the ISP whether the data came from the
21110sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
21111            </td>
21112          </tr>
21113
21114          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21115           <!-- end of entry -->
21116
21117
21118          <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
21119            <td class="entry_name
21120             " rowspan="5">
21121              android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
21122            </td>
21123            <td class="entry_type">
21124                <span class="entry_type_name">int64</span>
21125
21126              <span class="entry_type_visibility"> [public]</span>
21127
21128
21129              <span class="entry_type_hwlevel">[limited] </span>
21130
21131
21132
21133
21134            </td> <!-- entry_type -->
21135
21136            <td class="entry_description">
21137              <p>Duration between the start of first row exposure
21138and the start of last row exposure.<wbr/></p>
21139            </td>
21140
21141            <td class="entry_units">
21142              Nanoseconds
21143            </td>
21144
21145            <td class="entry_range">
21146              <p>&gt;= 0 and &lt;
21147<a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
21148            </td>
21149
21150            <td class="entry_tags">
21151              <ul class="entry_tags">
21152                  <li><a href="#tag_V1">V1</a></li>
21153              </ul>
21154            </td>
21155
21156          </tr>
21157          <tr class="entries_header">
21158            <th class="th_details" colspan="5">Details</th>
21159          </tr>
21160          <tr class="entry_cont">
21161            <td class="entry_details" colspan="5">
21162              <p>This is the exposure time skew between the first and last
21163row exposure start times.<wbr/> The first row and the last row are
21164the first and last rows inside of the
21165<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21166<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
21167to the frame readout time.<wbr/></p>
21168            </td>
21169          </tr>
21170
21171          <tr class="entries_header">
21172            <th class="th_details" colspan="5">HAL Implementation Details</th>
21173          </tr>
21174          <tr class="entry_cont">
21175            <td class="entry_details" colspan="5">
21176              <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
21177exposure at the same time.<wbr/></p>
21178            </td>
21179          </tr>
21180
21181          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21182           <!-- end of entry -->
21183
21184
21185
21186      <!-- end of kind -->
21187      </tbody>
21188
21189  <!-- end of section -->
21190  <tr><td colspan="6" id="section_shading" class="section">shading</td></tr>
21191
21192
21193      <tr><td colspan="6" class="kind">controls</td></tr>
21194
21195      <thead class="entries_header">
21196        <tr>
21197          <th class="th_name">Property Name</th>
21198          <th class="th_type">Type</th>
21199          <th class="th_description">Description</th>
21200          <th class="th_units">Units</th>
21201          <th class="th_range">Range</th>
21202          <th class="th_tags">Tags</th>
21203        </tr>
21204      </thead>
21205
21206      <tbody>
21207
21208
21209
21210
21211
21212
21213
21214
21215
21216
21217          <tr class="entry" id="controls_android.shading.mode">
21218            <td class="entry_name
21219             " rowspan="3">
21220              android.<wbr/>shading.<wbr/>mode
21221            </td>
21222            <td class="entry_type">
21223                <span class="entry_type_name entry_type_name_enum">byte</span>
21224
21225              <span class="entry_type_visibility"> [public]</span>
21226
21227
21228              <span class="entry_type_hwlevel">[full] </span>
21229
21230
21231
21232                <ul class="entry_type_enum">
21233                  <li>
21234                    <span class="entry_type_enum_name">OFF</span>
21235                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
21236                  </li>
21237                  <li>
21238                    <span class="entry_type_enum_name">FAST</span>
21239                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
21240frame rate relative to sensor raw output</p></span>
21241                  </li>
21242                  <li>
21243                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
21244                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
21245cost of possibly reduced frame rate.<wbr/></p></span>
21246                  </li>
21247                </ul>
21248
21249            </td> <!-- entry_type -->
21250
21251            <td class="entry_description">
21252              <p>Quality of lens shading correction applied
21253to the image data.<wbr/></p>
21254            </td>
21255
21256            <td class="entry_units">
21257            </td>
21258
21259            <td class="entry_range">
21260              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
21261            </td>
21262
21263            <td class="entry_tags">
21264            </td>
21265
21266          </tr>
21267          <tr class="entries_header">
21268            <th class="th_details" colspan="5">Details</th>
21269          </tr>
21270          <tr class="entry_cont">
21271            <td class="entry_details" colspan="5">
21272              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
21273camera device,<wbr/> and an identity lens shading map data will be provided
21274if <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
21275shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
21276the 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
21277map shown below:</p>
21278<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/>
21279 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/>
21280 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/>
21281 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/>
21282 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/>
21283 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 ]
21284</code></pre>
21285<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
21286device.<wbr/> Applications can request lens shading map data by setting
21287<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
21288shading 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
21289data will be the one applied by the camera device for this capture request.<wbr/></p>
21290<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
21291the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
21292AWB 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>
21293OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
21294to be converged before using the returned shading map data.<wbr/></p>
21295            </td>
21296          </tr>
21297
21298
21299          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21300           <!-- end of entry -->
21301
21302
21303          <tr class="entry" id="controls_android.shading.strength">
21304            <td class="entry_name
21305             " rowspan="1">
21306              android.<wbr/>shading.<wbr/>strength
21307            </td>
21308            <td class="entry_type">
21309                <span class="entry_type_name">byte</span>
21310
21311              <span class="entry_type_visibility"> [system]</span>
21312
21313
21314
21315
21316
21317
21318            </td> <!-- entry_type -->
21319
21320            <td class="entry_description">
21321              <p>Control the amount of shading correction
21322applied to the images</p>
21323            </td>
21324
21325            <td class="entry_units">
21326              unitless: 1-10; 10 is full shading
21327          compensation
21328            </td>
21329
21330            <td class="entry_range">
21331            </td>
21332
21333            <td class="entry_tags">
21334              <ul class="entry_tags">
21335                  <li><a href="#tag_FUTURE">FUTURE</a></li>
21336              </ul>
21337            </td>
21338
21339          </tr>
21340
21341
21342          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21343           <!-- end of entry -->
21344
21345
21346
21347      <!-- end of kind -->
21348      </tbody>
21349      <tr><td colspan="6" class="kind">dynamic</td></tr>
21350
21351      <thead class="entries_header">
21352        <tr>
21353          <th class="th_name">Property Name</th>
21354          <th class="th_type">Type</th>
21355          <th class="th_description">Description</th>
21356          <th class="th_units">Units</th>
21357          <th class="th_range">Range</th>
21358          <th class="th_tags">Tags</th>
21359        </tr>
21360      </thead>
21361
21362      <tbody>
21363
21364
21365
21366
21367
21368
21369
21370
21371
21372
21373          <tr class="entry" id="dynamic_android.shading.mode">
21374            <td class="entry_name
21375             " rowspan="3">
21376              android.<wbr/>shading.<wbr/>mode
21377            </td>
21378            <td class="entry_type">
21379                <span class="entry_type_name entry_type_name_enum">byte</span>
21380
21381              <span class="entry_type_visibility"> [public]</span>
21382
21383
21384              <span class="entry_type_hwlevel">[full] </span>
21385
21386
21387
21388                <ul class="entry_type_enum">
21389                  <li>
21390                    <span class="entry_type_enum_name">OFF</span>
21391                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
21392                  </li>
21393                  <li>
21394                    <span class="entry_type_enum_name">FAST</span>
21395                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
21396frame rate relative to sensor raw output</p></span>
21397                  </li>
21398                  <li>
21399                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
21400                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
21401cost of possibly reduced frame rate.<wbr/></p></span>
21402                  </li>
21403                </ul>
21404
21405            </td> <!-- entry_type -->
21406
21407            <td class="entry_description">
21408              <p>Quality of lens shading correction applied
21409to the image data.<wbr/></p>
21410            </td>
21411
21412            <td class="entry_units">
21413            </td>
21414
21415            <td class="entry_range">
21416              <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
21417            </td>
21418
21419            <td class="entry_tags">
21420            </td>
21421
21422          </tr>
21423          <tr class="entries_header">
21424            <th class="th_details" colspan="5">Details</th>
21425          </tr>
21426          <tr class="entry_cont">
21427            <td class="entry_details" colspan="5">
21428              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
21429camera device,<wbr/> and an identity lens shading map data will be provided
21430if <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
21431shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
21432the 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
21433map shown below:</p>
21434<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/>
21435 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/>
21436 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/>
21437 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/>
21438 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/>
21439 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 ]
21440</code></pre>
21441<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
21442device.<wbr/> Applications can request lens shading map data by setting
21443<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
21444shading 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
21445data will be the one applied by the camera device for this capture request.<wbr/></p>
21446<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
21447the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
21448AWB 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>
21449OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
21450to be converged before using the returned shading map data.<wbr/></p>
21451            </td>
21452          </tr>
21453
21454
21455          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21456           <!-- end of entry -->
21457
21458
21459
21460      <!-- end of kind -->
21461      </tbody>
21462      <tr><td colspan="6" class="kind">static</td></tr>
21463
21464      <thead class="entries_header">
21465        <tr>
21466          <th class="th_name">Property Name</th>
21467          <th class="th_type">Type</th>
21468          <th class="th_description">Description</th>
21469          <th class="th_units">Units</th>
21470          <th class="th_range">Range</th>
21471          <th class="th_tags">Tags</th>
21472        </tr>
21473      </thead>
21474
21475      <tbody>
21476
21477
21478
21479
21480
21481
21482
21483
21484
21485
21486          <tr class="entry" id="static_android.shading.availableModes">
21487            <td class="entry_name
21488             " rowspan="5">
21489              android.<wbr/>shading.<wbr/>available<wbr/>Modes
21490            </td>
21491            <td class="entry_type">
21492                <span class="entry_type_name">byte</span>
21493                <span class="entry_type_container">x</span>
21494
21495                <span class="entry_type_array">
21496                  n
21497                </span>
21498              <span class="entry_type_visibility"> [public as enumList]</span>
21499
21500
21501              <span class="entry_type_hwlevel">[legacy] </span>
21502
21503
21504                <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
21505
21506
21507            </td> <!-- entry_type -->
21508
21509            <td class="entry_description">
21510              <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>
21511            </td>
21512
21513            <td class="entry_units">
21514            </td>
21515
21516            <td class="entry_range">
21517              <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
21518            </td>
21519
21520            <td class="entry_tags">
21521            </td>
21522
21523          </tr>
21524          <tr class="entries_header">
21525            <th class="th_details" colspan="5">Details</th>
21526          </tr>
21527          <tr class="entry_cont">
21528            <td class="entry_details" colspan="5">
21529              <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
21530Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
21531list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
21532LEGACY devices will always only support FAST mode.<wbr/></p>
21533            </td>
21534          </tr>
21535
21536          <tr class="entries_header">
21537            <th class="th_details" colspan="5">HAL Implementation Details</th>
21538          </tr>
21539          <tr class="entry_cont">
21540            <td class="entry_details" colspan="5">
21541              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
21542available on the camera device,<wbr/> but the underlying implementation can be the same for
21543both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
21544slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
21545            </td>
21546          </tr>
21547
21548          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21549           <!-- end of entry -->
21550
21551
21552
21553      <!-- end of kind -->
21554      </tbody>
21555
21556  <!-- end of section -->
21557  <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr>
21558
21559
21560      <tr><td colspan="6" class="kind">controls</td></tr>
21561
21562      <thead class="entries_header">
21563        <tr>
21564          <th class="th_name">Property Name</th>
21565          <th class="th_type">Type</th>
21566          <th class="th_description">Description</th>
21567          <th class="th_units">Units</th>
21568          <th class="th_range">Range</th>
21569          <th class="th_tags">Tags</th>
21570        </tr>
21571      </thead>
21572
21573      <tbody>
21574
21575
21576
21577
21578
21579
21580
21581
21582
21583
21584          <tr class="entry" id="controls_android.statistics.faceDetectMode">
21585            <td class="entry_name
21586             " rowspan="5">
21587              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
21588            </td>
21589            <td class="entry_type">
21590                <span class="entry_type_name entry_type_name_enum">byte</span>
21591
21592              <span class="entry_type_visibility"> [public]</span>
21593
21594
21595              <span class="entry_type_hwlevel">[legacy] </span>
21596
21597
21598
21599                <ul class="entry_type_enum">
21600                  <li>
21601                    <span class="entry_type_enum_name">OFF</span>
21602                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
21603results.<wbr/></p></span>
21604                  </li>
21605                  <li>
21606                    <span class="entry_type_enum_name">SIMPLE</span>
21607                    <span class="entry_type_enum_optional">[optional]</span>
21608                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
21609                  </li>
21610                  <li>
21611                    <span class="entry_type_enum_name">FULL</span>
21612                    <span class="entry_type_enum_optional">[optional]</span>
21613                    <span class="entry_type_enum_notes"><p>Return all face
21614metadata.<wbr/></p>
21615<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
21616                  </li>
21617                </ul>
21618
21619            </td> <!-- entry_type -->
21620
21621            <td class="entry_description">
21622              <p>Operating mode for the face detector
21623unit.<wbr/></p>
21624            </td>
21625
21626            <td class="entry_units">
21627            </td>
21628
21629            <td class="entry_range">
21630              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
21631            </td>
21632
21633            <td class="entry_tags">
21634              <ul class="entry_tags">
21635                  <li><a href="#tag_BC">BC</a></li>
21636              </ul>
21637            </td>
21638
21639          </tr>
21640          <tr class="entries_header">
21641            <th class="th_details" colspan="5">Details</th>
21642          </tr>
21643          <tr class="entry_cont">
21644            <td class="entry_details" colspan="5">
21645              <p>Whether face detection is enabled,<wbr/> and whether it
21646should output just the basic fields or the full set of
21647fields.<wbr/></p>
21648            </td>
21649          </tr>
21650
21651          <tr class="entries_header">
21652            <th class="th_details" colspan="5">HAL Implementation Details</th>
21653          </tr>
21654          <tr class="entry_cont">
21655            <td class="entry_details" colspan="5">
21656              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
21657<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
21658FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
21659<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
21660            </td>
21661          </tr>
21662
21663          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21664           <!-- end of entry -->
21665
21666
21667          <tr class="entry" id="controls_android.statistics.histogramMode">
21668            <td class="entry_name
21669             " rowspan="1">
21670              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
21671            </td>
21672            <td class="entry_type">
21673                <span class="entry_type_name entry_type_name_enum">byte</span>
21674
21675              <span class="entry_type_visibility"> [system as boolean]</span>
21676
21677
21678
21679
21680
21681                <ul class="entry_type_enum">
21682                  <li>
21683                    <span class="entry_type_enum_name">OFF</span>
21684                  </li>
21685                  <li>
21686                    <span class="entry_type_enum_name">ON</span>
21687                  </li>
21688                </ul>
21689
21690            </td> <!-- entry_type -->
21691
21692            <td class="entry_description">
21693              <p>Operating mode for histogram
21694generation</p>
21695            </td>
21696
21697            <td class="entry_units">
21698            </td>
21699
21700            <td class="entry_range">
21701            </td>
21702
21703            <td class="entry_tags">
21704              <ul class="entry_tags">
21705                  <li><a href="#tag_FUTURE">FUTURE</a></li>
21706              </ul>
21707            </td>
21708
21709          </tr>
21710
21711
21712          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21713           <!-- end of entry -->
21714
21715
21716          <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
21717            <td class="entry_name
21718             " rowspan="1">
21719              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
21720            </td>
21721            <td class="entry_type">
21722                <span class="entry_type_name entry_type_name_enum">byte</span>
21723
21724              <span class="entry_type_visibility"> [system as boolean]</span>
21725
21726
21727
21728
21729
21730                <ul class="entry_type_enum">
21731                  <li>
21732                    <span class="entry_type_enum_name">OFF</span>
21733                  </li>
21734                  <li>
21735                    <span class="entry_type_enum_name">ON</span>
21736                  </li>
21737                </ul>
21738
21739            </td> <!-- entry_type -->
21740
21741            <td class="entry_description">
21742              <p>Operating mode for sharpness map
21743generation</p>
21744            </td>
21745
21746            <td class="entry_units">
21747            </td>
21748
21749            <td class="entry_range">
21750            </td>
21751
21752            <td class="entry_tags">
21753              <ul class="entry_tags">
21754                  <li><a href="#tag_FUTURE">FUTURE</a></li>
21755              </ul>
21756            </td>
21757
21758          </tr>
21759
21760
21761          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21762           <!-- end of entry -->
21763
21764
21765          <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
21766            <td class="entry_name
21767             " rowspan="3">
21768              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
21769            </td>
21770            <td class="entry_type">
21771                <span class="entry_type_name entry_type_name_enum">byte</span>
21772
21773              <span class="entry_type_visibility"> [public as boolean]</span>
21774
21775
21776
21777
21778
21779                <ul class="entry_type_enum">
21780                  <li>
21781                    <span class="entry_type_enum_name">OFF</span>
21782                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
21783                  </li>
21784                  <li>
21785                    <span class="entry_type_enum_name">ON</span>
21786                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
21787                  </li>
21788                </ul>
21789
21790            </td> <!-- entry_type -->
21791
21792            <td class="entry_description">
21793              <p>Operating mode for hot pixel map generation.<wbr/></p>
21794            </td>
21795
21796            <td class="entry_units">
21797            </td>
21798
21799            <td class="entry_range">
21800              <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>
21801            </td>
21802
21803            <td class="entry_tags">
21804              <ul class="entry_tags">
21805                  <li><a href="#tag_V1">V1</a></li>
21806                  <li><a href="#tag_RAW">RAW</a></li>
21807              </ul>
21808            </td>
21809
21810          </tr>
21811          <tr class="entries_header">
21812            <th class="th_details" colspan="5">Details</th>
21813          </tr>
21814          <tr class="entry_cont">
21815            <td class="entry_details" colspan="5">
21816              <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/>
21817If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
21818            </td>
21819          </tr>
21820
21821
21822          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21823           <!-- end of entry -->
21824
21825
21826          <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
21827            <td class="entry_name
21828             " rowspan="3">
21829              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
21830            </td>
21831            <td class="entry_type">
21832                <span class="entry_type_name entry_type_name_enum">byte</span>
21833
21834              <span class="entry_type_visibility"> [public]</span>
21835
21836
21837              <span class="entry_type_hwlevel">[full] </span>
21838
21839
21840
21841                <ul class="entry_type_enum">
21842                  <li>
21843                    <span class="entry_type_enum_name">OFF</span>
21844                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
21845                  </li>
21846                  <li>
21847                    <span class="entry_type_enum_name">ON</span>
21848                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
21849                  </li>
21850                </ul>
21851
21852            </td> <!-- entry_type -->
21853
21854            <td class="entry_description">
21855              <p>Whether the camera device will output the lens
21856shading map in output result metadata.<wbr/></p>
21857            </td>
21858
21859            <td class="entry_units">
21860            </td>
21861
21862            <td class="entry_range">
21863              <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>
21864            </td>
21865
21866            <td class="entry_tags">
21867              <ul class="entry_tags">
21868                  <li><a href="#tag_RAW">RAW</a></li>
21869              </ul>
21870            </td>
21871
21872          </tr>
21873          <tr class="entries_header">
21874            <th class="th_details" colspan="5">Details</th>
21875          </tr>
21876          <tr class="entry_cont">
21877            <td class="entry_details" colspan="5">
21878              <p>When set to ON,<wbr/>
21879<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
21880the output result metadata.<wbr/></p>
21881<p>ON is always supported on devices with the RAW capability.<wbr/></p>
21882            </td>
21883          </tr>
21884
21885
21886          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21887           <!-- end of entry -->
21888
21889
21890
21891      <!-- end of kind -->
21892      </tbody>
21893      <tr><td colspan="6" class="kind">static</td></tr>
21894
21895      <thead class="entries_header">
21896        <tr>
21897          <th class="th_name">Property Name</th>
21898          <th class="th_type">Type</th>
21899          <th class="th_description">Description</th>
21900          <th class="th_units">Units</th>
21901          <th class="th_range">Range</th>
21902          <th class="th_tags">Tags</th>
21903        </tr>
21904      </thead>
21905
21906      <tbody>
21907
21908
21909
21910
21911
21912
21913
21914
21915
21916
21917
21918
21919          <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
21920            <td class="entry_name
21921             " rowspan="3">
21922              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
21923            </td>
21924            <td class="entry_type">
21925                <span class="entry_type_name">byte</span>
21926                <span class="entry_type_container">x</span>
21927
21928                <span class="entry_type_array">
21929                  n
21930                </span>
21931              <span class="entry_type_visibility"> [public as enumList]</span>
21932
21933
21934              <span class="entry_type_hwlevel">[legacy] </span>
21935
21936
21937                <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
21938
21939
21940            </td> <!-- entry_type -->
21941
21942            <td class="entry_description">
21943              <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
21944supported by this camera device.<wbr/></p>
21945            </td>
21946
21947            <td class="entry_units">
21948            </td>
21949
21950            <td class="entry_range">
21951              <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
21952            </td>
21953
21954            <td class="entry_tags">
21955            </td>
21956
21957          </tr>
21958          <tr class="entries_header">
21959            <th class="th_details" colspan="5">Details</th>
21960          </tr>
21961          <tr class="entry_cont">
21962            <td class="entry_details" colspan="5">
21963              <p>OFF is always supported.<wbr/></p>
21964            </td>
21965          </tr>
21966
21967
21968          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21969           <!-- end of entry -->
21970
21971
21972          <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
21973            <td class="entry_name
21974             " rowspan="1">
21975              android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
21976            </td>
21977            <td class="entry_type">
21978                <span class="entry_type_name">int32</span>
21979
21980              <span class="entry_type_visibility"> [system]</span>
21981
21982
21983
21984
21985
21986
21987            </td> <!-- entry_type -->
21988
21989            <td class="entry_description">
21990              <p>Number of histogram buckets
21991supported</p>
21992            </td>
21993
21994            <td class="entry_units">
21995            </td>
21996
21997            <td class="entry_range">
21998              <p>&gt;= 64</p>
21999            </td>
22000
22001            <td class="entry_tags">
22002              <ul class="entry_tags">
22003                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22004              </ul>
22005            </td>
22006
22007          </tr>
22008
22009
22010          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22011           <!-- end of entry -->
22012
22013
22014          <tr class="entry" id="static_android.statistics.info.maxFaceCount">
22015            <td class="entry_name
22016             " rowspan="1">
22017              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
22018            </td>
22019            <td class="entry_type">
22020                <span class="entry_type_name">int32</span>
22021
22022              <span class="entry_type_visibility"> [public]</span>
22023
22024
22025              <span class="entry_type_hwlevel">[legacy] </span>
22026
22027
22028
22029
22030            </td> <!-- entry_type -->
22031
22032            <td class="entry_description">
22033              <p>The maximum number of simultaneously detectable
22034faces.<wbr/></p>
22035            </td>
22036
22037            <td class="entry_units">
22038            </td>
22039
22040            <td class="entry_range">
22041              <p>0 for cameras without available face detection; otherwise:
22042<code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
22043<code>&gt;0</code> for LEGACY devices.<wbr/></p>
22044            </td>
22045
22046            <td class="entry_tags">
22047              <ul class="entry_tags">
22048                  <li><a href="#tag_BC">BC</a></li>
22049              </ul>
22050            </td>
22051
22052          </tr>
22053
22054
22055          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22056           <!-- end of entry -->
22057
22058
22059          <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
22060            <td class="entry_name
22061             " rowspan="1">
22062              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
22063            </td>
22064            <td class="entry_type">
22065                <span class="entry_type_name">int32</span>
22066
22067              <span class="entry_type_visibility"> [system]</span>
22068
22069
22070
22071
22072
22073
22074            </td> <!-- entry_type -->
22075
22076            <td class="entry_description">
22077              <p>Maximum value possible for a histogram
22078bucket</p>
22079            </td>
22080
22081            <td class="entry_units">
22082            </td>
22083
22084            <td class="entry_range">
22085            </td>
22086
22087            <td class="entry_tags">
22088              <ul class="entry_tags">
22089                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22090              </ul>
22091            </td>
22092
22093          </tr>
22094
22095
22096          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22097           <!-- end of entry -->
22098
22099
22100          <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
22101            <td class="entry_name
22102             " rowspan="1">
22103              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
22104            </td>
22105            <td class="entry_type">
22106                <span class="entry_type_name">int32</span>
22107
22108              <span class="entry_type_visibility"> [system]</span>
22109
22110
22111
22112
22113
22114
22115            </td> <!-- entry_type -->
22116
22117            <td class="entry_description">
22118              <p>Maximum value possible for a sharpness map
22119region.<wbr/></p>
22120            </td>
22121
22122            <td class="entry_units">
22123            </td>
22124
22125            <td class="entry_range">
22126            </td>
22127
22128            <td class="entry_tags">
22129              <ul class="entry_tags">
22130                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22131              </ul>
22132            </td>
22133
22134          </tr>
22135
22136
22137          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22138           <!-- end of entry -->
22139
22140
22141          <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
22142            <td class="entry_name
22143             " rowspan="1">
22144              android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
22145            </td>
22146            <td class="entry_type">
22147                <span class="entry_type_name">int32</span>
22148                <span class="entry_type_container">x</span>
22149
22150                <span class="entry_type_array">
22151                  2
22152                </span>
22153              <span class="entry_type_visibility"> [system as size]</span>
22154
22155
22156
22157
22158                <div class="entry_type_notes">width x height</div>
22159
22160
22161            </td> <!-- entry_type -->
22162
22163            <td class="entry_description">
22164              <p>Dimensions of the sharpness
22165map</p>
22166            </td>
22167
22168            <td class="entry_units">
22169            </td>
22170
22171            <td class="entry_range">
22172              <p>Must be at least 32 x 32</p>
22173            </td>
22174
22175            <td class="entry_tags">
22176              <ul class="entry_tags">
22177                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22178              </ul>
22179            </td>
22180
22181          </tr>
22182
22183
22184          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22185           <!-- end of entry -->
22186
22187
22188          <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
22189            <td class="entry_name
22190             " rowspan="3">
22191              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
22192            </td>
22193            <td class="entry_type">
22194                <span class="entry_type_name">byte</span>
22195                <span class="entry_type_container">x</span>
22196
22197                <span class="entry_type_array">
22198                  n
22199                </span>
22200              <span class="entry_type_visibility"> [public as boolean]</span>
22201
22202
22203
22204
22205                <div class="entry_type_notes">list of enums</div>
22206
22207
22208            </td> <!-- entry_type -->
22209
22210            <td class="entry_description">
22211              <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
22212supported by this camera device.<wbr/></p>
22213            </td>
22214
22215            <td class="entry_units">
22216            </td>
22217
22218            <td class="entry_range">
22219              <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
22220            </td>
22221
22222            <td class="entry_tags">
22223              <ul class="entry_tags">
22224                  <li><a href="#tag_V1">V1</a></li>
22225                  <li><a href="#tag_RAW">RAW</a></li>
22226              </ul>
22227            </td>
22228
22229          </tr>
22230          <tr class="entries_header">
22231            <th class="th_details" colspan="5">Details</th>
22232          </tr>
22233          <tr class="entry_cont">
22234            <td class="entry_details" colspan="5">
22235              <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
22236<code>false</code>.<wbr/></p>
22237<p>ON is always supported on devices with the RAW capability.<wbr/></p>
22238            </td>
22239          </tr>
22240
22241
22242          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22243           <!-- end of entry -->
22244
22245
22246          <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
22247            <td class="entry_name
22248             " rowspan="3">
22249              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
22250            </td>
22251            <td class="entry_type">
22252                <span class="entry_type_name">byte</span>
22253                <span class="entry_type_container">x</span>
22254
22255                <span class="entry_type_array">
22256                  n
22257                </span>
22258              <span class="entry_type_visibility"> [public as enumList]</span>
22259
22260
22261
22262
22263                <div class="entry_type_notes">list of enums</div>
22264
22265
22266            </td> <!-- entry_type -->
22267
22268            <td class="entry_description">
22269              <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
22270are supported by this camera device.<wbr/></p>
22271            </td>
22272
22273            <td class="entry_units">
22274            </td>
22275
22276            <td class="entry_range">
22277              <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
22278            </td>
22279
22280            <td class="entry_tags">
22281            </td>
22282
22283          </tr>
22284          <tr class="entries_header">
22285            <th class="th_details" colspan="5">Details</th>
22286          </tr>
22287          <tr class="entry_cont">
22288            <td class="entry_details" colspan="5">
22289              <p>If no lens shading map output is available for this camera device,<wbr/> this key will
22290contain only OFF.<wbr/></p>
22291<p>ON is always supported on devices with the RAW capability.<wbr/>
22292LEGACY mode devices will always only support OFF.<wbr/></p>
22293            </td>
22294          </tr>
22295
22296
22297          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22298           <!-- end of entry -->
22299
22300
22301
22302
22303
22304
22305      <!-- end of kind -->
22306      </tbody>
22307      <tr><td colspan="6" class="kind">dynamic</td></tr>
22308
22309      <thead class="entries_header">
22310        <tr>
22311          <th class="th_name">Property Name</th>
22312          <th class="th_type">Type</th>
22313          <th class="th_description">Description</th>
22314          <th class="th_units">Units</th>
22315          <th class="th_range">Range</th>
22316          <th class="th_tags">Tags</th>
22317        </tr>
22318      </thead>
22319
22320      <tbody>
22321
22322
22323
22324
22325
22326
22327
22328
22329
22330
22331          <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
22332            <td class="entry_name
22333             " rowspan="5">
22334              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
22335            </td>
22336            <td class="entry_type">
22337                <span class="entry_type_name entry_type_name_enum">byte</span>
22338
22339              <span class="entry_type_visibility"> [public]</span>
22340
22341
22342              <span class="entry_type_hwlevel">[legacy] </span>
22343
22344
22345
22346                <ul class="entry_type_enum">
22347                  <li>
22348                    <span class="entry_type_enum_name">OFF</span>
22349                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
22350results.<wbr/></p></span>
22351                  </li>
22352                  <li>
22353                    <span class="entry_type_enum_name">SIMPLE</span>
22354                    <span class="entry_type_enum_optional">[optional]</span>
22355                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
22356                  </li>
22357                  <li>
22358                    <span class="entry_type_enum_name">FULL</span>
22359                    <span class="entry_type_enum_optional">[optional]</span>
22360                    <span class="entry_type_enum_notes"><p>Return all face
22361metadata.<wbr/></p>
22362<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
22363                  </li>
22364                </ul>
22365
22366            </td> <!-- entry_type -->
22367
22368            <td class="entry_description">
22369              <p>Operating mode for the face detector
22370unit.<wbr/></p>
22371            </td>
22372
22373            <td class="entry_units">
22374            </td>
22375
22376            <td class="entry_range">
22377              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
22378            </td>
22379
22380            <td class="entry_tags">
22381              <ul class="entry_tags">
22382                  <li><a href="#tag_BC">BC</a></li>
22383              </ul>
22384            </td>
22385
22386          </tr>
22387          <tr class="entries_header">
22388            <th class="th_details" colspan="5">Details</th>
22389          </tr>
22390          <tr class="entry_cont">
22391            <td class="entry_details" colspan="5">
22392              <p>Whether face detection is enabled,<wbr/> and whether it
22393should output just the basic fields or the full set of
22394fields.<wbr/></p>
22395            </td>
22396          </tr>
22397
22398          <tr class="entries_header">
22399            <th class="th_details" colspan="5">HAL Implementation Details</th>
22400          </tr>
22401          <tr class="entry_cont">
22402            <td class="entry_details" colspan="5">
22403              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
22404<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
22405FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
22406<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
22407            </td>
22408          </tr>
22409
22410          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22411           <!-- end of entry -->
22412
22413
22414          <tr class="entry" id="dynamic_android.statistics.faceIds">
22415            <td class="entry_name
22416             " rowspan="3">
22417              android.<wbr/>statistics.<wbr/>face<wbr/>Ids
22418            </td>
22419            <td class="entry_type">
22420                <span class="entry_type_name">int32</span>
22421                <span class="entry_type_container">x</span>
22422
22423                <span class="entry_type_array">
22424                  n
22425                </span>
22426              <span class="entry_type_visibility"> [hidden]</span>
22427
22428
22429              <span class="entry_type_hwlevel">[legacy] </span>
22430
22431
22432
22433
22434            </td> <!-- entry_type -->
22435
22436            <td class="entry_description">
22437              <p>List of unique IDs for detected faces.<wbr/></p>
22438            </td>
22439
22440            <td class="entry_units">
22441            </td>
22442
22443            <td class="entry_range">
22444            </td>
22445
22446            <td class="entry_tags">
22447              <ul class="entry_tags">
22448                  <li><a href="#tag_BC">BC</a></li>
22449              </ul>
22450            </td>
22451
22452          </tr>
22453          <tr class="entries_header">
22454            <th class="th_details" colspan="5">Details</th>
22455          </tr>
22456          <tr class="entry_cont">
22457            <td class="entry_details" colspan="5">
22458              <p>Each detected face is given a unique ID that is valid for as long as the face is visible
22459to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
22460assigned a new ID.<wbr/></p>
22461<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
22462            </td>
22463          </tr>
22464
22465
22466          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22467           <!-- end of entry -->
22468
22469
22470          <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
22471            <td class="entry_name
22472             " rowspan="3">
22473              android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
22474            </td>
22475            <td class="entry_type">
22476                <span class="entry_type_name">int32</span>
22477                <span class="entry_type_container">x</span>
22478
22479                <span class="entry_type_array">
22480                  n x 6
22481                </span>
22482              <span class="entry_type_visibility"> [hidden]</span>
22483
22484
22485              <span class="entry_type_hwlevel">[legacy] </span>
22486
22487
22488                <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
22489
22490
22491            </td> <!-- entry_type -->
22492
22493            <td class="entry_description">
22494              <p>List of landmarks for detected
22495faces.<wbr/></p>
22496            </td>
22497
22498            <td class="entry_units">
22499            </td>
22500
22501            <td class="entry_range">
22502            </td>
22503
22504            <td class="entry_tags">
22505              <ul class="entry_tags">
22506                  <li><a href="#tag_BC">BC</a></li>
22507              </ul>
22508            </td>
22509
22510          </tr>
22511          <tr class="entries_header">
22512            <th class="th_details" colspan="5">Details</th>
22513          </tr>
22514          <tr class="entry_cont">
22515            <td class="entry_details" colspan="5">
22516              <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
22517<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
22518<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
22519            </td>
22520          </tr>
22521
22522
22523          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22524           <!-- end of entry -->
22525
22526
22527          <tr class="entry" id="dynamic_android.statistics.faceRectangles">
22528            <td class="entry_name
22529             " rowspan="3">
22530              android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
22531            </td>
22532            <td class="entry_type">
22533                <span class="entry_type_name">int32</span>
22534                <span class="entry_type_container">x</span>
22535
22536                <span class="entry_type_array">
22537                  n x 4
22538                </span>
22539              <span class="entry_type_visibility"> [hidden as rectangle]</span>
22540
22541
22542              <span class="entry_type_hwlevel">[legacy] </span>
22543
22544
22545                <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
22546
22547
22548            </td> <!-- entry_type -->
22549
22550            <td class="entry_description">
22551              <p>List of the bounding rectangles for detected
22552faces.<wbr/></p>
22553            </td>
22554
22555            <td class="entry_units">
22556            </td>
22557
22558            <td class="entry_range">
22559            </td>
22560
22561            <td class="entry_tags">
22562              <ul class="entry_tags">
22563                  <li><a href="#tag_BC">BC</a></li>
22564              </ul>
22565            </td>
22566
22567          </tr>
22568          <tr class="entries_header">
22569            <th class="th_details" colspan="5">Details</th>
22570          </tr>
22571          <tr class="entry_cont">
22572            <td class="entry_details" colspan="5">
22573              <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
22574<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
22575<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
22576            </td>
22577          </tr>
22578
22579
22580          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22581           <!-- end of entry -->
22582
22583
22584          <tr class="entry" id="dynamic_android.statistics.faceScores">
22585            <td class="entry_name
22586             " rowspan="5">
22587              android.<wbr/>statistics.<wbr/>face<wbr/>Scores
22588            </td>
22589            <td class="entry_type">
22590                <span class="entry_type_name">byte</span>
22591                <span class="entry_type_container">x</span>
22592
22593                <span class="entry_type_array">
22594                  n
22595                </span>
22596              <span class="entry_type_visibility"> [hidden]</span>
22597
22598
22599              <span class="entry_type_hwlevel">[legacy] </span>
22600
22601
22602
22603
22604            </td> <!-- entry_type -->
22605
22606            <td class="entry_description">
22607              <p>List of the face confidence scores for
22608detected faces</p>
22609            </td>
22610
22611            <td class="entry_units">
22612            </td>
22613
22614            <td class="entry_range">
22615              <p>1-100</p>
22616            </td>
22617
22618            <td class="entry_tags">
22619              <ul class="entry_tags">
22620                  <li><a href="#tag_BC">BC</a></li>
22621              </ul>
22622            </td>
22623
22624          </tr>
22625          <tr class="entries_header">
22626            <th class="th_details" colspan="5">Details</th>
22627          </tr>
22628          <tr class="entry_cont">
22629            <td class="entry_details" colspan="5">
22630              <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
22631            </td>
22632          </tr>
22633
22634          <tr class="entries_header">
22635            <th class="th_details" colspan="5">HAL Implementation Details</th>
22636          </tr>
22637          <tr class="entry_cont">
22638            <td class="entry_details" colspan="5">
22639              <p>The value should be meaningful (for example,<wbr/> setting 100 at
22640all times is illegal).<wbr/></p>
22641            </td>
22642          </tr>
22643
22644          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22645           <!-- end of entry -->
22646
22647
22648          <tr class="entry" id="dynamic_android.statistics.faces">
22649            <td class="entry_name
22650             " rowspan="3">
22651              android.<wbr/>statistics.<wbr/>faces
22652            </td>
22653            <td class="entry_type">
22654                <span class="entry_type_name">int32</span>
22655                <span class="entry_type_container">x</span>
22656
22657                <span class="entry_type_array">
22658                  n
22659                </span>
22660              <span class="entry_type_visibility"> [public as face]</span>
22661
22662              <span class="entry_type_synthetic">[synthetic] </span>
22663
22664              <span class="entry_type_hwlevel">[legacy] </span>
22665
22666
22667
22668
22669            </td> <!-- entry_type -->
22670
22671            <td class="entry_description">
22672              <p>List of the faces detected through camera face detection
22673in this capture.<wbr/></p>
22674            </td>
22675
22676            <td class="entry_units">
22677            </td>
22678
22679            <td class="entry_range">
22680            </td>
22681
22682            <td class="entry_tags">
22683            </td>
22684
22685          </tr>
22686          <tr class="entries_header">
22687            <th class="th_details" colspan="5">Details</th>
22688          </tr>
22689          <tr class="entry_cont">
22690            <td class="entry_details" colspan="5">
22691              <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>
22692            </td>
22693          </tr>
22694
22695
22696          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22697           <!-- end of entry -->
22698
22699
22700          <tr class="entry" id="dynamic_android.statistics.histogram">
22701            <td class="entry_name
22702             " rowspan="3">
22703              android.<wbr/>statistics.<wbr/>histogram
22704            </td>
22705            <td class="entry_type">
22706                <span class="entry_type_name">int32</span>
22707                <span class="entry_type_container">x</span>
22708
22709                <span class="entry_type_array">
22710                  n x 3
22711                </span>
22712              <span class="entry_type_visibility"> [system]</span>
22713
22714
22715
22716
22717                <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>
22718
22719
22720            </td> <!-- entry_type -->
22721
22722            <td class="entry_description">
22723              <p>A 3-channel histogram based on the raw
22724sensor data</p>
22725            </td>
22726
22727            <td class="entry_units">
22728            </td>
22729
22730            <td class="entry_range">
22731            </td>
22732
22733            <td class="entry_tags">
22734              <ul class="entry_tags">
22735                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22736              </ul>
22737            </td>
22738
22739          </tr>
22740          <tr class="entries_header">
22741            <th class="th_details" colspan="5">Details</th>
22742          </tr>
22743          <tr class="entry_cont">
22744            <td class="entry_details" colspan="5">
22745              <p>The k'th bucket (0-based) covers the input range
22746(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/>
22747(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
22748supported,<wbr/> all channels should have the same data</p>
22749            </td>
22750          </tr>
22751
22752
22753          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22754           <!-- end of entry -->
22755
22756
22757          <tr class="entry" id="dynamic_android.statistics.histogramMode">
22758            <td class="entry_name
22759             " rowspan="1">
22760              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
22761            </td>
22762            <td class="entry_type">
22763                <span class="entry_type_name entry_type_name_enum">byte</span>
22764
22765              <span class="entry_type_visibility"> [system as boolean]</span>
22766
22767
22768
22769
22770
22771                <ul class="entry_type_enum">
22772                  <li>
22773                    <span class="entry_type_enum_name">OFF</span>
22774                  </li>
22775                  <li>
22776                    <span class="entry_type_enum_name">ON</span>
22777                  </li>
22778                </ul>
22779
22780            </td> <!-- entry_type -->
22781
22782            <td class="entry_description">
22783              <p>Operating mode for histogram
22784generation</p>
22785            </td>
22786
22787            <td class="entry_units">
22788            </td>
22789
22790            <td class="entry_range">
22791            </td>
22792
22793            <td class="entry_tags">
22794              <ul class="entry_tags">
22795                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22796              </ul>
22797            </td>
22798
22799          </tr>
22800
22801
22802          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22803           <!-- end of entry -->
22804
22805
22806          <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
22807            <td class="entry_name
22808             " rowspan="3">
22809              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
22810            </td>
22811            <td class="entry_type">
22812                <span class="entry_type_name">int32</span>
22813                <span class="entry_type_container">x</span>
22814
22815                <span class="entry_type_array">
22816                  n x m x 3
22817                </span>
22818              <span class="entry_type_visibility"> [system]</span>
22819
22820
22821
22822
22823                <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>
22824
22825
22826            </td> <!-- entry_type -->
22827
22828            <td class="entry_description">
22829              <p>A 3-channel sharpness map,<wbr/> based on the raw
22830sensor data</p>
22831            </td>
22832
22833            <td class="entry_units">
22834            </td>
22835
22836            <td class="entry_range">
22837            </td>
22838
22839            <td class="entry_tags">
22840              <ul class="entry_tags">
22841                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22842              </ul>
22843            </td>
22844
22845          </tr>
22846          <tr class="entries_header">
22847            <th class="th_details" colspan="5">Details</th>
22848          </tr>
22849          <tr class="entry_cont">
22850            <td class="entry_details" colspan="5">
22851              <p>If only a monochrome sharpness map is supported,<wbr/>
22852all channels should have the same data</p>
22853            </td>
22854          </tr>
22855
22856
22857          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22858           <!-- end of entry -->
22859
22860
22861          <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
22862            <td class="entry_name
22863             " rowspan="1">
22864              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
22865            </td>
22866            <td class="entry_type">
22867                <span class="entry_type_name entry_type_name_enum">byte</span>
22868
22869              <span class="entry_type_visibility"> [system as boolean]</span>
22870
22871
22872
22873
22874
22875                <ul class="entry_type_enum">
22876                  <li>
22877                    <span class="entry_type_enum_name">OFF</span>
22878                  </li>
22879                  <li>
22880                    <span class="entry_type_enum_name">ON</span>
22881                  </li>
22882                </ul>
22883
22884            </td> <!-- entry_type -->
22885
22886            <td class="entry_description">
22887              <p>Operating mode for sharpness map
22888generation</p>
22889            </td>
22890
22891            <td class="entry_units">
22892            </td>
22893
22894            <td class="entry_range">
22895            </td>
22896
22897            <td class="entry_tags">
22898              <ul class="entry_tags">
22899                  <li><a href="#tag_FUTURE">FUTURE</a></li>
22900              </ul>
22901            </td>
22902
22903          </tr>
22904
22905
22906          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22907           <!-- end of entry -->
22908
22909
22910          <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
22911            <td class="entry_name
22912             " rowspan="3">
22913              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
22914            </td>
22915            <td class="entry_type">
22916                <span class="entry_type_name">byte</span>
22917
22918              <span class="entry_type_visibility"> [public as lensShadingMap]</span>
22919
22920
22921              <span class="entry_type_hwlevel">[full] </span>
22922
22923
22924
22925
22926            </td> <!-- entry_type -->
22927
22928            <td class="entry_description">
22929              <p>The shading map is a low-resolution floating-point map
22930that lists the coefficients used to correct for vignetting,<wbr/> for each
22931Bayer color channel.<wbr/></p>
22932            </td>
22933
22934            <td class="entry_units">
22935            </td>
22936
22937            <td class="entry_range">
22938              <p>Each gain factor is &gt;= 1</p>
22939            </td>
22940
22941            <td class="entry_tags">
22942            </td>
22943
22944          </tr>
22945          <tr class="entries_header">
22946            <th class="th_details" colspan="5">Details</th>
22947          </tr>
22948          <tr class="entry_cont">
22949            <td class="entry_details" colspan="5">
22950              <p>The least shaded section of the image should have a gain factor
22951of 1; all other sections should have gains above 1.<wbr/></p>
22952<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
22953must take into account the colorCorrection settings.<wbr/></p>
22954<p>The shading map is for the entire active pixel array,<wbr/> and is not
22955affected by the crop region specified in the request.<wbr/> Each shading map
22956entry is the value of the shading compensation map over a specific
22957pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
22958map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
22959(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
22960pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
22961The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
22962<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
22963channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
22964The shading map is stored in a fully interleaved format.<wbr/></p>
22965<p>The shading map should have on the order of 30-40 rows and columns,<wbr/>
22966and must be smaller than 64x64.<wbr/></p>
22967<p>As an example,<wbr/> given a very small map defined as:</p>
22968<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
22969values =
22970[ 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/>
22971    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/>
22972  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/>
22973    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/>
22974  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/>
22975    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 ]
22976</code></pre>
22977<p>The low-resolution scaling map images for each channel are
22978(displayed using nearest-neighbor interpolation):</p>
22979<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
22980<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
22981<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
22982<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
22983<p>As a visualization only,<wbr/> inverting the full-color map to recover an
22984image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
22985<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
22986            </td>
22987          </tr>
22988
22989
22990          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22991           <!-- end of entry -->
22992
22993
22994          <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
22995            <td class="entry_name
22996             " rowspan="5">
22997              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
22998            </td>
22999            <td class="entry_type">
23000                <span class="entry_type_name">float</span>
23001                <span class="entry_type_container">x</span>
23002
23003                <span class="entry_type_array">
23004                  4 x n x m
23005                </span>
23006              <span class="entry_type_visibility"> [hidden]</span>
23007
23008
23009              <span class="entry_type_hwlevel">[full] </span>
23010
23011
23012                <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
23013
23014
23015            </td> <!-- entry_type -->
23016
23017            <td class="entry_description">
23018              <p>The shading map is a low-resolution floating-point map
23019that lists the coefficients used to correct for vignetting,<wbr/> for each
23020Bayer color channel of RAW image data.<wbr/></p>
23021            </td>
23022
23023            <td class="entry_units">
23024            </td>
23025
23026            <td class="entry_range">
23027              <p>Each gain factor is &gt;= 1</p>
23028            </td>
23029
23030            <td class="entry_tags">
23031            </td>
23032
23033          </tr>
23034          <tr class="entries_header">
23035            <th class="th_details" colspan="5">Details</th>
23036          </tr>
23037          <tr class="entry_cont">
23038            <td class="entry_details" colspan="5">
23039              <p>The least shaded section of the image should have a gain factor
23040of 1; all other sections should have gains above 1.<wbr/></p>
23041<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
23042must take into account the colorCorrection settings.<wbr/></p>
23043<p>The shading map is for the entire active pixel array,<wbr/> and is not
23044affected by the crop region specified in the request.<wbr/> Each shading map
23045entry is the value of the shading compensation map over a specific
23046pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
23047map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
23048(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
23049pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
23050The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
23051<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
23052channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
23053The shading map is stored in a fully interleaved format,<wbr/> and its size
23054is 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>
23055<p>The shading map should have on the order of 30-40 rows and columns,<wbr/>
23056and must be smaller than 64x64.<wbr/></p>
23057<p>As an example,<wbr/> given a very small map defined as:</p>
23058<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
23059<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
23060[ 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/>
23061    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/>
23062  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/>
23063    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/>
23064  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/>
23065    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 ]
23066</code></pre>
23067<p>The low-resolution scaling map images for each channel are
23068(displayed using nearest-neighbor interpolation):</p>
23069<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
23070<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
23071<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
23072<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
23073<p>As a visualization only,<wbr/> inverting the full-color map to recover an
23074image of a gray wall (using bicubic interpolation for visual quality)
23075as captured by the sensor gives:</p>
23076<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
23077<p>Note that the RAW image data might be subject to lens shading
23078correction not reported on this map.<wbr/> Query
23079<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
23080to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a>
23081is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
23082correction.<wbr/> In the case full lens shading correction is applied to RAW
23083images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
23084In other words,<wbr/> the map reported in this key is the remaining lens shading
23085that needs to be applied on the RAW image to get images without lens shading
23086artifacts.<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
23087formats.<wbr/></p>
23088            </td>
23089          </tr>
23090
23091          <tr class="entries_header">
23092            <th class="th_details" colspan="5">HAL Implementation Details</th>
23093          </tr>
23094          <tr class="entry_cont">
23095            <td class="entry_details" colspan="5">
23096              <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
23097When AE and AWB are in AUTO modes
23098(<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
23099may have all the information it need to generate most accurate lens shading map.<wbr/> When
23100AE or AWB are in manual mode
23101(<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
23102may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
23103generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
23104the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
23105            </td>
23106          </tr>
23107
23108          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23109           <!-- end of entry -->
23110
23111
23112          <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
23113            <td class="entry_name
23114                entry_name_deprecated
23115             " rowspan="3">
23116              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
23117            </td>
23118            <td class="entry_type">
23119                <span class="entry_type_name">float</span>
23120                <span class="entry_type_container">x</span>
23121
23122                <span class="entry_type_array">
23123                  4
23124                </span>
23125              <span class="entry_type_visibility"> [hidden]</span>
23126
23127
23128
23129              <span class="entry_type_deprecated">[deprecated] </span>
23130
23131                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
23132
23133
23134            </td> <!-- entry_type -->
23135
23136            <td class="entry_description">
23137              <p>The best-fit color channel gains calculated
23138by the camera device's statistics units for the current output frame.<wbr/></p>
23139            </td>
23140
23141            <td class="entry_units">
23142            </td>
23143
23144            <td class="entry_range">
23145              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
23146            </td>
23147
23148            <td class="entry_tags">
23149            </td>
23150
23151          </tr>
23152          <tr class="entries_header">
23153            <th class="th_details" colspan="5">Details</th>
23154          </tr>
23155          <tr class="entry_cont">
23156            <td class="entry_details" colspan="5">
23157              <p>This may be different than the gains used for this frame,<wbr/>
23158since statistics processing on data from a new frame
23159typically completes after the transform has already been
23160applied to that frame.<wbr/></p>
23161<p>The 4 channel gains are defined in Bayer domain,<wbr/>
23162see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
23163<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
23164regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
23165            </td>
23166          </tr>
23167
23168
23169          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23170           <!-- end of entry -->
23171
23172
23173          <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
23174            <td class="entry_name
23175                entry_name_deprecated
23176             " rowspan="3">
23177              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
23178            </td>
23179            <td class="entry_type">
23180                <span class="entry_type_name">rational</span>
23181                <span class="entry_type_container">x</span>
23182
23183                <span class="entry_type_array">
23184                  3 x 3
23185                </span>
23186              <span class="entry_type_visibility"> [hidden]</span>
23187
23188
23189
23190              <span class="entry_type_deprecated">[deprecated] </span>
23191
23192                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
23193
23194
23195            </td> <!-- entry_type -->
23196
23197            <td class="entry_description">
23198              <p>The best-fit color transform matrix estimate
23199calculated by the camera device's statistics units for the current
23200output frame.<wbr/></p>
23201            </td>
23202
23203            <td class="entry_units">
23204            </td>
23205
23206            <td class="entry_range">
23207              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
23208            </td>
23209
23210            <td class="entry_tags">
23211            </td>
23212
23213          </tr>
23214          <tr class="entries_header">
23215            <th class="th_details" colspan="5">Details</th>
23216          </tr>
23217          <tr class="entry_cont">
23218            <td class="entry_details" colspan="5">
23219              <p>The camera device will provide the estimate from its
23220statistics unit on the white balance transforms to use
23221for the next frame.<wbr/> These are the values the camera device believes
23222are the best fit for the current output frame.<wbr/> This may
23223be different than the transform used for this frame,<wbr/> since
23224statistics processing on data from a new frame typically
23225completes after the transform has already been applied to
23226that frame.<wbr/></p>
23227<p>These estimates must be provided for all frames,<wbr/> even if
23228capture settings and color transforms are set by the application.<wbr/></p>
23229<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
23230regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
23231            </td>
23232          </tr>
23233
23234
23235          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23236           <!-- end of entry -->
23237
23238
23239          <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
23240            <td class="entry_name
23241             " rowspan="3">
23242              android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
23243            </td>
23244            <td class="entry_type">
23245                <span class="entry_type_name entry_type_name_enum">byte</span>
23246
23247              <span class="entry_type_visibility"> [public]</span>
23248
23249
23250              <span class="entry_type_hwlevel">[full] </span>
23251
23252
23253
23254                <ul class="entry_type_enum">
23255                  <li>
23256                    <span class="entry_type_enum_name">NONE</span>
23257                    <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
23258in the current scene.<wbr/></p></span>
23259                  </li>
23260                  <li>
23261                    <span class="entry_type_enum_name">50HZ</span>
23262                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
23263in the current scene.<wbr/></p></span>
23264                  </li>
23265                  <li>
23266                    <span class="entry_type_enum_name">60HZ</span>
23267                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
23268in the current scene.<wbr/></p></span>
23269                  </li>
23270                </ul>
23271
23272            </td> <!-- entry_type -->
23273
23274            <td class="entry_description">
23275              <p>The camera device estimated scene illumination lighting
23276frequency.<wbr/></p>
23277            </td>
23278
23279            <td class="entry_units">
23280            </td>
23281
23282            <td class="entry_range">
23283            </td>
23284
23285            <td class="entry_tags">
23286            </td>
23287
23288          </tr>
23289          <tr class="entries_header">
23290            <th class="th_details" colspan="5">Details</th>
23291          </tr>
23292          <tr class="entry_cont">
23293            <td class="entry_details" colspan="5">
23294              <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
23295that depends on the local utility power standards.<wbr/> This flicker must be
23296accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
23297The camera device uses this entry to tell the application what the scene
23298illuminant frequency is.<wbr/></p>
23299<p>When manual exposure control is enabled
23300(<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> ==
23301OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
23302antibanding,<wbr/> and the application can ensure it selects
23303exposure times that do not cause banding issues by looking
23304into this metadata field.<wbr/> See
23305<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
23306<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
23307            </td>
23308          </tr>
23309
23310
23311          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23312           <!-- end of entry -->
23313
23314
23315          <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
23316            <td class="entry_name
23317             " rowspan="3">
23318              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
23319            </td>
23320            <td class="entry_type">
23321                <span class="entry_type_name entry_type_name_enum">byte</span>
23322
23323              <span class="entry_type_visibility"> [public as boolean]</span>
23324
23325
23326
23327
23328
23329                <ul class="entry_type_enum">
23330                  <li>
23331                    <span class="entry_type_enum_name">OFF</span>
23332                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
23333                  </li>
23334                  <li>
23335                    <span class="entry_type_enum_name">ON</span>
23336                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
23337                  </li>
23338                </ul>
23339
23340            </td> <!-- entry_type -->
23341
23342            <td class="entry_description">
23343              <p>Operating mode for hot pixel map generation.<wbr/></p>
23344            </td>
23345
23346            <td class="entry_units">
23347            </td>
23348
23349            <td class="entry_range">
23350              <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>
23351            </td>
23352
23353            <td class="entry_tags">
23354              <ul class="entry_tags">
23355                  <li><a href="#tag_V1">V1</a></li>
23356                  <li><a href="#tag_RAW">RAW</a></li>
23357              </ul>
23358            </td>
23359
23360          </tr>
23361          <tr class="entries_header">
23362            <th class="th_details" colspan="5">Details</th>
23363          </tr>
23364          <tr class="entry_cont">
23365            <td class="entry_details" colspan="5">
23366              <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/>
23367If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
23368            </td>
23369          </tr>
23370
23371
23372          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23373           <!-- end of entry -->
23374
23375
23376          <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
23377            <td class="entry_name
23378             " rowspan="5">
23379              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
23380            </td>
23381            <td class="entry_type">
23382                <span class="entry_type_name">int32</span>
23383                <span class="entry_type_container">x</span>
23384
23385                <span class="entry_type_array">
23386                  2 x n
23387                </span>
23388              <span class="entry_type_visibility"> [public as point]</span>
23389
23390
23391
23392
23393                <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
23394
23395
23396            </td> <!-- entry_type -->
23397
23398            <td class="entry_description">
23399              <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
23400            </td>
23401
23402            <td class="entry_units">
23403            </td>
23404
23405            <td class="entry_range">
23406              <p>n &lt;= number of pixels on the sensor.<wbr/>
23407The <code>(x,<wbr/> y)</code> coordinates must be bounded by
23408<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23409            </td>
23410
23411            <td class="entry_tags">
23412              <ul class="entry_tags">
23413                  <li><a href="#tag_V1">V1</a></li>
23414                  <li><a href="#tag_RAW">RAW</a></li>
23415              </ul>
23416            </td>
23417
23418          </tr>
23419          <tr class="entries_header">
23420            <th class="th_details" colspan="5">Details</th>
23421          </tr>
23422          <tr class="entry_cont">
23423            <td class="entry_details" colspan="5">
23424              <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
23425<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
23426bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
23427height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/>
23428This may include hot pixels that lie outside of the active array
23429bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23430            </td>
23431          </tr>
23432
23433          <tr class="entries_header">
23434            <th class="th_details" colspan="5">HAL Implementation Details</th>
23435          </tr>
23436          <tr class="entry_cont">
23437            <td class="entry_details" colspan="5">
23438              <p>A hotpixel map contains the coordinates of pixels on the camera
23439sensor that do report valid values (usually due to defects in
23440the camera sensor).<wbr/> This includes pixels that are stuck at certain
23441values,<wbr/> or have a response that does not accuractly encode the
23442incoming light from the scene.<wbr/></p>
23443<p>To avoid performance issues,<wbr/> there should be significantly fewer hot
23444pixels than actual pixels on the camera sensor.<wbr/></p>
23445            </td>
23446          </tr>
23447
23448          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23449           <!-- end of entry -->
23450
23451
23452          <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
23453            <td class="entry_name
23454             " rowspan="3">
23455              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
23456            </td>
23457            <td class="entry_type">
23458                <span class="entry_type_name entry_type_name_enum">byte</span>
23459
23460              <span class="entry_type_visibility"> [public]</span>
23461
23462
23463              <span class="entry_type_hwlevel">[full] </span>
23464
23465
23466
23467                <ul class="entry_type_enum">
23468                  <li>
23469                    <span class="entry_type_enum_name">OFF</span>
23470                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
23471                  </li>
23472                  <li>
23473                    <span class="entry_type_enum_name">ON</span>
23474                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
23475                  </li>
23476                </ul>
23477
23478            </td> <!-- entry_type -->
23479
23480            <td class="entry_description">
23481              <p>Whether the camera device will output the lens
23482shading map in output result metadata.<wbr/></p>
23483            </td>
23484
23485            <td class="entry_units">
23486            </td>
23487
23488            <td class="entry_range">
23489              <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>
23490            </td>
23491
23492            <td class="entry_tags">
23493              <ul class="entry_tags">
23494                  <li><a href="#tag_RAW">RAW</a></li>
23495              </ul>
23496            </td>
23497
23498          </tr>
23499          <tr class="entries_header">
23500            <th class="th_details" colspan="5">Details</th>
23501          </tr>
23502          <tr class="entry_cont">
23503            <td class="entry_details" colspan="5">
23504              <p>When set to ON,<wbr/>
23505<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
23506the output result metadata.<wbr/></p>
23507<p>ON is always supported on devices with the RAW capability.<wbr/></p>
23508            </td>
23509          </tr>
23510
23511
23512          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23513           <!-- end of entry -->
23514
23515
23516
23517      <!-- end of kind -->
23518      </tbody>
23519
23520  <!-- end of section -->
23521  <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr>
23522
23523
23524      <tr><td colspan="6" class="kind">controls</td></tr>
23525
23526      <thead class="entries_header">
23527        <tr>
23528          <th class="th_name">Property Name</th>
23529          <th class="th_type">Type</th>
23530          <th class="th_description">Description</th>
23531          <th class="th_units">Units</th>
23532          <th class="th_range">Range</th>
23533          <th class="th_tags">Tags</th>
23534        </tr>
23535      </thead>
23536
23537      <tbody>
23538
23539
23540
23541
23542
23543
23544
23545
23546
23547
23548          <tr class="entry" id="controls_android.tonemap.curveBlue">
23549            <td class="entry_name
23550             " rowspan="3">
23551              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
23552            </td>
23553            <td class="entry_type">
23554                <span class="entry_type_name">float</span>
23555                <span class="entry_type_container">x</span>
23556
23557                <span class="entry_type_array">
23558                  n x 2
23559                </span>
23560              <span class="entry_type_visibility"> [hidden]</span>
23561
23562
23563              <span class="entry_type_hwlevel">[full] </span>
23564
23565
23566                <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>
23567
23568
23569            </td> <!-- entry_type -->
23570
23571            <td class="entry_description">
23572              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
23573channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23574CONTRAST_<wbr/>CURVE.<wbr/></p>
23575            </td>
23576
23577            <td class="entry_units">
23578            </td>
23579
23580            <td class="entry_range">
23581            </td>
23582
23583            <td class="entry_tags">
23584            </td>
23585
23586          </tr>
23587          <tr class="entries_header">
23588            <th class="th_details" colspan="5">Details</th>
23589          </tr>
23590          <tr class="entry_cont">
23591            <td class="entry_details" colspan="5">
23592              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
23593            </td>
23594          </tr>
23595
23596
23597          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23598           <!-- end of entry -->
23599
23600
23601          <tr class="entry" id="controls_android.tonemap.curveGreen">
23602            <td class="entry_name
23603             " rowspan="3">
23604              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
23605            </td>
23606            <td class="entry_type">
23607                <span class="entry_type_name">float</span>
23608                <span class="entry_type_container">x</span>
23609
23610                <span class="entry_type_array">
23611                  n x 2
23612                </span>
23613              <span class="entry_type_visibility"> [hidden]</span>
23614
23615
23616              <span class="entry_type_hwlevel">[full] </span>
23617
23618
23619                <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>
23620
23621
23622            </td> <!-- entry_type -->
23623
23624            <td class="entry_description">
23625              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
23626channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23627CONTRAST_<wbr/>CURVE.<wbr/></p>
23628            </td>
23629
23630            <td class="entry_units">
23631            </td>
23632
23633            <td class="entry_range">
23634            </td>
23635
23636            <td class="entry_tags">
23637            </td>
23638
23639          </tr>
23640          <tr class="entries_header">
23641            <th class="th_details" colspan="5">Details</th>
23642          </tr>
23643          <tr class="entry_cont">
23644            <td class="entry_details" colspan="5">
23645              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
23646            </td>
23647          </tr>
23648
23649
23650          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23651           <!-- end of entry -->
23652
23653
23654          <tr class="entry" id="controls_android.tonemap.curveRed">
23655            <td class="entry_name
23656             " rowspan="5">
23657              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
23658            </td>
23659            <td class="entry_type">
23660                <span class="entry_type_name">float</span>
23661                <span class="entry_type_container">x</span>
23662
23663                <span class="entry_type_array">
23664                  n x 2
23665                </span>
23666              <span class="entry_type_visibility"> [hidden]</span>
23667
23668
23669              <span class="entry_type_hwlevel">[full] </span>
23670
23671
23672                <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>
23673
23674
23675            </td> <!-- entry_type -->
23676
23677            <td class="entry_description">
23678              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
23679channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23680CONTRAST_<wbr/>CURVE.<wbr/></p>
23681            </td>
23682
23683            <td class="entry_units">
23684            </td>
23685
23686            <td class="entry_range">
23687              <p>0-1 on both input and output coordinates,<wbr/> normalized
23688as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
23689            </td>
23690
23691            <td class="entry_tags">
23692            </td>
23693
23694          </tr>
23695          <tr class="entries_header">
23696            <th class="th_details" colspan="5">Details</th>
23697          </tr>
23698          <tr class="entry_cont">
23699            <td class="entry_details" colspan="5">
23700              <p>Each channel's curve is defined by an array of control points:</p>
23701<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
23702  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
237032 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
23704<p>These are sorted in order of increasing <code>Pin</code>; it is
23705required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
23706define a complete mapping.<wbr/> For input values between control points,<wbr/>
23707the camera device must linearly interpolate between the control
23708points.<wbr/></p>
23709<p>Each curve can have an independent number of points,<wbr/> and the number
23710of points can be less than max (that is,<wbr/> the request doesn't have to
23711always provide a curve with number of points equivalent to
23712<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
23713<p>A few examples,<wbr/> and their corresponding graphical mappings; these
23714only specify the red channel and the precision is limited to 4
23715digits,<wbr/> for conciseness.<wbr/></p>
23716<p>Linear mapping:</p>
23717<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 ]
23718</code></pre>
23719<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
23720<p>Invert mapping:</p>
23721<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 ]
23722</code></pre>
23723<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
23724<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
23725<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
23726  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/>
23727  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/>
23728  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/>
23729  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 ]
23730</code></pre>
23731<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
23732<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
23733<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
23734  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/>
23735  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/>
23736  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/>
23737  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 ]
23738</code></pre>
23739<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
23740            </td>
23741          </tr>
23742
23743          <tr class="entries_header">
23744            <th class="th_details" colspan="5">HAL Implementation Details</th>
23745          </tr>
23746          <tr class="entry_cont">
23747            <td class="entry_details" colspan="5">
23748              <p>For good quality of mapping,<wbr/> at least 128 control points are
23749preferred.<wbr/></p>
23750<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
23751control points used as are available.<wbr/></p>
23752            </td>
23753          </tr>
23754
23755          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23756           <!-- end of entry -->
23757
23758
23759          <tr class="entry" id="controls_android.tonemap.curve">
23760            <td class="entry_name
23761             " rowspan="5">
23762              android.<wbr/>tonemap.<wbr/>curve
23763            </td>
23764            <td class="entry_type">
23765                <span class="entry_type_name">float</span>
23766
23767              <span class="entry_type_visibility"> [public as tonemapCurve]</span>
23768
23769              <span class="entry_type_synthetic">[synthetic] </span>
23770
23771              <span class="entry_type_hwlevel">[full] </span>
23772
23773
23774
23775
23776            </td> <!-- entry_type -->
23777
23778            <td class="entry_description">
23779              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
23780is CONTRAST_<wbr/>CURVE.<wbr/></p>
23781            </td>
23782
23783            <td class="entry_units">
23784            </td>
23785
23786            <td class="entry_range">
23787            </td>
23788
23789            <td class="entry_tags">
23790            </td>
23791
23792          </tr>
23793          <tr class="entries_header">
23794            <th class="th_details" colspan="5">Details</th>
23795          </tr>
23796          <tr class="entry_cont">
23797            <td class="entry_details" colspan="5">
23798              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
23799channels respectively.<wbr/> The following example uses the red channel as an
23800example.<wbr/> The same logic applies to green and blue channel.<wbr/>
23801Each channel's curve is defined by an array of control points:</p>
23802<pre><code>curveRed =
23803  [ 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) ]
238042 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
23805<p>These are sorted in order of increasing <code>Pin</code>; it is always
23806guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
23807define a complete mapping.<wbr/> For input values between control points,<wbr/>
23808the camera device must linearly interpolate between the control
23809points.<wbr/></p>
23810<p>Each curve can have an independent number of points,<wbr/> and the number
23811of points can be less than max (that is,<wbr/> the request doesn't have to
23812always provide a curve with number of points equivalent to
23813<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
23814<p>A few examples,<wbr/> and their corresponding graphical mappings; these
23815only specify the red channel and the precision is limited to 4
23816digits,<wbr/> for conciseness.<wbr/></p>
23817<p>Linear mapping:</p>
23818<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
23819</code></pre>
23820<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
23821<p>Invert mapping:</p>
23822<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
23823</code></pre>
23824<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
23825<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
23826<pre><code>curveRed = [
23827  (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/>
23828  (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/>
23829  (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/>
23830  (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) ]
23831</code></pre>
23832<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
23833<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
23834<pre><code>curveRed = [
23835  (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/>
23836  (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/>
23837  (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/>
23838  (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) ]
23839</code></pre>
23840<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
23841            </td>
23842          </tr>
23843
23844          <tr class="entries_header">
23845            <th class="th_details" colspan="5">HAL Implementation Details</th>
23846          </tr>
23847          <tr class="entry_cont">
23848            <td class="entry_details" colspan="5">
23849              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
23850curveBlue entries.<wbr/></p>
23851            </td>
23852          </tr>
23853
23854          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23855           <!-- end of entry -->
23856
23857
23858          <tr class="entry" id="controls_android.tonemap.mode">
23859            <td class="entry_name
23860             " rowspan="3">
23861              android.<wbr/>tonemap.<wbr/>mode
23862            </td>
23863            <td class="entry_type">
23864                <span class="entry_type_name entry_type_name_enum">byte</span>
23865
23866              <span class="entry_type_visibility"> [public]</span>
23867
23868
23869              <span class="entry_type_hwlevel">[full] </span>
23870
23871
23872
23873                <ul class="entry_type_enum">
23874                  <li>
23875                    <span class="entry_type_enum_name">CONTRAST_CURVE</span>
23876                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
23877the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
23878<p>All color enhancement and tonemapping must be disabled,<wbr/> except
23879for applying the tonemapping curve specified by
23880<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
23881<p>Must not slow down frame rate relative to raw
23882sensor output.<wbr/></p></span>
23883                  </li>
23884                  <li>
23885                    <span class="entry_type_enum_name">FAST</span>
23886                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
23887reducing frame rate compared to raw sensor output.<wbr/></p></span>
23888                  </li>
23889                  <li>
23890                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
23891                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
23892the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
23893                  </li>
23894                  <li>
23895                    <span class="entry_type_enum_name">GAMMA_VALUE</span>
23896                    <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
23897tonemapping.<wbr/></p>
23898<p>All color enhancement and tonemapping must be disabled,<wbr/> except
23899for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
23900<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
23901                  </li>
23902                  <li>
23903                    <span class="entry_type_enum_name">PRESET_CURVE</span>
23904                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
23905<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
23906<p>All color enhancement and tonemapping must be disabled,<wbr/> except
23907for applying the tonemapping curve specified by
23908<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
23909<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
23910                  </li>
23911                </ul>
23912
23913            </td> <!-- entry_type -->
23914
23915            <td class="entry_description">
23916              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
23917            </td>
23918
23919            <td class="entry_units">
23920            </td>
23921
23922            <td class="entry_range">
23923              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
23924            </td>
23925
23926            <td class="entry_tags">
23927            </td>
23928
23929          </tr>
23930          <tr class="entries_header">
23931            <th class="th_details" colspan="5">Details</th>
23932          </tr>
23933          <tr class="entry_cont">
23934            <td class="entry_details" colspan="5">
23935              <p>When switching to an application-defined contrast curve by setting
23936<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
23937per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
23938mapping from input high-bit-depth pixel value to the output
23939low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
23940and output may change depending on the camera pipeline,<wbr/> the values
23941are specified by normalized floating-point numbers.<wbr/></p>
23942<p>More-complex color mapping operations such as 3D color look-up
23943tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
23944transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23945CONTRAST_<wbr/>CURVE.<wbr/></p>
23946<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
23947emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
23948These values are always available,<wbr/> and as close as possible to the
23949actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
23950<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
23951provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
23952roughly the same.<wbr/></p>
23953            </td>
23954          </tr>
23955
23956
23957          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23958           <!-- end of entry -->
23959
23960
23961          <tr class="entry" id="controls_android.tonemap.gamma">
23962            <td class="entry_name
23963             " rowspan="3">
23964              android.<wbr/>tonemap.<wbr/>gamma
23965            </td>
23966            <td class="entry_type">
23967                <span class="entry_type_name">float</span>
23968
23969              <span class="entry_type_visibility"> [public]</span>
23970
23971
23972
23973
23974
23975
23976            </td> <!-- entry_type -->
23977
23978            <td class="entry_description">
23979              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23980GAMMA_<wbr/>VALUE</p>
23981            </td>
23982
23983            <td class="entry_units">
23984            </td>
23985
23986            <td class="entry_range">
23987            </td>
23988
23989            <td class="entry_tags">
23990            </td>
23991
23992          </tr>
23993          <tr class="entries_header">
23994            <th class="th_details" colspan="5">Details</th>
23995          </tr>
23996          <tr class="entry_cont">
23997            <td class="entry_details" colspan="5">
23998              <p>The tonemap curve will be defined the following formula:
23999* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
24000where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
24001pow is the power function and gamma is the gamma value specified by this
24002key.<wbr/></p>
24003<p>The same curve will be applied to all color channels.<wbr/> The camera device
24004may clip the input gamma value to its supported range.<wbr/> The actual applied
24005value will be returned in capture result.<wbr/></p>
24006<p>The valid range of gamma value varies on different devices,<wbr/> but values
24007within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
24008            </td>
24009          </tr>
24010
24011
24012          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24013           <!-- end of entry -->
24014
24015
24016          <tr class="entry" id="controls_android.tonemap.presetCurve">
24017            <td class="entry_name
24018             " rowspan="3">
24019              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
24020            </td>
24021            <td class="entry_type">
24022                <span class="entry_type_name entry_type_name_enum">byte</span>
24023
24024              <span class="entry_type_visibility"> [public]</span>
24025
24026
24027
24028
24029
24030                <ul class="entry_type_enum">
24031                  <li>
24032                    <span class="entry_type_enum_name">SRGB</span>
24033                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
24034                  </li>
24035                  <li>
24036                    <span class="entry_type_enum_name">REC709</span>
24037                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
24038                  </li>
24039                </ul>
24040
24041            </td> <!-- entry_type -->
24042
24043            <td class="entry_description">
24044              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24045PRESET_<wbr/>CURVE</p>
24046            </td>
24047
24048            <td class="entry_units">
24049            </td>
24050
24051            <td class="entry_range">
24052            </td>
24053
24054            <td class="entry_tags">
24055            </td>
24056
24057          </tr>
24058          <tr class="entries_header">
24059            <th class="th_details" colspan="5">Details</th>
24060          </tr>
24061          <tr class="entry_cont">
24062            <td class="entry_details" colspan="5">
24063              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
24064<p>sRGB (approximated by 16 control points):</p>
24065<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24066<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
24067<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
24068<p>Note that above figures show a 16 control points approximation of preset
24069curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
24070            </td>
24071          </tr>
24072
24073
24074          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24075           <!-- end of entry -->
24076
24077
24078
24079      <!-- end of kind -->
24080      </tbody>
24081      <tr><td colspan="6" class="kind">static</td></tr>
24082
24083      <thead class="entries_header">
24084        <tr>
24085          <th class="th_name">Property Name</th>
24086          <th class="th_type">Type</th>
24087          <th class="th_description">Description</th>
24088          <th class="th_units">Units</th>
24089          <th class="th_range">Range</th>
24090          <th class="th_tags">Tags</th>
24091        </tr>
24092      </thead>
24093
24094      <tbody>
24095
24096
24097
24098
24099
24100
24101
24102
24103
24104
24105          <tr class="entry" id="static_android.tonemap.maxCurvePoints">
24106            <td class="entry_name
24107             " rowspan="5">
24108              android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
24109            </td>
24110            <td class="entry_type">
24111                <span class="entry_type_name">int32</span>
24112
24113              <span class="entry_type_visibility"> [public]</span>
24114
24115
24116              <span class="entry_type_hwlevel">[full] </span>
24117
24118
24119
24120
24121            </td> <!-- entry_type -->
24122
24123            <td class="entry_description">
24124              <p>Maximum number of supported points in the
24125tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
24126            </td>
24127
24128            <td class="entry_units">
24129            </td>
24130
24131            <td class="entry_range">
24132            </td>
24133
24134            <td class="entry_tags">
24135            </td>
24136
24137          </tr>
24138          <tr class="entries_header">
24139            <th class="th_details" colspan="5">Details</th>
24140          </tr>
24141          <tr class="entry_cont">
24142            <td class="entry_details" colspan="5">
24143              <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
24144less than this maximum,<wbr/> the camera device will resample the curve to its internal
24145representation,<wbr/> using linear interpolation.<wbr/></p>
24146<p>The output curves in the result metadata may have a different number
24147of points than the input curves,<wbr/> and will represent the actual
24148hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
24149            </td>
24150          </tr>
24151
24152          <tr class="entries_header">
24153            <th class="th_details" colspan="5">HAL Implementation Details</th>
24154          </tr>
24155          <tr class="entry_cont">
24156            <td class="entry_details" colspan="5">
24157              <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
24158            </td>
24159          </tr>
24160
24161          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24162           <!-- end of entry -->
24163
24164
24165          <tr class="entry" id="static_android.tonemap.availableToneMapModes">
24166            <td class="entry_name
24167             " rowspan="5">
24168              android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
24169            </td>
24170            <td class="entry_type">
24171                <span class="entry_type_name">byte</span>
24172                <span class="entry_type_container">x</span>
24173
24174                <span class="entry_type_array">
24175                  n
24176                </span>
24177              <span class="entry_type_visibility"> [public as enumList]</span>
24178
24179
24180              <span class="entry_type_hwlevel">[full] </span>
24181
24182
24183                <div class="entry_type_notes">list of enums</div>
24184
24185
24186            </td> <!-- entry_type -->
24187
24188            <td class="entry_description">
24189              <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
24190device.<wbr/></p>
24191            </td>
24192
24193            <td class="entry_units">
24194            </td>
24195
24196            <td class="entry_range">
24197              <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
24198            </td>
24199
24200            <td class="entry_tags">
24201            </td>
24202
24203          </tr>
24204          <tr class="entries_header">
24205            <th class="th_details" colspan="5">Details</th>
24206          </tr>
24207          <tr class="entry_cont">
24208            <td class="entry_details" colspan="5">
24209              <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
24210at least one of below mode combinations:</p>
24211<ul>
24212<li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
24213<li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
24214</ul>
24215<p>This includes all FULL level devices.<wbr/></p>
24216            </td>
24217          </tr>
24218
24219          <tr class="entries_header">
24220            <th class="th_details" colspan="5">HAL Implementation Details</th>
24221          </tr>
24222          <tr class="entry_cont">
24223            <td class="entry_details" colspan="5">
24224              <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
24225on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
24226That is,<wbr/> if the highest quality implementation on the camera device does not slow down
24227capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
24228            </td>
24229          </tr>
24230
24231          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24232           <!-- end of entry -->
24233
24234
24235
24236      <!-- end of kind -->
24237      </tbody>
24238      <tr><td colspan="6" class="kind">dynamic</td></tr>
24239
24240      <thead class="entries_header">
24241        <tr>
24242          <th class="th_name">Property Name</th>
24243          <th class="th_type">Type</th>
24244          <th class="th_description">Description</th>
24245          <th class="th_units">Units</th>
24246          <th class="th_range">Range</th>
24247          <th class="th_tags">Tags</th>
24248        </tr>
24249      </thead>
24250
24251      <tbody>
24252
24253
24254
24255
24256
24257
24258
24259
24260
24261
24262          <tr class="entry" id="dynamic_android.tonemap.curveBlue">
24263            <td class="entry_name
24264             " rowspan="3">
24265              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
24266            </td>
24267            <td class="entry_type">
24268                <span class="entry_type_name">float</span>
24269                <span class="entry_type_container">x</span>
24270
24271                <span class="entry_type_array">
24272                  n x 2
24273                </span>
24274              <span class="entry_type_visibility"> [hidden]</span>
24275
24276
24277              <span class="entry_type_hwlevel">[full] </span>
24278
24279
24280                <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>
24281
24282
24283            </td> <!-- entry_type -->
24284
24285            <td class="entry_description">
24286              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
24287channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24288CONTRAST_<wbr/>CURVE.<wbr/></p>
24289            </td>
24290
24291            <td class="entry_units">
24292            </td>
24293
24294            <td class="entry_range">
24295            </td>
24296
24297            <td class="entry_tags">
24298            </td>
24299
24300          </tr>
24301          <tr class="entries_header">
24302            <th class="th_details" colspan="5">Details</th>
24303          </tr>
24304          <tr class="entry_cont">
24305            <td class="entry_details" colspan="5">
24306              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
24307            </td>
24308          </tr>
24309
24310
24311          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24312           <!-- end of entry -->
24313
24314
24315          <tr class="entry" id="dynamic_android.tonemap.curveGreen">
24316            <td class="entry_name
24317             " rowspan="3">
24318              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
24319            </td>
24320            <td class="entry_type">
24321                <span class="entry_type_name">float</span>
24322                <span class="entry_type_container">x</span>
24323
24324                <span class="entry_type_array">
24325                  n x 2
24326                </span>
24327              <span class="entry_type_visibility"> [hidden]</span>
24328
24329
24330              <span class="entry_type_hwlevel">[full] </span>
24331
24332
24333                <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>
24334
24335
24336            </td> <!-- entry_type -->
24337
24338            <td class="entry_description">
24339              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
24340channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24341CONTRAST_<wbr/>CURVE.<wbr/></p>
24342            </td>
24343
24344            <td class="entry_units">
24345            </td>
24346
24347            <td class="entry_range">
24348            </td>
24349
24350            <td class="entry_tags">
24351            </td>
24352
24353          </tr>
24354          <tr class="entries_header">
24355            <th class="th_details" colspan="5">Details</th>
24356          </tr>
24357          <tr class="entry_cont">
24358            <td class="entry_details" colspan="5">
24359              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
24360            </td>
24361          </tr>
24362
24363
24364          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24365           <!-- end of entry -->
24366
24367
24368          <tr class="entry" id="dynamic_android.tonemap.curveRed">
24369            <td class="entry_name
24370             " rowspan="5">
24371              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
24372            </td>
24373            <td class="entry_type">
24374                <span class="entry_type_name">float</span>
24375                <span class="entry_type_container">x</span>
24376
24377                <span class="entry_type_array">
24378                  n x 2
24379                </span>
24380              <span class="entry_type_visibility"> [hidden]</span>
24381
24382
24383              <span class="entry_type_hwlevel">[full] </span>
24384
24385
24386                <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>
24387
24388
24389            </td> <!-- entry_type -->
24390
24391            <td class="entry_description">
24392              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
24393channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24394CONTRAST_<wbr/>CURVE.<wbr/></p>
24395            </td>
24396
24397            <td class="entry_units">
24398            </td>
24399
24400            <td class="entry_range">
24401              <p>0-1 on both input and output coordinates,<wbr/> normalized
24402as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
24403            </td>
24404
24405            <td class="entry_tags">
24406            </td>
24407
24408          </tr>
24409          <tr class="entries_header">
24410            <th class="th_details" colspan="5">Details</th>
24411          </tr>
24412          <tr class="entry_cont">
24413            <td class="entry_details" colspan="5">
24414              <p>Each channel's curve is defined by an array of control points:</p>
24415<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
24416  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
244172 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
24418<p>These are sorted in order of increasing <code>Pin</code>; it is
24419required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
24420define a complete mapping.<wbr/> For input values between control points,<wbr/>
24421the camera device must linearly interpolate between the control
24422points.<wbr/></p>
24423<p>Each curve can have an independent number of points,<wbr/> and the number
24424of points can be less than max (that is,<wbr/> the request doesn't have to
24425always provide a curve with number of points equivalent to
24426<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
24427<p>A few examples,<wbr/> and their corresponding graphical mappings; these
24428only specify the red channel and the precision is limited to 4
24429digits,<wbr/> for conciseness.<wbr/></p>
24430<p>Linear mapping:</p>
24431<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 ]
24432</code></pre>
24433<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
24434<p>Invert mapping:</p>
24435<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 ]
24436</code></pre>
24437<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
24438<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
24439<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
24440  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/>
24441  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/>
24442  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/>
24443  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 ]
24444</code></pre>
24445<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
24446<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
24447<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
24448  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/>
24449  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/>
24450  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/>
24451  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 ]
24452</code></pre>
24453<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24454            </td>
24455          </tr>
24456
24457          <tr class="entries_header">
24458            <th class="th_details" colspan="5">HAL Implementation Details</th>
24459          </tr>
24460          <tr class="entry_cont">
24461            <td class="entry_details" colspan="5">
24462              <p>For good quality of mapping,<wbr/> at least 128 control points are
24463preferred.<wbr/></p>
24464<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
24465control points used as are available.<wbr/></p>
24466            </td>
24467          </tr>
24468
24469          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24470           <!-- end of entry -->
24471
24472
24473          <tr class="entry" id="dynamic_android.tonemap.curve">
24474            <td class="entry_name
24475             " rowspan="5">
24476              android.<wbr/>tonemap.<wbr/>curve
24477            </td>
24478            <td class="entry_type">
24479                <span class="entry_type_name">float</span>
24480
24481              <span class="entry_type_visibility"> [public as tonemapCurve]</span>
24482
24483              <span class="entry_type_synthetic">[synthetic] </span>
24484
24485              <span class="entry_type_hwlevel">[full] </span>
24486
24487
24488
24489
24490            </td> <!-- entry_type -->
24491
24492            <td class="entry_description">
24493              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
24494is CONTRAST_<wbr/>CURVE.<wbr/></p>
24495            </td>
24496
24497            <td class="entry_units">
24498            </td>
24499
24500            <td class="entry_range">
24501            </td>
24502
24503            <td class="entry_tags">
24504            </td>
24505
24506          </tr>
24507          <tr class="entries_header">
24508            <th class="th_details" colspan="5">Details</th>
24509          </tr>
24510          <tr class="entry_cont">
24511            <td class="entry_details" colspan="5">
24512              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
24513channels respectively.<wbr/> The following example uses the red channel as an
24514example.<wbr/> The same logic applies to green and blue channel.<wbr/>
24515Each channel's curve is defined by an array of control points:</p>
24516<pre><code>curveRed =
24517  [ 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) ]
245182 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
24519<p>These are sorted in order of increasing <code>Pin</code>; it is always
24520guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
24521define a complete mapping.<wbr/> For input values between control points,<wbr/>
24522the camera device must linearly interpolate between the control
24523points.<wbr/></p>
24524<p>Each curve can have an independent number of points,<wbr/> and the number
24525of points can be less than max (that is,<wbr/> the request doesn't have to
24526always provide a curve with number of points equivalent to
24527<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
24528<p>A few examples,<wbr/> and their corresponding graphical mappings; these
24529only specify the red channel and the precision is limited to 4
24530digits,<wbr/> for conciseness.<wbr/></p>
24531<p>Linear mapping:</p>
24532<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
24533</code></pre>
24534<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
24535<p>Invert mapping:</p>
24536<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
24537</code></pre>
24538<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
24539<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
24540<pre><code>curveRed = [
24541  (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/>
24542  (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/>
24543  (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/>
24544  (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) ]
24545</code></pre>
24546<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
24547<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
24548<pre><code>curveRed = [
24549  (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/>
24550  (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/>
24551  (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/>
24552  (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) ]
24553</code></pre>
24554<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24555            </td>
24556          </tr>
24557
24558          <tr class="entries_header">
24559            <th class="th_details" colspan="5">HAL Implementation Details</th>
24560          </tr>
24561          <tr class="entry_cont">
24562            <td class="entry_details" colspan="5">
24563              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
24564curveBlue entries.<wbr/></p>
24565            </td>
24566          </tr>
24567
24568          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24569           <!-- end of entry -->
24570
24571
24572          <tr class="entry" id="dynamic_android.tonemap.mode">
24573            <td class="entry_name
24574             " rowspan="3">
24575              android.<wbr/>tonemap.<wbr/>mode
24576            </td>
24577            <td class="entry_type">
24578                <span class="entry_type_name entry_type_name_enum">byte</span>
24579
24580              <span class="entry_type_visibility"> [public]</span>
24581
24582
24583              <span class="entry_type_hwlevel">[full] </span>
24584
24585
24586
24587                <ul class="entry_type_enum">
24588                  <li>
24589                    <span class="entry_type_enum_name">CONTRAST_CURVE</span>
24590                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
24591the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
24592<p>All color enhancement and tonemapping must be disabled,<wbr/> except
24593for applying the tonemapping curve specified by
24594<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
24595<p>Must not slow down frame rate relative to raw
24596sensor output.<wbr/></p></span>
24597                  </li>
24598                  <li>
24599                    <span class="entry_type_enum_name">FAST</span>
24600                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
24601reducing frame rate compared to raw sensor output.<wbr/></p></span>
24602                  </li>
24603                  <li>
24604                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
24605                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
24606the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
24607                  </li>
24608                  <li>
24609                    <span class="entry_type_enum_name">GAMMA_VALUE</span>
24610                    <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
24611tonemapping.<wbr/></p>
24612<p>All color enhancement and tonemapping must be disabled,<wbr/> except
24613for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
24614<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
24615                  </li>
24616                  <li>
24617                    <span class="entry_type_enum_name">PRESET_CURVE</span>
24618                    <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
24619<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
24620<p>All color enhancement and tonemapping must be disabled,<wbr/> except
24621for applying the tonemapping curve specified by
24622<a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
24623<p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
24624                  </li>
24625                </ul>
24626
24627            </td> <!-- entry_type -->
24628
24629            <td class="entry_description">
24630              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
24631            </td>
24632
24633            <td class="entry_units">
24634            </td>
24635
24636            <td class="entry_range">
24637              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
24638            </td>
24639
24640            <td class="entry_tags">
24641            </td>
24642
24643          </tr>
24644          <tr class="entries_header">
24645            <th class="th_details" colspan="5">Details</th>
24646          </tr>
24647          <tr class="entry_cont">
24648            <td class="entry_details" colspan="5">
24649              <p>When switching to an application-defined contrast curve by setting
24650<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
24651per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
24652mapping from input high-bit-depth pixel value to the output
24653low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
24654and output may change depending on the camera pipeline,<wbr/> the values
24655are specified by normalized floating-point numbers.<wbr/></p>
24656<p>More-complex color mapping operations such as 3D color look-up
24657tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
24658transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24659CONTRAST_<wbr/>CURVE.<wbr/></p>
24660<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
24661emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
24662These values are always available,<wbr/> and as close as possible to the
24663actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
24664<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
24665provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
24666roughly the same.<wbr/></p>
24667            </td>
24668          </tr>
24669
24670
24671          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24672           <!-- end of entry -->
24673
24674
24675          <tr class="entry" id="dynamic_android.tonemap.gamma">
24676            <td class="entry_name
24677             " rowspan="3">
24678              android.<wbr/>tonemap.<wbr/>gamma
24679            </td>
24680            <td class="entry_type">
24681                <span class="entry_type_name">float</span>
24682
24683              <span class="entry_type_visibility"> [public]</span>
24684
24685
24686
24687
24688
24689
24690            </td> <!-- entry_type -->
24691
24692            <td class="entry_description">
24693              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24694GAMMA_<wbr/>VALUE</p>
24695            </td>
24696
24697            <td class="entry_units">
24698            </td>
24699
24700            <td class="entry_range">
24701            </td>
24702
24703            <td class="entry_tags">
24704            </td>
24705
24706          </tr>
24707          <tr class="entries_header">
24708            <th class="th_details" colspan="5">Details</th>
24709          </tr>
24710          <tr class="entry_cont">
24711            <td class="entry_details" colspan="5">
24712              <p>The tonemap curve will be defined the following formula:
24713* OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
24714where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
24715pow is the power function and gamma is the gamma value specified by this
24716key.<wbr/></p>
24717<p>The same curve will be applied to all color channels.<wbr/> The camera device
24718may clip the input gamma value to its supported range.<wbr/> The actual applied
24719value will be returned in capture result.<wbr/></p>
24720<p>The valid range of gamma value varies on different devices,<wbr/> but values
24721within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
24722            </td>
24723          </tr>
24724
24725
24726          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24727           <!-- end of entry -->
24728
24729
24730          <tr class="entry" id="dynamic_android.tonemap.presetCurve">
24731            <td class="entry_name
24732             " rowspan="3">
24733              android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
24734            </td>
24735            <td class="entry_type">
24736                <span class="entry_type_name entry_type_name_enum">byte</span>
24737
24738              <span class="entry_type_visibility"> [public]</span>
24739
24740
24741
24742
24743
24744                <ul class="entry_type_enum">
24745                  <li>
24746                    <span class="entry_type_enum_name">SRGB</span>
24747                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
24748                  </li>
24749                  <li>
24750                    <span class="entry_type_enum_name">REC709</span>
24751                    <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
24752                  </li>
24753                </ul>
24754
24755            </td> <!-- entry_type -->
24756
24757            <td class="entry_description">
24758              <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24759PRESET_<wbr/>CURVE</p>
24760            </td>
24761
24762            <td class="entry_units">
24763            </td>
24764
24765            <td class="entry_range">
24766            </td>
24767
24768            <td class="entry_tags">
24769            </td>
24770
24771          </tr>
24772          <tr class="entries_header">
24773            <th class="th_details" colspan="5">Details</th>
24774          </tr>
24775          <tr class="entry_cont">
24776            <td class="entry_details" colspan="5">
24777              <p>The tonemap curve will be defined by specified standard.<wbr/></p>
24778<p>sRGB (approximated by 16 control points):</p>
24779<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24780<p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
24781<p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
24782<p>Note that above figures show a 16 control points approximation of preset
24783curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
24784            </td>
24785          </tr>
24786
24787
24788          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24789           <!-- end of entry -->
24790
24791
24792
24793      <!-- end of kind -->
24794      </tbody>
24795
24796  <!-- end of section -->
24797  <tr><td colspan="6" id="section_led" class="section">led</td></tr>
24798
24799
24800      <tr><td colspan="6" class="kind">controls</td></tr>
24801
24802      <thead class="entries_header">
24803        <tr>
24804          <th class="th_name">Property Name</th>
24805          <th class="th_type">Type</th>
24806          <th class="th_description">Description</th>
24807          <th class="th_units">Units</th>
24808          <th class="th_range">Range</th>
24809          <th class="th_tags">Tags</th>
24810        </tr>
24811      </thead>
24812
24813      <tbody>
24814
24815
24816
24817
24818
24819
24820
24821
24822
24823
24824          <tr class="entry" id="controls_android.led.transmit">
24825            <td class="entry_name
24826             " rowspan="1">
24827              android.<wbr/>led.<wbr/>transmit
24828            </td>
24829            <td class="entry_type">
24830                <span class="entry_type_name entry_type_name_enum">byte</span>
24831
24832              <span class="entry_type_visibility"> [hidden as boolean]</span>
24833
24834
24835
24836
24837
24838                <ul class="entry_type_enum">
24839                  <li>
24840                    <span class="entry_type_enum_name">OFF</span>
24841                  </li>
24842                  <li>
24843                    <span class="entry_type_enum_name">ON</span>
24844                  </li>
24845                </ul>
24846
24847            </td> <!-- entry_type -->
24848
24849            <td class="entry_description">
24850              <p>This LED is nominally used to indicate to the user
24851that the camera is powered on and may be streaming images back to the
24852Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
24853disable this when video is processed locally and not transmitted to
24854any untrusted applications.<wbr/></p>
24855<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
24856transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
24857data is stored locally on the device.<wbr/></p>
24858<p>The LED <em>may</em> be off if a trusted application is using the data that
24859doesn't violate the above rules.<wbr/></p>
24860            </td>
24861
24862            <td class="entry_units">
24863            </td>
24864
24865            <td class="entry_range">
24866            </td>
24867
24868            <td class="entry_tags">
24869            </td>
24870
24871          </tr>
24872
24873
24874          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24875           <!-- end of entry -->
24876
24877
24878
24879      <!-- end of kind -->
24880      </tbody>
24881      <tr><td colspan="6" class="kind">dynamic</td></tr>
24882
24883      <thead class="entries_header">
24884        <tr>
24885          <th class="th_name">Property Name</th>
24886          <th class="th_type">Type</th>
24887          <th class="th_description">Description</th>
24888          <th class="th_units">Units</th>
24889          <th class="th_range">Range</th>
24890          <th class="th_tags">Tags</th>
24891        </tr>
24892      </thead>
24893
24894      <tbody>
24895
24896
24897
24898
24899
24900
24901
24902
24903
24904
24905          <tr class="entry" id="dynamic_android.led.transmit">
24906            <td class="entry_name
24907             " rowspan="1">
24908              android.<wbr/>led.<wbr/>transmit
24909            </td>
24910            <td class="entry_type">
24911                <span class="entry_type_name entry_type_name_enum">byte</span>
24912
24913              <span class="entry_type_visibility"> [hidden as boolean]</span>
24914
24915
24916
24917
24918
24919                <ul class="entry_type_enum">
24920                  <li>
24921                    <span class="entry_type_enum_name">OFF</span>
24922                  </li>
24923                  <li>
24924                    <span class="entry_type_enum_name">ON</span>
24925                  </li>
24926                </ul>
24927
24928            </td> <!-- entry_type -->
24929
24930            <td class="entry_description">
24931              <p>This LED is nominally used to indicate to the user
24932that the camera is powered on and may be streaming images back to the
24933Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
24934disable this when video is processed locally and not transmitted to
24935any untrusted applications.<wbr/></p>
24936<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
24937transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
24938data is stored locally on the device.<wbr/></p>
24939<p>The LED <em>may</em> be off if a trusted application is using the data that
24940doesn't violate the above rules.<wbr/></p>
24941            </td>
24942
24943            <td class="entry_units">
24944            </td>
24945
24946            <td class="entry_range">
24947            </td>
24948
24949            <td class="entry_tags">
24950            </td>
24951
24952          </tr>
24953
24954
24955          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24956           <!-- end of entry -->
24957
24958
24959
24960      <!-- end of kind -->
24961      </tbody>
24962      <tr><td colspan="6" class="kind">static</td></tr>
24963
24964      <thead class="entries_header">
24965        <tr>
24966          <th class="th_name">Property Name</th>
24967          <th class="th_type">Type</th>
24968          <th class="th_description">Description</th>
24969          <th class="th_units">Units</th>
24970          <th class="th_range">Range</th>
24971          <th class="th_tags">Tags</th>
24972        </tr>
24973      </thead>
24974
24975      <tbody>
24976
24977
24978
24979
24980
24981
24982
24983
24984
24985
24986          <tr class="entry" id="static_android.led.availableLeds">
24987            <td class="entry_name
24988             " rowspan="1">
24989              android.<wbr/>led.<wbr/>available<wbr/>Leds
24990            </td>
24991            <td class="entry_type">
24992                <span class="entry_type_name entry_type_name_enum">byte</span>
24993                <span class="entry_type_container">x</span>
24994
24995                <span class="entry_type_array">
24996                  n
24997                </span>
24998              <span class="entry_type_visibility"> [hidden]</span>
24999
25000
25001
25002
25003
25004                <ul class="entry_type_enum">
25005                  <li>
25006                    <span class="entry_type_enum_name">TRANSMIT</span>
25007                    <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>
25008                  </li>
25009                </ul>
25010
25011            </td> <!-- entry_type -->
25012
25013            <td class="entry_description">
25014              <p>A list of camera LEDs that are available on this system.<wbr/></p>
25015            </td>
25016
25017            <td class="entry_units">
25018            </td>
25019
25020            <td class="entry_range">
25021            </td>
25022
25023            <td class="entry_tags">
25024            </td>
25025
25026          </tr>
25027
25028
25029          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25030           <!-- end of entry -->
25031
25032
25033
25034      <!-- end of kind -->
25035      </tbody>
25036
25037  <!-- end of section -->
25038  <tr><td colspan="6" id="section_info" class="section">info</td></tr>
25039
25040
25041      <tr><td colspan="6" class="kind">static</td></tr>
25042
25043      <thead class="entries_header">
25044        <tr>
25045          <th class="th_name">Property Name</th>
25046          <th class="th_type">Type</th>
25047          <th class="th_description">Description</th>
25048          <th class="th_units">Units</th>
25049          <th class="th_range">Range</th>
25050          <th class="th_tags">Tags</th>
25051        </tr>
25052      </thead>
25053
25054      <tbody>
25055
25056
25057
25058
25059
25060
25061
25062
25063
25064
25065          <tr class="entry" id="static_android.info.supportedHardwareLevel">
25066            <td class="entry_name
25067             " rowspan="5">
25068              android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
25069            </td>
25070            <td class="entry_type">
25071                <span class="entry_type_name entry_type_name_enum">byte</span>
25072
25073              <span class="entry_type_visibility"> [public]</span>
25074
25075
25076              <span class="entry_type_hwlevel">[legacy] </span>
25077
25078
25079
25080                <ul class="entry_type_enum">
25081                  <li>
25082                    <span class="entry_type_enum_name">LIMITED</span>
25083                    <span class="entry_type_enum_notes"><p>This camera device has only limited capabilities.<wbr/></p></span>
25084                  </li>
25085                  <li>
25086                    <span class="entry_type_enum_name">FULL</span>
25087                    <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p></span>
25088                  </li>
25089                  <li>
25090                    <span class="entry_type_enum_name">LEGACY</span>
25091                    <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p></span>
25092                  </li>
25093                </ul>
25094
25095            </td> <!-- entry_type -->
25096
25097            <td class="entry_description">
25098              <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
25099            </td>
25100
25101            <td class="entry_units">
25102            </td>
25103
25104            <td class="entry_range">
25105            </td>
25106
25107            <td class="entry_tags">
25108            </td>
25109
25110          </tr>
25111          <tr class="entries_header">
25112            <th class="th_details" colspan="5">Details</th>
25113          </tr>
25114          <tr class="entry_cont">
25115            <td class="entry_details" colspan="5">
25116              <p>Camera devices will come in three flavors: LEGACY,<wbr/> LIMITED and FULL.<wbr/></p>
25117<p>A FULL device will support below capabilities:</p>
25118<ul>
25119<li>BURST_<wbr/>CAPTURE capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains BURST_<wbr/>CAPTURE)</li>
25120<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>
25121<li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR)</li>
25122<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25123  MANUAL_<wbr/>POST_<wbr/>PROCESSING)</li>
25124<li>At least 3 processed (but not stalling) format output streams
25125  (<a href="#static_android.request.maxNumOutputProc">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc</a> <code>&gt;=</code> 3)</li>
25126<li>The required stream configurations defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a></li>
25127<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>
25128<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>
25129</ul>
25130<p>A LIMITED device may have some or none of the above characteristics.<wbr/>
25131To find out more refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
25132<p>Some features are not part of any particular hardware level or capability and must be
25133queried separately.<wbr/> These include:</p>
25134<ul>
25135<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
25136<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>
25137<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>
25138<li>Optical or electrical image stabilization
25139  (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
25140   <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
25141</ul>
25142<p>A LEGACY device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
25143post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/></p>
25144<p>Each higher level supports everything the lower level supports
25145in this order: FULL <code>&gt;</code> LIMITED <code>&gt;</code> LEGACY.<wbr/></p>
25146<p>Note:
25147Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
25148(<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>==</code> FREEFORM); this requirement was relaxed in API level 23,<wbr/>
25149and FULL devices may only support CENTERED cropping.<wbr/></p>
25150            </td>
25151          </tr>
25152
25153          <tr class="entries_header">
25154            <th class="th_details" colspan="5">HAL Implementation Details</th>
25155          </tr>
25156          <tr class="entry_cont">
25157            <td class="entry_details" colspan="5">
25158              <p>The camera 3 HAL device can implement one of two possible
25159operational modes; limited and full.<wbr/> Full support is
25160expected from new higher-end devices.<wbr/> Limited mode has
25161hardware requirements roughly in line with those for a
25162camera HAL device v1 implementation,<wbr/> and is expected from
25163older or inexpensive devices.<wbr/> Full is a strict superset of
25164limited,<wbr/> and they share the same essential operational flow.<wbr/></p>
25165<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
25166<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there
25167for backwards compatibility in the <code>android.<wbr/>hardware.<wbr/>camera2</code>
25168user-facing API only.<wbr/></p>
25169            </td>
25170          </tr>
25171
25172          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25173           <!-- end of entry -->
25174
25175
25176
25177      <!-- end of kind -->
25178      </tbody>
25179
25180  <!-- end of section -->
25181  <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr>
25182
25183
25184      <tr><td colspan="6" class="kind">controls</td></tr>
25185
25186      <thead class="entries_header">
25187        <tr>
25188          <th class="th_name">Property Name</th>
25189          <th class="th_type">Type</th>
25190          <th class="th_description">Description</th>
25191          <th class="th_units">Units</th>
25192          <th class="th_range">Range</th>
25193          <th class="th_tags">Tags</th>
25194        </tr>
25195      </thead>
25196
25197      <tbody>
25198
25199
25200
25201
25202
25203
25204
25205
25206
25207
25208          <tr class="entry" id="controls_android.blackLevel.lock">
25209            <td class="entry_name
25210             " rowspan="5">
25211              android.<wbr/>black<wbr/>Level.<wbr/>lock
25212            </td>
25213            <td class="entry_type">
25214                <span class="entry_type_name entry_type_name_enum">byte</span>
25215
25216              <span class="entry_type_visibility"> [public as boolean]</span>
25217
25218
25219              <span class="entry_type_hwlevel">[full] </span>
25220
25221
25222
25223                <ul class="entry_type_enum">
25224                  <li>
25225                    <span class="entry_type_enum_name">OFF</span>
25226                  </li>
25227                  <li>
25228                    <span class="entry_type_enum_name">ON</span>
25229                  </li>
25230                </ul>
25231
25232            </td> <!-- entry_type -->
25233
25234            <td class="entry_description">
25235              <p>Whether black-level compensation is locked
25236to its current values,<wbr/> or is free to vary.<wbr/></p>
25237            </td>
25238
25239            <td class="entry_units">
25240            </td>
25241
25242            <td class="entry_range">
25243            </td>
25244
25245            <td class="entry_tags">
25246              <ul class="entry_tags">
25247                  <li><a href="#tag_HAL2">HAL2</a></li>
25248              </ul>
25249            </td>
25250
25251          </tr>
25252          <tr class="entries_header">
25253            <th class="th_details" colspan="5">Details</th>
25254          </tr>
25255          <tr class="entry_cont">
25256            <td class="entry_details" colspan="5">
25257              <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
25258compensation will not change until the lock is set to
25259<code>false</code> (OFF).<wbr/></p>
25260<p>Since changes to certain capture parameters (such as
25261exposure time) may require resetting of black level
25262compensation,<wbr/> the camera device must report whether setting
25263the black level lock was successful in the output result
25264metadata.<wbr/></p>
25265<p>For example,<wbr/> if a sequence of requests is as follows:</p>
25266<ul>
25267<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
25268<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25269<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25270<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25271<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25272<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25273</ul>
25274<p>And the exposure change in Request 4 requires the camera
25275device to reset the black level offsets,<wbr/> then the output
25276result metadata is expected to be:</p>
25277<ul>
25278<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
25279<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25280<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25281<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
25282<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25283<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25284</ul>
25285<p>This indicates to the application that on frame 4,<wbr/> black
25286levels were reset due to exposure value changes,<wbr/> and pixel
25287values may not be consistent across captures.<wbr/></p>
25288<p>The camera device will maintain the lock to the extent
25289possible,<wbr/> only overriding the lock to OFF when changes to
25290other request parameters require a black level recalculation
25291or reset.<wbr/></p>
25292            </td>
25293          </tr>
25294
25295          <tr class="entries_header">
25296            <th class="th_details" colspan="5">HAL Implementation Details</th>
25297          </tr>
25298          <tr class="entry_cont">
25299            <td class="entry_details" colspan="5">
25300              <p>If for some reason black level locking is no longer possible
25301(for example,<wbr/> the analog gain has changed,<wbr/> which forces
25302black level offsets to be recalculated),<wbr/> then the HAL must
25303override this request (and it must report 'OFF' when this
25304does happen) until the next capture for which locking is
25305possible again.<wbr/></p>
25306            </td>
25307          </tr>
25308
25309          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25310           <!-- end of entry -->
25311
25312
25313
25314      <!-- end of kind -->
25315      </tbody>
25316      <tr><td colspan="6" class="kind">dynamic</td></tr>
25317
25318      <thead class="entries_header">
25319        <tr>
25320          <th class="th_name">Property Name</th>
25321          <th class="th_type">Type</th>
25322          <th class="th_description">Description</th>
25323          <th class="th_units">Units</th>
25324          <th class="th_range">Range</th>
25325          <th class="th_tags">Tags</th>
25326        </tr>
25327      </thead>
25328
25329      <tbody>
25330
25331
25332
25333
25334
25335
25336
25337
25338
25339
25340          <tr class="entry" id="dynamic_android.blackLevel.lock">
25341            <td class="entry_name
25342             " rowspan="5">
25343              android.<wbr/>black<wbr/>Level.<wbr/>lock
25344            </td>
25345            <td class="entry_type">
25346                <span class="entry_type_name entry_type_name_enum">byte</span>
25347
25348              <span class="entry_type_visibility"> [public as boolean]</span>
25349
25350
25351              <span class="entry_type_hwlevel">[full] </span>
25352
25353
25354
25355                <ul class="entry_type_enum">
25356                  <li>
25357                    <span class="entry_type_enum_name">OFF</span>
25358                  </li>
25359                  <li>
25360                    <span class="entry_type_enum_name">ON</span>
25361                  </li>
25362                </ul>
25363
25364            </td> <!-- entry_type -->
25365
25366            <td class="entry_description">
25367              <p>Whether black-level compensation is locked
25368to its current values,<wbr/> or is free to vary.<wbr/></p>
25369            </td>
25370
25371            <td class="entry_units">
25372            </td>
25373
25374            <td class="entry_range">
25375            </td>
25376
25377            <td class="entry_tags">
25378              <ul class="entry_tags">
25379                  <li><a href="#tag_HAL2">HAL2</a></li>
25380              </ul>
25381            </td>
25382
25383          </tr>
25384          <tr class="entries_header">
25385            <th class="th_details" colspan="5">Details</th>
25386          </tr>
25387          <tr class="entry_cont">
25388            <td class="entry_details" colspan="5">
25389              <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
25390ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
25391a change in other capture settings forced the camera device to
25392perform a black level reset.<wbr/></p>
25393            </td>
25394          </tr>
25395
25396          <tr class="entries_header">
25397            <th class="th_details" colspan="5">HAL Implementation Details</th>
25398          </tr>
25399          <tr class="entry_cont">
25400            <td class="entry_details" colspan="5">
25401              <p>If for some reason black level locking is no longer possible
25402(for example,<wbr/> the analog gain has changed,<wbr/> which forces
25403black level offsets to be recalculated),<wbr/> then the HAL must
25404override this request (and it must report 'OFF' when this
25405does happen) until the next capture for which locking is
25406possible again.<wbr/></p>
25407            </td>
25408          </tr>
25409
25410          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25411           <!-- end of entry -->
25412
25413
25414
25415      <!-- end of kind -->
25416      </tbody>
25417
25418  <!-- end of section -->
25419  <tr><td colspan="6" id="section_sync" class="section">sync</td></tr>
25420
25421
25422      <tr><td colspan="6" class="kind">dynamic</td></tr>
25423
25424      <thead class="entries_header">
25425        <tr>
25426          <th class="th_name">Property Name</th>
25427          <th class="th_type">Type</th>
25428          <th class="th_description">Description</th>
25429          <th class="th_units">Units</th>
25430          <th class="th_range">Range</th>
25431          <th class="th_tags">Tags</th>
25432        </tr>
25433      </thead>
25434
25435      <tbody>
25436
25437
25438
25439
25440
25441
25442
25443
25444
25445
25446          <tr class="entry" id="dynamic_android.sync.frameNumber">
25447            <td class="entry_name
25448             " rowspan="5">
25449              android.<wbr/>sync.<wbr/>frame<wbr/>Number
25450            </td>
25451            <td class="entry_type">
25452                <span class="entry_type_name entry_type_name_enum">int64</span>
25453
25454              <span class="entry_type_visibility"> [hidden]</span>
25455
25456
25457              <span class="entry_type_hwlevel">[legacy] </span>
25458
25459
25460
25461                <ul class="entry_type_enum">
25462                  <li>
25463                    <span class="entry_type_enum_name">CONVERGING</span>
25464                    <span class="entry_type_enum_value">-1</span>
25465                    <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
25466<p>Synchronization is in progress,<wbr/> and reading metadata from this
25467result may include a mix of data that have taken effect since the
25468last synchronization time.<wbr/></p>
25469<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
25470this value will update to the actual frame number frame number
25471the result is guaranteed to be synchronized to (as long as the
25472request settings remain constant).<wbr/></p></span>
25473                  </li>
25474                  <li>
25475                    <span class="entry_type_enum_name">UNKNOWN</span>
25476                    <span class="entry_type_enum_value">-2</span>
25477                    <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
25478<p>The result may have already converged,<wbr/> or it may be in
25479progress.<wbr/>  Reading from this result may include some mix
25480of settings from past requests.<wbr/></p>
25481<p>After a settings change,<wbr/> the new settings will eventually all
25482take effect for the output buffers and results.<wbr/> However,<wbr/> this
25483value will not change when that happens.<wbr/> Altering settings
25484rapidly may provide outcomes using mixes of settings from recent
25485requests.<wbr/></p>
25486<p>This value is intended primarily for backwards compatibility with
25487the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
25488                  </li>
25489                </ul>
25490
25491            </td> <!-- entry_type -->
25492
25493            <td class="entry_description">
25494              <p>The frame number corresponding to the last request
25495with which the output result (metadata + buffers) has been fully
25496synchronized.<wbr/></p>
25497            </td>
25498
25499            <td class="entry_units">
25500            </td>
25501
25502            <td class="entry_range">
25503              <p>Either a non-negative value corresponding to a
25504<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
25505            </td>
25506
25507            <td class="entry_tags">
25508              <ul class="entry_tags">
25509                  <li><a href="#tag_V1">V1</a></li>
25510              </ul>
25511            </td>
25512
25513          </tr>
25514          <tr class="entries_header">
25515            <th class="th_details" colspan="5">Details</th>
25516          </tr>
25517          <tr class="entry_cont">
25518            <td class="entry_details" colspan="5">
25519              <p>When a request is submitted to the camera device,<wbr/> there is usually a
25520delay of several frames before the controls get applied.<wbr/> A camera
25521device may either choose to account for this delay by implementing a
25522pipeline and carefully submit well-timed atomic control updates,<wbr/> or
25523it may start streaming control changes that span over several frame
25524boundaries.<wbr/></p>
25525<p>In the latter case,<wbr/> whenever a request's settings change relative to
25526the previous submitted request,<wbr/> the full set of changes may take
25527multiple frame durations to fully take effect.<wbr/> Some settings may
25528take effect sooner (in less frame durations) than others.<wbr/></p>
25529<p>While a set of control changes are being propagated,<wbr/> this value
25530will be CONVERGING.<wbr/></p>
25531<p>Once it is fully known that a set of control changes have been
25532finished propagating,<wbr/> and the resulting updated control settings
25533have been read back by the camera device,<wbr/> this value will be set
25534to a non-negative frame number (corresponding to the request to
25535which the results have synchronized to).<wbr/></p>
25536<p>Older camera device implementations may not have a way to detect
25537when all camera controls have been applied,<wbr/> and will always set this
25538value to UNKNOWN.<wbr/></p>
25539<p>FULL capability devices will always have this value set to the
25540frame number of the request corresponding to this result.<wbr/></p>
25541<p><em>Further details</em>:</p>
25542<ul>
25543<li>Whenever a request differs from the last request,<wbr/> any future
25544results not yet returned may have this value set to CONVERGING (this
25545could include any in-progress captures not yet returned by the camera
25546device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
25547<li>Submitting a series of multiple requests that differ from the
25548previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
25549moves the new synchronization frame to the last non-repeating
25550request (using the smallest frame number from the contiguous list of
25551repeating requests).<wbr/></li>
25552<li>Submitting the same request repeatedly will not change this value
25553to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
25554<li>When this value changes to non-negative,<wbr/> that means that all of the
25555metadata controls from the request have been applied,<wbr/> all of the
25556metadata controls from the camera device have been read to the
25557updated values (into the result),<wbr/> and all of the graphics buffers
25558corresponding to this result are also synchronized to the request.<wbr/></li>
25559</ul>
25560<p><em>Pipeline considerations</em>:</p>
25561<p>Submitting a request with updated controls relative to the previously
25562submitted requests may also invalidate the synchronization state
25563of all the results corresponding to currently in-flight requests.<wbr/></p>
25564<p>In other words,<wbr/> results for this current request and up to
25565<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
25566<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
25567            </td>
25568          </tr>
25569
25570          <tr class="entries_header">
25571            <th class="th_details" colspan="5">HAL Implementation Details</th>
25572          </tr>
25573          <tr class="entry_cont">
25574            <td class="entry_details" colspan="5">
25575              <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
25576is also UNKNOWN.<wbr/></p>
25577<p>FULL capability devices should simply set this value to the
25578<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
25579            </td>
25580          </tr>
25581
25582          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25583           <!-- end of entry -->
25584
25585
25586
25587      <!-- end of kind -->
25588      </tbody>
25589      <tr><td colspan="6" class="kind">static</td></tr>
25590
25591      <thead class="entries_header">
25592        <tr>
25593          <th class="th_name">Property Name</th>
25594          <th class="th_type">Type</th>
25595          <th class="th_description">Description</th>
25596          <th class="th_units">Units</th>
25597          <th class="th_range">Range</th>
25598          <th class="th_tags">Tags</th>
25599        </tr>
25600      </thead>
25601
25602      <tbody>
25603
25604
25605
25606
25607
25608
25609
25610
25611
25612
25613          <tr class="entry" id="static_android.sync.maxLatency">
25614            <td class="entry_name
25615             " rowspan="5">
25616              android.<wbr/>sync.<wbr/>max<wbr/>Latency
25617            </td>
25618            <td class="entry_type">
25619                <span class="entry_type_name entry_type_name_enum">int32</span>
25620
25621              <span class="entry_type_visibility"> [public]</span>
25622
25623
25624              <span class="entry_type_hwlevel">[legacy] </span>
25625
25626
25627
25628                <ul class="entry_type_enum">
25629                  <li>
25630                    <span class="entry_type_enum_name">PER_FRAME_CONTROL</span>
25631                    <span class="entry_type_enum_value">0</span>
25632                    <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
25633<p>Changing controls over multiple requests one after another will
25634produce results that have those controls applied atomically
25635each frame.<wbr/></p>
25636<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
25637                  </li>
25638                  <li>
25639                    <span class="entry_type_enum_name">UNKNOWN</span>
25640                    <span class="entry_type_enum_value">-1</span>
25641                    <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
25642of the past requests applied to the camera settings.<wbr/></p>
25643<p>By submitting a series of identical requests,<wbr/> the camera device
25644will eventually have the camera settings applied,<wbr/> but it is
25645unknown when that exact point will be.<wbr/></p>
25646<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
25647                  </li>
25648                </ul>
25649
25650            </td> <!-- entry_type -->
25651
25652            <td class="entry_description">
25653              <p>The maximum number of frames that can occur after a request
25654(different than the previous) has been submitted,<wbr/> and before the
25655result's state becomes synchronized.<wbr/></p>
25656            </td>
25657
25658            <td class="entry_units">
25659              Frame counts
25660            </td>
25661
25662            <td class="entry_range">
25663              <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
25664            </td>
25665
25666            <td class="entry_tags">
25667              <ul class="entry_tags">
25668                  <li><a href="#tag_V1">V1</a></li>
25669              </ul>
25670            </td>
25671
25672          </tr>
25673          <tr class="entries_header">
25674            <th class="th_details" colspan="5">Details</th>
25675          </tr>
25676          <tr class="entry_cont">
25677            <td class="entry_details" colspan="5">
25678              <p>This defines the maximum distance (in number of metadata results),<wbr/>
25679between the frame number of the request that has new controls to apply
25680and the frame number of the result that has all the controls applied.<wbr/></p>
25681<p>In other words this acts as an upper boundary for how many frames
25682must occur before the camera device knows for a fact that the new
25683submitted camera settings have been applied in outgoing frames.<wbr/></p>
25684            </td>
25685          </tr>
25686
25687          <tr class="entries_header">
25688            <th class="th_details" colspan="5">HAL Implementation Details</th>
25689          </tr>
25690          <tr class="entry_cont">
25691            <td class="entry_details" colspan="5">
25692              <p>For example if maxLatency was 2,<wbr/></p>
25693<pre><code>initial request = X (repeating)
25694request1 = X
25695request2 = Y
25696request3 = Y
25697request4 = Y
25698
25699where requestN has frameNumber N,<wbr/> and the first of the repeating
25700initial request's has frameNumber F (and F &lt; 1).<wbr/>
25701
25702initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
25703result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
25704result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
25705result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
25706result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
25707
25708where resultN has frameNumber N.<wbr/>
25709</code></pre>
25710<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
25711<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
25712<code>4 - 2 = 2</code>.<wbr/></p>
25713<p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
25714<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
25715<code>@link{android.<wbr/>hardware.<wbr/>camera2.<wbr/>Capture<wbr/>Result#get<wbr/>Frame<wbr/>Number}</code>.<wbr/></p>
25716<p>LIMITED devices are strongly encouraged to use a non-negative
25717value.<wbr/> If UNKNOWN is used here then app developers do not have a way
25718to know when sensor settings have been applied.<wbr/></p>
25719            </td>
25720          </tr>
25721
25722          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25723           <!-- end of entry -->
25724
25725
25726
25727      <!-- end of kind -->
25728      </tbody>
25729
25730  <!-- end of section -->
25731  <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr>
25732
25733
25734      <tr><td colspan="6" class="kind">controls</td></tr>
25735
25736      <thead class="entries_header">
25737        <tr>
25738          <th class="th_name">Property Name</th>
25739          <th class="th_type">Type</th>
25740          <th class="th_description">Description</th>
25741          <th class="th_units">Units</th>
25742          <th class="th_range">Range</th>
25743          <th class="th_tags">Tags</th>
25744        </tr>
25745      </thead>
25746
25747      <tbody>
25748
25749
25750
25751
25752
25753
25754
25755
25756
25757
25758          <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
25759            <td class="entry_name
25760             " rowspan="3">
25761              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
25762            </td>
25763            <td class="entry_type">
25764                <span class="entry_type_name">float</span>
25765
25766              <span class="entry_type_visibility"> [public]</span>
25767
25768
25769              <span class="entry_type_hwlevel">[limited] </span>
25770
25771
25772
25773
25774            </td> <!-- entry_type -->
25775
25776            <td class="entry_description">
25777              <p>The amount of exposure time increase factor applied to the original output
25778frame by the application processing before sending for reprocessing.<wbr/></p>
25779            </td>
25780
25781            <td class="entry_units">
25782              Relative exposure time increase factor.<wbr/>
25783            </td>
25784
25785            <td class="entry_range">
25786              <p>&gt;= 1.<wbr/>0</p>
25787            </td>
25788
25789            <td class="entry_tags">
25790              <ul class="entry_tags">
25791                  <li><a href="#tag_REPROC">REPROC</a></li>
25792              </ul>
25793            </td>
25794
25795          </tr>
25796          <tr class="entries_header">
25797            <th class="th_details" colspan="5">Details</th>
25798          </tr>
25799          <tr class="entry_cont">
25800            <td class="entry_details" colspan="5">
25801              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
25802capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
25803<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
25804output frames to effectively reduce the noise to the same level as a frame that was
25805captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
25806images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
25807the camera device is that the amount of noise in the image would be approximately what
25808would be expected if the original capture parameters had been a sensitivity of
25809S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
25810than S and T respectively.<wbr/> If the captured images were processed by the application
25811before being sent for reprocessing,<wbr/> then the application may have used image processing
25812algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
25813application-processed images (input images).<wbr/> By using the effectiveExposureFactor
25814control,<wbr/> the application can communicate to the camera device the actual noise level
25815improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
25816device can select appropriate noise reduction and edge enhancement parameters to avoid
25817excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
25818enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
25819<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
25820multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
25821fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
25822square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
25823adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
25824produce the best quality images.<wbr/></p>
25825<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
25826buffer in a way that affects its effective exposure time.<wbr/></p>
25827<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
25828reduction 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/>
25829Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
25830<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
25831            </td>
25832          </tr>
25833
25834
25835          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25836           <!-- end of entry -->
25837
25838
25839
25840      <!-- end of kind -->
25841      </tbody>
25842      <tr><td colspan="6" class="kind">dynamic</td></tr>
25843
25844      <thead class="entries_header">
25845        <tr>
25846          <th class="th_name">Property Name</th>
25847          <th class="th_type">Type</th>
25848          <th class="th_description">Description</th>
25849          <th class="th_units">Units</th>
25850          <th class="th_range">Range</th>
25851          <th class="th_tags">Tags</th>
25852        </tr>
25853      </thead>
25854
25855      <tbody>
25856
25857
25858
25859
25860
25861
25862
25863
25864
25865
25866          <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
25867            <td class="entry_name
25868             " rowspan="3">
25869              android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
25870            </td>
25871            <td class="entry_type">
25872                <span class="entry_type_name">float</span>
25873
25874              <span class="entry_type_visibility"> [public]</span>
25875
25876
25877              <span class="entry_type_hwlevel">[limited] </span>
25878
25879
25880
25881
25882            </td> <!-- entry_type -->
25883
25884            <td class="entry_description">
25885              <p>The amount of exposure time increase factor applied to the original output
25886frame by the application processing before sending for reprocessing.<wbr/></p>
25887            </td>
25888
25889            <td class="entry_units">
25890              Relative exposure time increase factor.<wbr/>
25891            </td>
25892
25893            <td class="entry_range">
25894              <p>&gt;= 1.<wbr/>0</p>
25895            </td>
25896
25897            <td class="entry_tags">
25898              <ul class="entry_tags">
25899                  <li><a href="#tag_REPROC">REPROC</a></li>
25900              </ul>
25901            </td>
25902
25903          </tr>
25904          <tr class="entries_header">
25905            <th class="th_details" colspan="5">Details</th>
25906          </tr>
25907          <tr class="entry_cont">
25908            <td class="entry_details" colspan="5">
25909              <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
25910capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
25911<p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
25912output frames to effectively reduce the noise to the same level as a frame that was
25913captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
25914images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
25915the camera device is that the amount of noise in the image would be approximately what
25916would be expected if the original capture parameters had been a sensitivity of
25917S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
25918than S and T respectively.<wbr/> If the captured images were processed by the application
25919before being sent for reprocessing,<wbr/> then the application may have used image processing
25920algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
25921application-processed images (input images).<wbr/> By using the effectiveExposureFactor
25922control,<wbr/> the application can communicate to the camera device the actual noise level
25923improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
25924device can select appropriate noise reduction and edge enhancement parameters to avoid
25925excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
25926enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
25927<p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
25928multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
25929fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
25930square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
25931adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
25932produce the best quality images.<wbr/></p>
25933<p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
25934buffer in a way that affects its effective exposure time.<wbr/></p>
25935<p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
25936reduction 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/>
25937Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
25938<code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
25939            </td>
25940          </tr>
25941
25942
25943          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25944           <!-- end of entry -->
25945
25946
25947
25948      <!-- end of kind -->
25949      </tbody>
25950      <tr><td colspan="6" class="kind">static</td></tr>
25951
25952      <thead class="entries_header">
25953        <tr>
25954          <th class="th_name">Property Name</th>
25955          <th class="th_type">Type</th>
25956          <th class="th_description">Description</th>
25957          <th class="th_units">Units</th>
25958          <th class="th_range">Range</th>
25959          <th class="th_tags">Tags</th>
25960        </tr>
25961      </thead>
25962
25963      <tbody>
25964
25965
25966
25967
25968
25969
25970
25971
25972
25973
25974          <tr class="entry" id="static_android.reprocess.maxCaptureStall">
25975            <td class="entry_name
25976             " rowspan="3">
25977              android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
25978            </td>
25979            <td class="entry_type">
25980                <span class="entry_type_name">int32</span>
25981
25982              <span class="entry_type_visibility"> [public]</span>
25983
25984
25985              <span class="entry_type_hwlevel">[limited] </span>
25986
25987
25988
25989
25990            </td> <!-- entry_type -->
25991
25992            <td class="entry_description">
25993              <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
25994reprocess capture request.<wbr/></p>
25995            </td>
25996
25997            <td class="entry_units">
25998              Number of frames.<wbr/>
25999            </td>
26000
26001            <td class="entry_range">
26002              <p>&lt;= 4</p>
26003            </td>
26004
26005            <td class="entry_tags">
26006              <ul class="entry_tags">
26007                  <li><a href="#tag_REPROC">REPROC</a></li>
26008              </ul>
26009            </td>
26010
26011          </tr>
26012          <tr class="entries_header">
26013            <th class="th_details" colspan="5">Details</th>
26014          </tr>
26015          <tr class="entry_cont">
26016            <td class="entry_details" colspan="5">
26017              <p>The key describes the maximal interference that one reprocess (input) request
26018can introduce to the camera simultaneous streaming of regular (output) capture
26019requests,<wbr/> including repeating requests.<wbr/></p>
26020<p>When a reprocessing capture request is submitted while a camera output repeating request
26021(e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
26022pipeline for at least one frame duration so that the camera device is unable to process
26023the following capture request in time for the next sensor start of exposure boundary.<wbr/>
26024When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
26025duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
26026glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
26027the worst-case number of frame stall introduced by one reprocess request with any kind of
26028formats/<wbr/>sizes combination.<wbr/></p>
26029<p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
26030ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
26031<p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
26032i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
26033YUV_<wbr/>REPROCESSING).<wbr/></p>
26034            </td>
26035          </tr>
26036
26037
26038          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26039           <!-- end of entry -->
26040
26041
26042
26043      <!-- end of kind -->
26044      </tbody>
26045
26046  <!-- end of section -->
26047  <tr><td colspan="6" id="section_depth" class="section">depth</td></tr>
26048
26049
26050      <tr><td colspan="6" class="kind">static</td></tr>
26051
26052      <thead class="entries_header">
26053        <tr>
26054          <th class="th_name">Property Name</th>
26055          <th class="th_type">Type</th>
26056          <th class="th_description">Description</th>
26057          <th class="th_units">Units</th>
26058          <th class="th_range">Range</th>
26059          <th class="th_tags">Tags</th>
26060        </tr>
26061      </thead>
26062
26063      <tbody>
26064
26065
26066
26067
26068
26069
26070
26071
26072
26073
26074          <tr class="entry" id="static_android.depth.maxDepthSamples">
26075            <td class="entry_name
26076             " rowspan="3">
26077              android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
26078            </td>
26079            <td class="entry_type">
26080                <span class="entry_type_name">int32</span>
26081
26082              <span class="entry_type_visibility"> [system]</span>
26083
26084
26085              <span class="entry_type_hwlevel">[limited] </span>
26086
26087
26088
26089
26090            </td> <!-- entry_type -->
26091
26092            <td class="entry_description">
26093              <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
26094            </td>
26095
26096            <td class="entry_units">
26097            </td>
26098
26099            <td class="entry_range">
26100            </td>
26101
26102            <td class="entry_tags">
26103              <ul class="entry_tags">
26104                  <li><a href="#tag_DEPTH">DEPTH</a></li>
26105              </ul>
26106            </td>
26107
26108          </tr>
26109          <tr class="entries_header">
26110            <th class="th_details" colspan="5">Details</th>
26111          </tr>
26112          <tr class="entry_cont">
26113            <td class="entry_details" colspan="5">
26114              <p>If a camera device supports outputting depth range data in the form of a depth point
26115cloud (<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
26116number of points an output buffer may contain.<wbr/></p>
26117<p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
26118If output in the depth point cloud format is not supported,<wbr/> this entry will
26119not be defined.<wbr/></p>
26120            </td>
26121          </tr>
26122
26123
26124          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26125           <!-- end of entry -->
26126
26127
26128          <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
26129            <td class="entry_name
26130             " rowspan="3">
26131              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
26132            </td>
26133            <td class="entry_type">
26134                <span class="entry_type_name entry_type_name_enum">int32</span>
26135                <span class="entry_type_container">x</span>
26136
26137                <span class="entry_type_array">
26138                  n x 4
26139                </span>
26140              <span class="entry_type_visibility"> [hidden as streamConfiguration]</span>
26141
26142
26143              <span class="entry_type_hwlevel">[limited] </span>
26144
26145
26146
26147                <ul class="entry_type_enum">
26148                  <li>
26149                    <span class="entry_type_enum_name">OUTPUT</span>
26150                  </li>
26151                  <li>
26152                    <span class="entry_type_enum_name">INPUT</span>
26153                  </li>
26154                </ul>
26155
26156            </td> <!-- entry_type -->
26157
26158            <td class="entry_description">
26159              <p>The available depth dataspace stream
26160configurations that this camera device supports
26161(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
26162            </td>
26163
26164            <td class="entry_units">
26165            </td>
26166
26167            <td class="entry_range">
26168            </td>
26169
26170            <td class="entry_tags">
26171              <ul class="entry_tags">
26172                  <li><a href="#tag_DEPTH">DEPTH</a></li>
26173              </ul>
26174            </td>
26175
26176          </tr>
26177          <tr class="entries_header">
26178            <th class="th_details" colspan="5">Details</th>
26179          </tr>
26180          <tr class="entry_cont">
26181            <td class="entry_details" colspan="5">
26182              <p>These are output stream configurations for use with
26183dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
26184listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
26185<p>Only devices that support depth output for at least
26186the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
26187this entry.<wbr/></p>
26188<p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
26189sparse depth point cloud must report a single entry for
26190the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
26191<a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
26192the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
26193            </td>
26194          </tr>
26195
26196
26197          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26198           <!-- end of entry -->
26199
26200
26201          <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
26202            <td class="entry_name
26203             " rowspan="3">
26204              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
26205            </td>
26206            <td class="entry_type">
26207                <span class="entry_type_name">int64</span>
26208                <span class="entry_type_container">x</span>
26209
26210                <span class="entry_type_array">
26211                  4 x n
26212                </span>
26213              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
26214
26215
26216              <span class="entry_type_hwlevel">[limited] </span>
26217
26218
26219
26220
26221            </td> <!-- entry_type -->
26222
26223            <td class="entry_description">
26224              <p>This lists the minimum frame duration for each
26225format/<wbr/>size combination for depth output formats.<wbr/></p>
26226            </td>
26227
26228            <td class="entry_units">
26229              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
26230            </td>
26231
26232            <td class="entry_range">
26233            </td>
26234
26235            <td class="entry_tags">
26236              <ul class="entry_tags">
26237                  <li><a href="#tag_DEPTH">DEPTH</a></li>
26238              </ul>
26239            </td>
26240
26241          </tr>
26242          <tr class="entries_header">
26243            <th class="th_details" colspan="5">Details</th>
26244          </tr>
26245          <tr class="entry_cont">
26246            <td class="entry_details" colspan="5">
26247              <p>This should correspond to the frame duration when only that
26248stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
26249set to either OFF or FAST.<wbr/></p>
26250<p>When multiple streams are used in a request,<wbr/> the minimum frame
26251duration will be max(individual stream min durations).<wbr/></p>
26252<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
26253is the same regardless of whether the stream is input or output.<wbr/></p>
26254<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
26255<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
26256calculating the max frame rate.<wbr/></p>
26257<p>(Keep in sync with <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
26258            </td>
26259          </tr>
26260
26261
26262          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26263           <!-- end of entry -->
26264
26265
26266          <tr class="entry" id="static_android.depth.availableDepthStallDurations">
26267            <td class="entry_name
26268             " rowspan="3">
26269              android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
26270            </td>
26271            <td class="entry_type">
26272                <span class="entry_type_name">int64</span>
26273                <span class="entry_type_container">x</span>
26274
26275                <span class="entry_type_array">
26276                  4 x n
26277                </span>
26278              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
26279
26280
26281              <span class="entry_type_hwlevel">[limited] </span>
26282
26283
26284
26285
26286            </td> <!-- entry_type -->
26287
26288            <td class="entry_description">
26289              <p>This lists the maximum stall duration for each
26290output format/<wbr/>size combination for depth streams.<wbr/></p>
26291            </td>
26292
26293            <td class="entry_units">
26294              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
26295            </td>
26296
26297            <td class="entry_range">
26298            </td>
26299
26300            <td class="entry_tags">
26301              <ul class="entry_tags">
26302                  <li><a href="#tag_DEPTH">DEPTH</a></li>
26303              </ul>
26304            </td>
26305
26306          </tr>
26307          <tr class="entries_header">
26308            <th class="th_details" colspan="5">Details</th>
26309          </tr>
26310          <tr class="entry_cont">
26311            <td class="entry_details" colspan="5">
26312              <p>A stall duration is how much extra time would get added
26313to the normal minimum frame duration for a repeating request
26314that has streams with non-zero stall.<wbr/></p>
26315<p>This functions similarly to
26316<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
26317streams.<wbr/></p>
26318<p>All depth output stream formats may have a nonzero stall
26319duration.<wbr/></p>
26320            </td>
26321          </tr>
26322
26323
26324          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26325           <!-- end of entry -->
26326
26327
26328          <tr class="entry" id="static_android.depth.depthIsExclusive">
26329            <td class="entry_name
26330             " rowspan="3">
26331              android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
26332            </td>
26333            <td class="entry_type">
26334                <span class="entry_type_name entry_type_name_enum">byte</span>
26335
26336              <span class="entry_type_visibility"> [public as boolean]</span>
26337
26338
26339              <span class="entry_type_hwlevel">[limited] </span>
26340
26341
26342
26343                <ul class="entry_type_enum">
26344                  <li>
26345                    <span class="entry_type_enum_name">FALSE</span>
26346                  </li>
26347                  <li>
26348                    <span class="entry_type_enum_name">TRUE</span>
26349                  </li>
26350                </ul>
26351
26352            </td> <!-- entry_type -->
26353
26354            <td class="entry_description">
26355              <p>Indicates whether a capture request may target both a
26356DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
26357YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
26358            </td>
26359
26360            <td class="entry_units">
26361            </td>
26362
26363            <td class="entry_range">
26364            </td>
26365
26366            <td class="entry_tags">
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>If TRUE,<wbr/> including both depth and color outputs in a single
26376capture request is not supported.<wbr/> An application must interleave color
26377and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
26378of output.<wbr/></p>
26379<p>Typically,<wbr/> this restriction exists on camera devices that
26380need to emit a specific pattern or wavelength of light to
26381measure depth values,<wbr/> which causes the color image to be
26382corrupted during depth measurement.<wbr/></p>
26383            </td>
26384          </tr>
26385
26386
26387          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26388           <!-- end of entry -->
26389
26390
26391
26392      <!-- end of kind -->
26393      </tbody>
26394
26395  <!-- end of section -->
26396<!-- </namespace> -->
26397  </table>
26398
26399  <div class="tags" id="tag_index">
26400    <h2>Tags</h2>
26401    <ul>
26402      <li id="tag_BC">BC -
26403        Needed for backwards compatibility with old Java API
26404
26405        <ul class="tags_entries">
26406          <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
26407          <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
26408          <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
26409          <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
26410          <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
26411          <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
26412          <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
26413          <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
26414          <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
26415          <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
26416          <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
26417          <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
26418          <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
26419          <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
26420          <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
26421          <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
26422          <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
26423          <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
26424          <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
26425          <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
26426          <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
26427          <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
26428          <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
26429          <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
26430          <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
26431          <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
26432          <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
26433          <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
26434          <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
26435          <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
26436          <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
26437          <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
26438          <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
26439          <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
26440          <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
26441          <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
26442          <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
26443          <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
26444          <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
26445          <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
26446          <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
26447          <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
26448          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
26449          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
26450          <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
26451          <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
26452          <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
26453          <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
26454          <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
26455          <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
26456          <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
26457          <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
26458          <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
26459          <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
26460          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
26461          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
26462          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
26463          <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
26464          <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
26465          <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
26466          <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
26467          <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
26468          <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
26469          <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
26470          <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
26471          <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
26472          <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
26473        </ul>
26474      </li> <!-- tag_BC -->
26475      <li id="tag_V1">V1 -
26476        New features for first camera 2 release (API1)
26477
26478        <ul class="tags_entries">
26479          <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
26480          <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
26481          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
26482          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
26483          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
26484          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
26485          <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
26486          <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
26487          <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
26488          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
26489          <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
26490          <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
26491          <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
26492          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
26493          <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
26494          <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
26495          <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
26496          <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
26497          <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
26498          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
26499          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
26500          <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
26501          <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
26502          <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
26503          <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
26504          <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
26505          <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
26506          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
26507          <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
26508          <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
26509          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
26510          <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
26511          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
26512          <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
26513          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
26514          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
26515          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
26516          <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
26517          <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
26518          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
26519          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
26520          <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
26521          <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
26522          <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
26523          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
26524        </ul>
26525      </li> <!-- tag_V1 -->
26526      <li id="tag_RAW">RAW -
26527        Needed for useful RAW image processing and DNG file support
26528
26529        <ul class="tags_entries">
26530          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
26531          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
26532          <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
26533          <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
26534          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
26535          <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
26536          <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
26537          <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
26538          <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
26539          <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
26540          <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
26541          <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
26542          <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
26543          <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
26544          <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
26545          <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
26546          <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
26547          <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
26548          <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
26549          <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
26550          <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
26551          <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
26552          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
26553          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
26554          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
26555          <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
26556          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
26557        </ul>
26558      </li> <!-- tag_RAW -->
26559      <li id="tag_HAL2">HAL2 -
26560        Entry is only used by camera device HAL 2.x
26561
26562        <ul class="tags_entries">
26563          <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
26564          <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
26565          <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
26566          <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
26567          <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
26568        </ul>
26569      </li> <!-- tag_HAL2 -->
26570      <li id="tag_FULL">FULL -
26571        Entry is required for full hardware level devices, and optional for other hardware levels
26572
26573        <ul class="tags_entries">
26574          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
26575        </ul>
26576      </li> <!-- tag_FULL -->
26577      <li id="tag_DEPTH">DEPTH -
26578        Entry is required for the depth capability.
26579
26580        <ul class="tags_entries">
26581          <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
26582          <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
26583          <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
26584          <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
26585          <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
26586          <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
26587          <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
26588          <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
26589        </ul>
26590      </li> <!-- tag_DEPTH -->
26591      <li id="tag_REPROC">REPROC -
26592        Entry is required for the YUV or PRIVATE reprocessing capability.
26593
26594        <ul class="tags_entries">
26595          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
26596          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
26597          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
26598          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
26599          <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
26600          <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
26601          <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
26602          <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
26603          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
26604          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
26605        </ul>
26606      </li> <!-- tag_REPROC -->
26607      <li id="tag_FUTURE">FUTURE -
26608        Entry is  under-specified and is not required for now. This is for book-keeping purpose,
26609        do not implement or use it, it may be revised for future.
26610
26611        <ul class="tags_entries">
26612          <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
26613          <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
26614          <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
26615          <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
26616          <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
26617          <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
26618          <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
26619          <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
26620          <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
26621          <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
26622          <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
26623          <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
26624          <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
26625          <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
26626          <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
26627          <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
26628          <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
26629          <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
26630          <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
26631          <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
26632          <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
26633        </ul>
26634      </li> <!-- tag_FUTURE -->
26635    </ul>
26636  </div>
26637
26638  [ <a href="#">top</a> ]
26639
26640</body>
26641</html>
26642