• 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          </ul>
229        </li>
230        <li>
231          <span class="toc_kind_header">dynamic</span>
232          <ul class="toc_section">
233            <li
234                class="toc_deprecated"
235            ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
236            <li
237            ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
238            <li
239            ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
240            <li
241            ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
242            <li
243            ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
244            <li
245            ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
246            <li
247            ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
248            <li
249            ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
250            <li
251            ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
252            <li
253            ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
254            <li
255            ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
256            <li
257            ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
258            <li
259            ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
260            <li
261                class="toc_deprecated"
262            ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
263            <li
264            ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
265            <li
266            ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
267            <li
268            ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
269            <li
270            ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
271            <li
272            ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
273            <li
274            ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
275            <li
276            ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
277            <li
278            ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
279            <li
280            ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
281          </ul>
282        </li>
283      </ul> <!-- toc_section -->
284    </li>
285    <li>
286      <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
287      <ul class="toc_section">
288        <li>
289          <span class="toc_kind_header">controls</span>
290          <ul class="toc_section">
291            <li
292            ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
293          </ul>
294        </li>
295      </ul> <!-- toc_section -->
296    </li>
297    <li>
298      <span class="toc_section_header"><a href="#section_edge">edge</a></span>
299      <ul class="toc_section">
300        <li>
301          <span class="toc_kind_header">controls</span>
302          <ul class="toc_section">
303            <li
304            ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
305            <li
306            ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
307          </ul>
308        </li>
309        <li>
310          <span class="toc_kind_header">static</span>
311          <ul class="toc_section">
312            <li
313            ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
314          </ul>
315        </li>
316        <li>
317          <span class="toc_kind_header">dynamic</span>
318          <ul class="toc_section">
319            <li
320            ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
321          </ul>
322        </li>
323      </ul> <!-- toc_section -->
324    </li>
325    <li>
326      <span class="toc_section_header"><a href="#section_flash">flash</a></span>
327      <ul class="toc_section">
328        <li>
329          <span class="toc_kind_header">controls</span>
330          <ul class="toc_section">
331            <li
332            ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
333            <li
334            ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
335            <li
336            ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
337          </ul>
338        </li>
339        <li>
340          <span class="toc_kind_header">static</span>
341          <ul class="toc_section">
342
343            <li
344            ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
345            <li
346            ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
347
348            <li
349            ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
350            <li
351            ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
352          </ul>
353        </li>
354        <li>
355          <span class="toc_kind_header">dynamic</span>
356          <ul class="toc_section">
357            <li
358            ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
359            <li
360            ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
361            <li
362            ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
363            <li
364            ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
365          </ul>
366        </li>
367      </ul> <!-- toc_section -->
368    </li>
369    <li>
370      <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
371      <ul class="toc_section">
372        <li>
373          <span class="toc_kind_header">controls</span>
374          <ul class="toc_section">
375            <li
376            ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
377          </ul>
378        </li>
379        <li>
380          <span class="toc_kind_header">static</span>
381          <ul class="toc_section">
382            <li
383            ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
384          </ul>
385        </li>
386        <li>
387          <span class="toc_kind_header">dynamic</span>
388          <ul class="toc_section">
389            <li
390            ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
391          </ul>
392        </li>
393      </ul> <!-- toc_section -->
394    </li>
395    <li>
396      <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
397      <ul class="toc_section">
398        <li>
399          <span class="toc_kind_header">controls</span>
400          <ul class="toc_section">
401            <li
402            ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
403            <li
404            ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
405            <li
406            ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
407            <li
408            ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
409            <li
410            ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
411            <li
412            ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
413            <li
414            ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
415            <li
416            ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
417          </ul>
418        </li>
419        <li>
420          <span class="toc_kind_header">static</span>
421          <ul class="toc_section">
422            <li
423            ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
424            <li
425            ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
426          </ul>
427        </li>
428        <li>
429          <span class="toc_kind_header">dynamic</span>
430          <ul class="toc_section">
431            <li
432            ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
433            <li
434            ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
435            <li
436            ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
437            <li
438            ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
439            <li
440            ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
441            <li
442            ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
443            <li
444            ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
445            <li
446            ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
447            <li
448            ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
449          </ul>
450        </li>
451      </ul> <!-- toc_section -->
452    </li>
453    <li>
454      <span class="toc_section_header"><a href="#section_lens">lens</a></span>
455      <ul class="toc_section">
456        <li>
457          <span class="toc_kind_header">controls</span>
458          <ul class="toc_section">
459            <li
460            ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
461            <li
462            ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
463            <li
464            ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
465            <li
466            ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
467            <li
468            ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
469          </ul>
470        </li>
471        <li>
472          <span class="toc_kind_header">static</span>
473          <ul class="toc_section">
474
475            <li
476            ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
477            <li
478            ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
479            <li
480            ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
481            <li
482            ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
483            <li
484            ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
485            <li
486            ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
487            <li
488            ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
489            <li
490            ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
491
492            <li
493            ><a href="#static_android.lens.facing">android.lens.facing</a></li>
494            <li
495            ><a href="#static_android.lens.opticalAxisAngle">android.lens.opticalAxisAngle</a></li>
496            <li
497            ><a href="#static_android.lens.position">android.lens.position</a></li>
498          </ul>
499        </li>
500        <li>
501          <span class="toc_kind_header">dynamic</span>
502          <ul class="toc_section">
503            <li
504            ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
505            <li
506            ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
507            <li
508            ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
509            <li
510            ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
511            <li
512            ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
513            <li
514            ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
515            <li
516            ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
517          </ul>
518        </li>
519      </ul> <!-- toc_section -->
520    </li>
521    <li>
522      <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
523      <ul class="toc_section">
524        <li>
525          <span class="toc_kind_header">controls</span>
526          <ul class="toc_section">
527            <li
528            ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
529            <li
530            ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
531          </ul>
532        </li>
533        <li>
534          <span class="toc_kind_header">static</span>
535          <ul class="toc_section">
536            <li
537            ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
538          </ul>
539        </li>
540        <li>
541          <span class="toc_kind_header">dynamic</span>
542          <ul class="toc_section">
543            <li
544            ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
545          </ul>
546        </li>
547      </ul> <!-- toc_section -->
548    </li>
549    <li>
550      <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
551      <ul class="toc_section">
552        <li>
553          <span class="toc_kind_header">static</span>
554          <ul class="toc_section">
555            <li
556                class="toc_deprecated"
557            ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
558            <li
559                class="toc_deprecated"
560            ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
561            <li
562                class="toc_deprecated"
563            ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
564            <li
565                class="toc_deprecated"
566            ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
567          </ul>
568        </li>
569        <li>
570          <span class="toc_kind_header">dynamic</span>
571          <ul class="toc_section">
572            <li
573                class="toc_deprecated"
574            ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
575          </ul>
576        </li>
577      </ul> <!-- toc_section -->
578    </li>
579    <li>
580      <span class="toc_section_header"><a href="#section_request">request</a></span>
581      <ul class="toc_section">
582        <li>
583          <span class="toc_kind_header">controls</span>
584          <ul class="toc_section">
585            <li
586                class="toc_deprecated"
587            ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
588            <li
589            ><a href="#controls_android.request.id">android.request.id</a></li>
590            <li
591                class="toc_deprecated"
592            ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
593            <li
594            ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
595            <li
596                class="toc_deprecated"
597            ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
598            <li
599                class="toc_deprecated"
600            ><a href="#controls_android.request.type">android.request.type</a></li>
601          </ul>
602        </li>
603        <li>
604          <span class="toc_kind_header">static</span>
605          <ul class="toc_section">
606            <li
607            ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
608            <li
609            ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
610            <li
611            ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
612            <li
613            ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
614            <li
615                class="toc_deprecated"
616            ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
617            <li
618            ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
619            <li
620            ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
621            <li
622            ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
623            <li
624            ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
625            <li
626            ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
627            <li
628            ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
629            <li
630            ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
631          </ul>
632        </li>
633        <li>
634          <span class="toc_kind_header">dynamic</span>
635          <ul class="toc_section">
636            <li
637                class="toc_deprecated"
638            ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
639            <li
640            ><a href="#dynamic_android.request.id">android.request.id</a></li>
641            <li
642            ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
643            <li
644                class="toc_deprecated"
645            ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
646            <li
647            ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
648          </ul>
649        </li>
650      </ul> <!-- toc_section -->
651    </li>
652    <li>
653      <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
654      <ul class="toc_section">
655        <li>
656          <span class="toc_kind_header">controls</span>
657          <ul class="toc_section">
658            <li
659            ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
660          </ul>
661        </li>
662        <li>
663          <span class="toc_kind_header">static</span>
664          <ul class="toc_section">
665            <li
666                class="toc_deprecated"
667            ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
668            <li
669                class="toc_deprecated"
670            ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
671            <li
672                class="toc_deprecated"
673            ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
674            <li
675            ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
676            <li
677                class="toc_deprecated"
678            ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
679            <li
680                class="toc_deprecated"
681            ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
682            <li
683                class="toc_deprecated"
684            ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
685            <li
686                class="toc_deprecated"
687            ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
688            <li
689            ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
690            <li
691            ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
692            <li
693            ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
694            <li
695            ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
696            <li
697            ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
698            <li
699            ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
700          </ul>
701        </li>
702        <li>
703          <span class="toc_kind_header">dynamic</span>
704          <ul class="toc_section">
705            <li
706            ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
707          </ul>
708        </li>
709      </ul> <!-- toc_section -->
710    </li>
711    <li>
712      <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
713      <ul class="toc_section">
714        <li>
715          <span class="toc_kind_header">controls</span>
716          <ul class="toc_section">
717            <li
718            ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
719            <li
720            ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
721            <li
722            ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
723            <li
724            ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
725            <li
726            ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
727          </ul>
728        </li>
729        <li>
730          <span class="toc_kind_header">static</span>
731          <ul class="toc_section">
732
733            <li
734            ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
735            <li
736            ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
737            <li
738            ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
739            <li
740            ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
741            <li
742            ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
743            <li
744            ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
745            <li
746            ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
747            <li
748            ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
749            <li
750            ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
751
752            <li
753            ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
754            <li
755            ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
756            <li
757            ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
758            <li
759            ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
760            <li
761            ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
762            <li
763            ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
764            <li
765            ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
766            <li
767            ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
768            <li
769            ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
770            <li
771            ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
772            <li
773            ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
774            <li
775            ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
776            <li
777            ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
778            <li
779            ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
780          </ul>
781        </li>
782        <li>
783          <span class="toc_kind_header">dynamic</span>
784          <ul class="toc_section">
785            <li
786            ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
787            <li
788            ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
789            <li
790            ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
791            <li
792            ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
793            <li
794            ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
795            <li
796            ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
797            <li
798            ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
799            <li
800            ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
801            <li
802            ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
803            <li
804            ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
805            <li
806            ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
807            <li
808            ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
809            <li
810            ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
811          </ul>
812        </li>
813      </ul> <!-- toc_section -->
814    </li>
815    <li>
816      <span class="toc_section_header"><a href="#section_shading">shading</a></span>
817      <ul class="toc_section">
818        <li>
819          <span class="toc_kind_header">controls</span>
820          <ul class="toc_section">
821            <li
822            ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
823            <li
824            ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
825          </ul>
826        </li>
827        <li>
828          <span class="toc_kind_header">dynamic</span>
829          <ul class="toc_section">
830            <li
831            ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
832          </ul>
833        </li>
834      </ul> <!-- toc_section -->
835    </li>
836    <li>
837      <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
838      <ul class="toc_section">
839        <li>
840          <span class="toc_kind_header">controls</span>
841          <ul class="toc_section">
842            <li
843            ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
844            <li
845            ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
846            <li
847            ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
848            <li
849            ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
850            <li
851            ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
852          </ul>
853        </li>
854        <li>
855          <span class="toc_kind_header">static</span>
856          <ul class="toc_section">
857
858            <li
859            ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
860            <li
861            ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
862            <li
863            ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
864            <li
865            ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
866            <li
867            ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
868            <li
869            ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
870            <li
871            ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
872
873          </ul>
874        </li>
875        <li>
876          <span class="toc_kind_header">dynamic</span>
877          <ul class="toc_section">
878            <li
879            ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
880            <li
881            ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
882            <li
883            ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
884            <li
885            ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
886            <li
887            ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
888            <li
889            ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
890            <li
891            ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
892            <li
893            ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
894            <li
895            ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
896            <li
897            ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
898            <li
899            ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
900            <li
901            ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
902            <li
903                class="toc_deprecated"
904            ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
905            <li
906                class="toc_deprecated"
907            ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
908            <li
909            ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
910            <li
911            ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
912            <li
913            ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
914            <li
915            ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
916          </ul>
917        </li>
918      </ul> <!-- toc_section -->
919    </li>
920    <li>
921      <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
922      <ul class="toc_section">
923        <li>
924          <span class="toc_kind_header">controls</span>
925          <ul class="toc_section">
926            <li
927            ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
928            <li
929            ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
930            <li
931            ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
932            <li
933            ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
934            <li
935            ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
936          </ul>
937        </li>
938        <li>
939          <span class="toc_kind_header">static</span>
940          <ul class="toc_section">
941            <li
942            ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
943            <li
944            ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
945          </ul>
946        </li>
947        <li>
948          <span class="toc_kind_header">dynamic</span>
949          <ul class="toc_section">
950            <li
951            ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
952            <li
953            ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
954            <li
955            ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
956            <li
957            ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
958            <li
959            ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
960          </ul>
961        </li>
962      </ul> <!-- toc_section -->
963    </li>
964    <li>
965      <span class="toc_section_header"><a href="#section_led">led</a></span>
966      <ul class="toc_section">
967        <li>
968          <span class="toc_kind_header">controls</span>
969          <ul class="toc_section">
970            <li
971            ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
972          </ul>
973        </li>
974        <li>
975          <span class="toc_kind_header">dynamic</span>
976          <ul class="toc_section">
977            <li
978            ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
979          </ul>
980        </li>
981        <li>
982          <span class="toc_kind_header">static</span>
983          <ul class="toc_section">
984            <li
985            ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
986          </ul>
987        </li>
988      </ul> <!-- toc_section -->
989    </li>
990    <li>
991      <span class="toc_section_header"><a href="#section_info">info</a></span>
992      <ul class="toc_section">
993        <li>
994          <span class="toc_kind_header">static</span>
995          <ul class="toc_section">
996            <li
997            ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
998          </ul>
999        </li>
1000      </ul> <!-- toc_section -->
1001    </li>
1002    <li>
1003      <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1004      <ul class="toc_section">
1005        <li>
1006          <span class="toc_kind_header">controls</span>
1007          <ul class="toc_section">
1008            <li
1009            ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1010          </ul>
1011        </li>
1012        <li>
1013          <span class="toc_kind_header">dynamic</span>
1014          <ul class="toc_section">
1015            <li
1016            ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1017          </ul>
1018        </li>
1019      </ul> <!-- toc_section -->
1020    </li>
1021    <li>
1022      <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1023      <ul class="toc_section">
1024        <li>
1025          <span class="toc_kind_header">dynamic</span>
1026          <ul class="toc_section">
1027            <li
1028            ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1029          </ul>
1030        </li>
1031        <li>
1032          <span class="toc_kind_header">static</span>
1033          <ul class="toc_section">
1034            <li
1035            ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1036          </ul>
1037        </li>
1038      </ul> <!-- toc_section -->
1039    </li>
1040  </ul>
1041
1042
1043  <h1>Properties</h1>
1044  <table class="properties">
1045
1046    <thead class="thead_dummy">
1047      <tr>
1048        <th class="th_name">Property Name</th>
1049        <th class="th_type">Type</th>
1050        <th class="th_description">Description</th>
1051        <th class="th_units">Units</th>
1052        <th class="th_range">Range</th>
1053        <th class="th_tags">Tags</th>
1054      </tr>
1055    </thead> <!-- so that the first occurrence of thead is not
1056                         above the first occurrence of tr -->
1057<!-- <namespace name="android"> -->
1058  <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1059
1060
1061      <tr><td colspan="6" class="kind">controls</td></tr>
1062
1063      <thead class="entries_header">
1064        <tr>
1065          <th class="th_name">Property Name</th>
1066          <th class="th_type">Type</th>
1067          <th class="th_description">Description</th>
1068          <th class="th_units">Units</th>
1069          <th class="th_range">Range</th>
1070          <th class="th_tags">Tags</th>
1071        </tr>
1072      </thead>
1073
1074      <tbody>
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085          <tr class="entry" id="controls_android.colorCorrection.mode">
1086            <td class="entry_name
1087             " rowspan="3">
1088              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1089            </td>
1090            <td class="entry_type">
1091                <span class="entry_type_name entry_type_name_enum">byte</span>
1092
1093              <span class="entry_type_visibility"> [public]</span>
1094
1095
1096              <span class="entry_type_hwlevel">[full] </span>
1097
1098
1099
1100                <ul class="entry_type_enum">
1101                  <li>
1102                    <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1103                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1104and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1105<p>All advanced white balance adjustments (not specified
1106by our white balance pipeline) must be disabled.<wbr/></p>
1107<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
1108TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1109this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1110                  </li>
1111                  <li>
1112                    <span class="entry_type_enum_name">FAST</span>
1113                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1114capture rate relative to sensor raw output.<wbr/></p>
1115<p>Advanced white balance adjustments above and beyond
1116the specified white balance pipeline may be applied.<wbr/></p>
1117<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
1118the camera device uses the last frame's AWB values
1119(or defaults if AWB has never been run).<wbr/></p></span>
1120                  </li>
1121                  <li>
1122                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1123                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1124quality but reduced capture rate (relative to sensor raw
1125output).<wbr/></p>
1126<p>Advanced white balance adjustments above and beyond
1127the specified white balance pipeline may be applied.<wbr/></p>
1128<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
1129the camera device uses the last frame's AWB values
1130(or defaults if AWB has never been run).<wbr/></p></span>
1131                  </li>
1132                </ul>
1133
1134            </td> <!-- entry_type -->
1135
1136            <td class="entry_description">
1137              <p>The mode control selects how the image data is converted from the
1138sensor's native color into linear sRGB color.<wbr/></p>
1139            </td>
1140
1141            <td class="entry_units">
1142            </td>
1143
1144            <td class="entry_range">
1145            </td>
1146
1147            <td class="entry_tags">
1148            </td>
1149
1150          </tr>
1151          <tr class="entries_header">
1152            <th class="th_details" colspan="5">Details</th>
1153          </tr>
1154          <tr class="entry_cont">
1155            <td class="entry_details" colspan="5">
1156              <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
1157control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1158application controls how the color mapping is performed.<wbr/></p>
1159<p>We define the expected processing pipeline below.<wbr/> For consistency
1160across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1161<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1162do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1163<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1164camera device (in the results) and be roughly correct.<wbr/></p>
1165<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1166FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1167as what was produced by the camera device in the earlier frame.<wbr/></p>
1168<p>The expected processing pipeline is as follows:</p>
1169<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1170<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1171gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1172matrix (applied after demosaic).<wbr/></p>
1173<p>The 4-channel white-balance gains are defined as:</p>
1174<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1175</code></pre>
1176<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1177output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1178These may be identical for a given camera device implementation; if
1179the camera device does not support a separate gain for even/<wbr/>odd green
1180channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1181<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1182<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1183<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 ]
1184</code></pre>
1185<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1186to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1187<p>with colors as follows:</p>
1188<pre><code>r' = I0r + I1g + I2b
1189g' = I3r + I4g + I5b
1190b' = I6r + I7g + I8b
1191</code></pre>
1192<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1193values are clipped to fit within the range.<wbr/></p>
1194            </td>
1195          </tr>
1196
1197
1198          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1199           <!-- end of entry -->
1200
1201
1202          <tr class="entry" id="controls_android.colorCorrection.transform">
1203            <td class="entry_name
1204             " rowspan="3">
1205              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1206            </td>
1207            <td class="entry_type">
1208                <span class="entry_type_name">rational</span>
1209                <span class="entry_type_container">x</span>
1210
1211                <span class="entry_type_array">
1212                  3 x 3
1213                </span>
1214              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1215
1216
1217              <span class="entry_type_hwlevel">[full] </span>
1218
1219
1220                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1221
1222
1223            </td> <!-- entry_type -->
1224
1225            <td class="entry_description">
1226              <p>A color transform matrix to use to transform
1227from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1228            </td>
1229
1230            <td class="entry_units">
1231              Unitless scale factors
1232            </td>
1233
1234            <td class="entry_range">
1235            </td>
1236
1237            <td class="entry_tags">
1238            </td>
1239
1240          </tr>
1241          <tr class="entries_header">
1242            <th class="th_details" colspan="5">Details</th>
1243          </tr>
1244          <tr class="entry_cont">
1245            <td class="entry_details" colspan="5">
1246              <p>This matrix is either set by the camera device when the request
1247<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1248directly by the application in the request when the
1249<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1250<p>In the latter case,<wbr/> the camera device may round the matrix to account
1251for precision issues; the final rounded matrix should be reported back
1252in this matrix result metadata.<wbr/> The transform should keep the magnitude
1253of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1254values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1255            </td>
1256          </tr>
1257
1258
1259          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1260           <!-- end of entry -->
1261
1262
1263          <tr class="entry" id="controls_android.colorCorrection.gains">
1264            <td class="entry_name
1265             " rowspan="5">
1266              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1267            </td>
1268            <td class="entry_type">
1269                <span class="entry_type_name">float</span>
1270                <span class="entry_type_container">x</span>
1271
1272                <span class="entry_type_array">
1273                  4
1274                </span>
1275              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1276
1277
1278              <span class="entry_type_hwlevel">[full] </span>
1279
1280
1281                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1282
1283
1284            </td> <!-- entry_type -->
1285
1286            <td class="entry_description">
1287              <p>Gains applying to Bayer raw color channels for
1288white-balance.<wbr/></p>
1289            </td>
1290
1291            <td class="entry_units">
1292              Unitless gain factors
1293            </td>
1294
1295            <td class="entry_range">
1296            </td>
1297
1298            <td class="entry_tags">
1299            </td>
1300
1301          </tr>
1302          <tr class="entries_header">
1303            <th class="th_details" colspan="5">Details</th>
1304          </tr>
1305          <tr class="entry_cont">
1306            <td class="entry_details" colspan="5">
1307              <p>These per-channel gains are either set by the camera device
1308when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1309TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1310request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1311TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1312<p>The gains in the result metadata are the gains actually
1313applied by the camera device to the current frame.<wbr/></p>
1314            </td>
1315          </tr>
1316
1317          <tr class="entries_header">
1318            <th class="th_details" colspan="5">HAL Implementation Details</th>
1319          </tr>
1320          <tr class="entry_cont">
1321            <td class="entry_details" colspan="5">
1322              <p>The 4-channel white-balance gains are defined in
1323the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1324for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1325is the gain for green pixels on the odd rows.<wbr/></p>
1326<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1327channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1328<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1329            </td>
1330          </tr>
1331
1332          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1333           <!-- end of entry -->
1334
1335
1336          <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1337            <td class="entry_name
1338             " rowspan="3">
1339              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1340            </td>
1341            <td class="entry_type">
1342                <span class="entry_type_name entry_type_name_enum">byte</span>
1343
1344              <span class="entry_type_visibility"> [public]</span>
1345
1346
1347              <span class="entry_type_hwlevel">[legacy] </span>
1348
1349
1350
1351                <ul class="entry_type_enum">
1352                  <li>
1353                    <span class="entry_type_enum_name">OFF</span>
1354                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1355                  </li>
1356                  <li>
1357                    <span class="entry_type_enum_name">FAST</span>
1358                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1359relative to sensor raw output.<wbr/></p></span>
1360                  </li>
1361                  <li>
1362                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1363                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but reduced
1364capture rate (relative to sensor raw output).<wbr/></p></span>
1365                  </li>
1366                </ul>
1367
1368            </td> <!-- entry_type -->
1369
1370            <td class="entry_description">
1371              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1372            </td>
1373
1374            <td class="entry_units">
1375            </td>
1376
1377            <td class="entry_range">
1378              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1379            </td>
1380
1381            <td class="entry_tags">
1382            </td>
1383
1384          </tr>
1385          <tr class="entries_header">
1386            <th class="th_details" colspan="5">Details</th>
1387          </tr>
1388          <tr class="entry_cont">
1389            <td class="entry_details" colspan="5">
1390              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1391can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1392the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1393minimize the chromatic artifacts that may occur along the object boundaries in an
1394image.<wbr/></p>
1395<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1396correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1397use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1398capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1399applying aberration correction.<wbr/></p>
1400<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1401            </td>
1402          </tr>
1403
1404
1405          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1406           <!-- end of entry -->
1407
1408
1409
1410      <!-- end of kind -->
1411      </tbody>
1412      <tr><td colspan="6" class="kind">dynamic</td></tr>
1413
1414      <thead class="entries_header">
1415        <tr>
1416          <th class="th_name">Property Name</th>
1417          <th class="th_type">Type</th>
1418          <th class="th_description">Description</th>
1419          <th class="th_units">Units</th>
1420          <th class="th_range">Range</th>
1421          <th class="th_tags">Tags</th>
1422        </tr>
1423      </thead>
1424
1425      <tbody>
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436          <tr class="entry" id="dynamic_android.colorCorrection.mode">
1437            <td class="entry_name
1438             " rowspan="3">
1439              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1440            </td>
1441            <td class="entry_type">
1442                <span class="entry_type_name entry_type_name_enum">byte</span>
1443
1444              <span class="entry_type_visibility"> [public]</span>
1445
1446
1447              <span class="entry_type_hwlevel">[full] </span>
1448
1449
1450
1451                <ul class="entry_type_enum">
1452                  <li>
1453                    <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1454                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1455and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1456<p>All advanced white balance adjustments (not specified
1457by our white balance pipeline) must be disabled.<wbr/></p>
1458<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
1459TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1460this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1461                  </li>
1462                  <li>
1463                    <span class="entry_type_enum_name">FAST</span>
1464                    <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1465capture rate relative to sensor raw output.<wbr/></p>
1466<p>Advanced white balance adjustments above and beyond
1467the specified white balance pipeline may be applied.<wbr/></p>
1468<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
1469the camera device uses the last frame's AWB values
1470(or defaults if AWB has never been run).<wbr/></p></span>
1471                  </li>
1472                  <li>
1473                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1474                    <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1475quality but reduced capture rate (relative to sensor raw
1476output).<wbr/></p>
1477<p>Advanced white balance adjustments above and beyond
1478the specified white balance pipeline may be applied.<wbr/></p>
1479<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
1480the camera device uses the last frame's AWB values
1481(or defaults if AWB has never been run).<wbr/></p></span>
1482                  </li>
1483                </ul>
1484
1485            </td> <!-- entry_type -->
1486
1487            <td class="entry_description">
1488              <p>The mode control selects how the image data is converted from the
1489sensor's native color into linear sRGB color.<wbr/></p>
1490            </td>
1491
1492            <td class="entry_units">
1493            </td>
1494
1495            <td class="entry_range">
1496            </td>
1497
1498            <td class="entry_tags">
1499            </td>
1500
1501          </tr>
1502          <tr class="entries_header">
1503            <th class="th_details" colspan="5">Details</th>
1504          </tr>
1505          <tr class="entry_cont">
1506            <td class="entry_details" colspan="5">
1507              <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
1508control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1509application controls how the color mapping is performed.<wbr/></p>
1510<p>We define the expected processing pipeline below.<wbr/> For consistency
1511across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1512<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1513do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1514<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1515camera device (in the results) and be roughly correct.<wbr/></p>
1516<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1517FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1518as what was produced by the camera device in the earlier frame.<wbr/></p>
1519<p>The expected processing pipeline is as follows:</p>
1520<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1521<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1522gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1523matrix (applied after demosaic).<wbr/></p>
1524<p>The 4-channel white-balance gains are defined as:</p>
1525<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1526</code></pre>
1527<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1528output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1529These may be identical for a given camera device implementation; if
1530the camera device does not support a separate gain for even/<wbr/>odd green
1531channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1532<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1533<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1534<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 ]
1535</code></pre>
1536<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1537to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1538<p>with colors as follows:</p>
1539<pre><code>r' = I0r + I1g + I2b
1540g' = I3r + I4g + I5b
1541b' = I6r + I7g + I8b
1542</code></pre>
1543<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1544values are clipped to fit within the range.<wbr/></p>
1545            </td>
1546          </tr>
1547
1548
1549          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1550           <!-- end of entry -->
1551
1552
1553          <tr class="entry" id="dynamic_android.colorCorrection.transform">
1554            <td class="entry_name
1555             " rowspan="3">
1556              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1557            </td>
1558            <td class="entry_type">
1559                <span class="entry_type_name">rational</span>
1560                <span class="entry_type_container">x</span>
1561
1562                <span class="entry_type_array">
1563                  3 x 3
1564                </span>
1565              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1566
1567
1568              <span class="entry_type_hwlevel">[full] </span>
1569
1570
1571                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1572
1573
1574            </td> <!-- entry_type -->
1575
1576            <td class="entry_description">
1577              <p>A color transform matrix to use to transform
1578from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1579            </td>
1580
1581            <td class="entry_units">
1582              Unitless scale factors
1583            </td>
1584
1585            <td class="entry_range">
1586            </td>
1587
1588            <td class="entry_tags">
1589            </td>
1590
1591          </tr>
1592          <tr class="entries_header">
1593            <th class="th_details" colspan="5">Details</th>
1594          </tr>
1595          <tr class="entry_cont">
1596            <td class="entry_details" colspan="5">
1597              <p>This matrix is either set by the camera device when the request
1598<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1599directly by the application in the request when the
1600<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1601<p>In the latter case,<wbr/> the camera device may round the matrix to account
1602for precision issues; the final rounded matrix should be reported back
1603in this matrix result metadata.<wbr/> The transform should keep the magnitude
1604of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1605values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1606            </td>
1607          </tr>
1608
1609
1610          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1611           <!-- end of entry -->
1612
1613
1614          <tr class="entry" id="dynamic_android.colorCorrection.gains">
1615            <td class="entry_name
1616             " rowspan="5">
1617              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1618            </td>
1619            <td class="entry_type">
1620                <span class="entry_type_name">float</span>
1621                <span class="entry_type_container">x</span>
1622
1623                <span class="entry_type_array">
1624                  4
1625                </span>
1626              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1627
1628
1629              <span class="entry_type_hwlevel">[full] </span>
1630
1631
1632                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1633
1634
1635            </td> <!-- entry_type -->
1636
1637            <td class="entry_description">
1638              <p>Gains applying to Bayer raw color channels for
1639white-balance.<wbr/></p>
1640            </td>
1641
1642            <td class="entry_units">
1643              Unitless gain factors
1644            </td>
1645
1646            <td class="entry_range">
1647            </td>
1648
1649            <td class="entry_tags">
1650            </td>
1651
1652          </tr>
1653          <tr class="entries_header">
1654            <th class="th_details" colspan="5">Details</th>
1655          </tr>
1656          <tr class="entry_cont">
1657            <td class="entry_details" colspan="5">
1658              <p>These per-channel gains are either set by the camera device
1659when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1660TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1661request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1662TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1663<p>The gains in the result metadata are the gains actually
1664applied by the camera device to the current frame.<wbr/></p>
1665            </td>
1666          </tr>
1667
1668          <tr class="entries_header">
1669            <th class="th_details" colspan="5">HAL Implementation Details</th>
1670          </tr>
1671          <tr class="entry_cont">
1672            <td class="entry_details" colspan="5">
1673              <p>The 4-channel white-balance gains are defined in
1674the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1675for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1676is the gain for green pixels on the odd rows.<wbr/></p>
1677<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1678channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1679<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1680            </td>
1681          </tr>
1682
1683          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1684           <!-- end of entry -->
1685
1686
1687          <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1688            <td class="entry_name
1689             " rowspan="3">
1690              android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1691            </td>
1692            <td class="entry_type">
1693                <span class="entry_type_name entry_type_name_enum">byte</span>
1694
1695              <span class="entry_type_visibility"> [public]</span>
1696
1697
1698              <span class="entry_type_hwlevel">[legacy] </span>
1699
1700
1701
1702                <ul class="entry_type_enum">
1703                  <li>
1704                    <span class="entry_type_enum_name">OFF</span>
1705                    <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1706                  </li>
1707                  <li>
1708                    <span class="entry_type_enum_name">FAST</span>
1709                    <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1710relative to sensor raw output.<wbr/></p></span>
1711                  </li>
1712                  <li>
1713                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1714                    <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but reduced
1715capture rate (relative to sensor raw output).<wbr/></p></span>
1716                  </li>
1717                </ul>
1718
1719            </td> <!-- entry_type -->
1720
1721            <td class="entry_description">
1722              <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1723            </td>
1724
1725            <td class="entry_units">
1726            </td>
1727
1728            <td class="entry_range">
1729              <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1730            </td>
1731
1732            <td class="entry_tags">
1733            </td>
1734
1735          </tr>
1736          <tr class="entries_header">
1737            <th class="th_details" colspan="5">Details</th>
1738          </tr>
1739          <tr class="entry_cont">
1740            <td class="entry_details" colspan="5">
1741              <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1742can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1743the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1744minimize the chromatic artifacts that may occur along the object boundaries in an
1745image.<wbr/></p>
1746<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1747correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1748use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1749capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1750applying aberration correction.<wbr/></p>
1751<p>LEGACY devices will always be in FAST mode.<wbr/></p>
1752            </td>
1753          </tr>
1754
1755
1756          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1757           <!-- end of entry -->
1758
1759
1760
1761      <!-- end of kind -->
1762      </tbody>
1763      <tr><td colspan="6" class="kind">static</td></tr>
1764
1765      <thead class="entries_header">
1766        <tr>
1767          <th class="th_name">Property Name</th>
1768          <th class="th_type">Type</th>
1769          <th class="th_description">Description</th>
1770          <th class="th_units">Units</th>
1771          <th class="th_range">Range</th>
1772          <th class="th_tags">Tags</th>
1773        </tr>
1774      </thead>
1775
1776      <tbody>
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787          <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1788            <td class="entry_name
1789             " rowspan="3">
1790              android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
1791            </td>
1792            <td class="entry_type">
1793                <span class="entry_type_name">byte</span>
1794                <span class="entry_type_container">x</span>
1795
1796                <span class="entry_type_array">
1797                  n
1798                </span>
1799              <span class="entry_type_visibility"> [public as enumList]</span>
1800
1801
1802              <span class="entry_type_hwlevel">[legacy] </span>
1803
1804
1805                <div class="entry_type_notes">list of enums</div>
1806
1807
1808            </td> <!-- entry_type -->
1809
1810            <td class="entry_description">
1811              <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
1812supported by this camera device.<wbr/></p>
1813            </td>
1814
1815            <td class="entry_units">
1816            </td>
1817
1818            <td class="entry_range">
1819              <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
1820            </td>
1821
1822            <td class="entry_tags">
1823              <ul class="entry_tags">
1824                  <li><a href="#tag_V1">V1</a></li>
1825              </ul>
1826            </td>
1827
1828          </tr>
1829          <tr class="entries_header">
1830            <th class="th_details" colspan="5">Details</th>
1831          </tr>
1832          <tr class="entry_cont">
1833            <td class="entry_details" colspan="5">
1834              <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
1835aberration correction modes are available for a device,<wbr/> this list will solely include
1836OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
1837<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
1838OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
1839<p>LEGACY devices will always only support FAST mode.<wbr/></p>
1840            </td>
1841          </tr>
1842
1843
1844          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1845           <!-- end of entry -->
1846
1847
1848
1849      <!-- end of kind -->
1850      </tbody>
1851
1852  <!-- end of section -->
1853  <tr><td colspan="6" id="section_control" class="section">control</td></tr>
1854
1855
1856      <tr><td colspan="6" class="kind">controls</td></tr>
1857
1858      <thead class="entries_header">
1859        <tr>
1860          <th class="th_name">Property Name</th>
1861          <th class="th_type">Type</th>
1862          <th class="th_description">Description</th>
1863          <th class="th_units">Units</th>
1864          <th class="th_range">Range</th>
1865          <th class="th_tags">Tags</th>
1866        </tr>
1867      </thead>
1868
1869      <tbody>
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880          <tr class="entry" id="controls_android.control.aeAntibandingMode">
1881            <td class="entry_name
1882             " rowspan="5">
1883              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
1884            </td>
1885            <td class="entry_type">
1886                <span class="entry_type_name entry_type_name_enum">byte</span>
1887
1888              <span class="entry_type_visibility"> [public]</span>
1889
1890
1891              <span class="entry_type_hwlevel">[legacy] </span>
1892
1893
1894
1895                <ul class="entry_type_enum">
1896                  <li>
1897                    <span class="entry_type_enum_name">OFF</span>
1898                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
1899avoid banding problems.<wbr/></p></span>
1900                  </li>
1901                  <li>
1902                    <span class="entry_type_enum_name">50HZ</span>
1903                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
1904avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
1905                  </li>
1906                  <li>
1907                    <span class="entry_type_enum_name">60HZ</span>
1908                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
1909avoid banding problems with 60Hz illumination
1910sources.<wbr/></p></span>
1911                  </li>
1912                  <li>
1913                    <span class="entry_type_enum_name">AUTO</span>
1914                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
1915antibanding routine to the current illumination
1916condition.<wbr/> This is the default mode if AUTO is
1917available on given camera device.<wbr/></p></span>
1918                  </li>
1919                </ul>
1920
1921            </td> <!-- entry_type -->
1922
1923            <td class="entry_description">
1924              <p>The desired setting for the camera device's auto-exposure
1925algorithm's antibanding compensation.<wbr/></p>
1926            </td>
1927
1928            <td class="entry_units">
1929            </td>
1930
1931            <td class="entry_range">
1932              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
1933            </td>
1934
1935            <td class="entry_tags">
1936              <ul class="entry_tags">
1937                  <li><a href="#tag_BC">BC</a></li>
1938              </ul>
1939            </td>
1940
1941          </tr>
1942          <tr class="entries_header">
1943            <th class="th_details" colspan="5">Details</th>
1944          </tr>
1945          <tr class="entry_cont">
1946            <td class="entry_details" colspan="5">
1947              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
1948lights,<wbr/> flicker at the rate of the power supply frequency
1949(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
1950typically not noticeable to a person,<wbr/> it can be visible to
1951a camera device.<wbr/> If a camera sets its exposure time to the
1952wrong value,<wbr/> the flicker may become visible in the
1953viewfinder as flicker or in a final captured image,<wbr/> as a
1954set of variable-brightness bands across the image.<wbr/></p>
1955<p>Therefore,<wbr/> the auto-exposure routines of camera devices
1956include antibanding routines that ensure that the chosen
1957exposure value will not cause such banding.<wbr/> The choice of
1958exposure time depends on the rate of flicker,<wbr/> which the
1959camera device can detect automatically,<wbr/> or the expected
1960rate can be selected by the application using this
1961control.<wbr/></p>
1962<p>A given camera device may not support all of the possible
1963options for the antibanding mode.<wbr/> The
1964<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
1965the available modes for a given camera device.<wbr/></p>
1966<p>AUTO mode is the default if it is available on given
1967camera device.<wbr/> When AUTO mode is not available,<wbr/> the
1968default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
1969and 60HZ will be available.<wbr/></p>
1970<p>If manual exposure control is enabled (by setting
1971<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/>
1972then this setting has no effect,<wbr/> and the application must
1973ensure it selects exposure times that do not cause banding
1974issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
1975the application in this.<wbr/></p>
1976            </td>
1977          </tr>
1978
1979          <tr class="entries_header">
1980            <th class="th_details" colspan="5">HAL Implementation Details</th>
1981          </tr>
1982          <tr class="entry_cont">
1983            <td class="entry_details" colspan="5">
1984              <p>For all capture request templates,<wbr/> this field must be set
1985to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
1986the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
198760HZ must be available.<wbr/></p>
1988<p>If manual exposure control is enabled (by setting
1989<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/>
1990then the exposure values provided by the application must not be
1991adjusted for antibanding.<wbr/></p>
1992            </td>
1993          </tr>
1994
1995          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1996           <!-- end of entry -->
1997
1998
1999          <tr class="entry" id="controls_android.control.aeExposureCompensation">
2000            <td class="entry_name
2001             " rowspan="3">
2002              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2003            </td>
2004            <td class="entry_type">
2005                <span class="entry_type_name">int32</span>
2006
2007              <span class="entry_type_visibility"> [public]</span>
2008
2009
2010              <span class="entry_type_hwlevel">[legacy] </span>
2011
2012
2013
2014
2015            </td> <!-- entry_type -->
2016
2017            <td class="entry_description">
2018              <p>Adjustment to auto-exposure (AE) target image
2019brightness.<wbr/></p>
2020            </td>
2021
2022            <td class="entry_units">
2023              Compensation steps
2024            </td>
2025
2026            <td class="entry_range">
2027              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2028            </td>
2029
2030            <td class="entry_tags">
2031              <ul class="entry_tags">
2032                  <li><a href="#tag_BC">BC</a></li>
2033              </ul>
2034            </td>
2035
2036          </tr>
2037          <tr class="entries_header">
2038            <th class="th_details" colspan="5">Details</th>
2039          </tr>
2040          <tr class="entry_cont">
2041            <td class="entry_details" colspan="5">
2042              <p>The adjustment is measured as a count of steps,<wbr/> with the
2043step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2044allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2045<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2046will mean an exposure compensation of +2 EV; -3 will mean an
2047exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2048of image brightness.<wbr/> Note that this control will only be
2049effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2050will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2051<p>In the event of exposure compensation value being changed,<wbr/> camera device
2052may take several frames to reach the newly requested exposure target.<wbr/>
2053During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2054state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
2055change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2056FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2057            </td>
2058          </tr>
2059
2060
2061          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2062           <!-- end of entry -->
2063
2064
2065          <tr class="entry" id="controls_android.control.aeLock">
2066            <td class="entry_name
2067             " rowspan="3">
2068              android.<wbr/>control.<wbr/>ae<wbr/>Lock
2069            </td>
2070            <td class="entry_type">
2071                <span class="entry_type_name entry_type_name_enum">byte</span>
2072
2073              <span class="entry_type_visibility"> [public as boolean]</span>
2074
2075
2076              <span class="entry_type_hwlevel">[legacy] </span>
2077
2078
2079
2080                <ul class="entry_type_enum">
2081                  <li>
2082                    <span class="entry_type_enum_name">OFF</span>
2083                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2084is free to update its parameters.<wbr/></p></span>
2085                  </li>
2086                  <li>
2087                    <span class="entry_type_enum_name">ON</span>
2088                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2089must not update the exposure and sensitivity parameters
2090while the lock is active.<wbr/></p>
2091<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2092will still take effect while auto-exposure is locked.<wbr/></p>
2093<p>Some rare LEGACY devices may not support
2094this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2095                  </li>
2096                </ul>
2097
2098            </td> <!-- entry_type -->
2099
2100            <td class="entry_description">
2101              <p>Whether auto-exposure (AE) is currently locked to its latest
2102calculated values.<wbr/></p>
2103            </td>
2104
2105            <td class="entry_units">
2106            </td>
2107
2108            <td class="entry_range">
2109            </td>
2110
2111            <td class="entry_tags">
2112              <ul class="entry_tags">
2113                  <li><a href="#tag_BC">BC</a></li>
2114              </ul>
2115            </td>
2116
2117          </tr>
2118          <tr class="entries_header">
2119            <th class="th_details" colspan="5">Details</th>
2120          </tr>
2121          <tr class="entry_cont">
2122            <td class="entry_details" colspan="5">
2123              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2124and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2125<p>Note that even when AE is locked,<wbr/> the flash may be fired if
2126the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2127ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2128<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
2129is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2130<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2131when AE is already locked,<wbr/> the camera device will not change the exposure time
2132(<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>)
2133parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2134is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2135<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/></p>
2136<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2137get locked do not necessarily correspond to the settings that were present in the
2138latest capture result received from the camera device,<wbr/> since additional captures
2139and AE updates may have occurred even before the result was sent out.<wbr/> If an
2140application is switching between automatic and manual control and wishes to eliminate
2141any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2142<ol>
2143<li>Starting in auto-AE mode:</li>
2144<li>Lock AE</li>
2145<li>Wait for the first result to be output that has the AE locked</li>
2146<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2147<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2148</ol>
2149<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>
2150            </td>
2151          </tr>
2152
2153
2154          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2155           <!-- end of entry -->
2156
2157
2158          <tr class="entry" id="controls_android.control.aeMode">
2159            <td class="entry_name
2160             " rowspan="3">
2161              android.<wbr/>control.<wbr/>ae<wbr/>Mode
2162            </td>
2163            <td class="entry_type">
2164                <span class="entry_type_name entry_type_name_enum">byte</span>
2165
2166              <span class="entry_type_visibility"> [public]</span>
2167
2168
2169              <span class="entry_type_hwlevel">[legacy] </span>
2170
2171
2172
2173                <ul class="entry_type_enum">
2174                  <li>
2175                    <span class="entry_type_enum_name">OFF</span>
2176                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2177<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2178<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2179<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2180device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2181a flash unit for this camera device.<wbr/></p>
2182<p>Note that auto-white balance (AWB) and auto-focus (AF)
2183behavior is device dependent when AE is in OFF mode.<wbr/>
2184To have consistent behavior across different devices,<wbr/>
2185it is recommended to either set AWB and AF to OFF mode
2186or lock AWB and AF before setting AE to OFF.<wbr/>
2187See <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/>
2188<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>
2189for more details.<wbr/></p>
2190<p>LEGACY devices do not support the OFF mode and will
2191override attempts to use this value to ON.<wbr/></p></span>
2192                  </li>
2193                  <li>
2194                    <span class="entry_type_enum_name">ON</span>
2195                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2196with no flash control.<wbr/></p>
2197<p>The application's values for
2198<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2199<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2200<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2201application has control over the various
2202android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2203                  </li>
2204                  <li>
2205                    <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
2206                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2207the camera's flash unit,<wbr/> firing it in low-light
2208conditions.<wbr/></p>
2209<p>The flash may be fired during a precapture sequence
2210(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2211may be fired for captures for which the
2212<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2213STILL_<wbr/>CAPTURE</p></span>
2214                  </li>
2215                  <li>
2216                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
2217                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2218the camera's flash unit,<wbr/> always firing it for still
2219captures.<wbr/></p>
2220<p>The flash may be fired during a precapture sequence
2221(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2222will always be fired for captures for which the
2223<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2224STILL_<wbr/>CAPTURE</p></span>
2225                  </li>
2226                  <li>
2227                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
2228                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2229reduction.<wbr/></p>
2230<p>If deemed necessary by the camera device,<wbr/> a red eye
2231reduction flash will fire during the precapture
2232sequence.<wbr/></p></span>
2233                  </li>
2234                </ul>
2235
2236            </td> <!-- entry_type -->
2237
2238            <td class="entry_description">
2239              <p>The desired mode for the camera device's
2240auto-exposure routine.<wbr/></p>
2241            </td>
2242
2243            <td class="entry_units">
2244            </td>
2245
2246            <td class="entry_range">
2247              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2248            </td>
2249
2250            <td class="entry_tags">
2251              <ul class="entry_tags">
2252                  <li><a href="#tag_BC">BC</a></li>
2253              </ul>
2254            </td>
2255
2256          </tr>
2257          <tr class="entries_header">
2258            <th class="th_details" colspan="5">Details</th>
2259          </tr>
2260          <tr class="entry_cont">
2261            <td class="entry_details" colspan="5">
2262              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2263AUTO.<wbr/></p>
2264<p>When set to any of the ON modes,<wbr/> the camera device's
2265auto-exposure routine is enabled,<wbr/> overriding the
2266application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2267and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2268<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2269<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2270is selected,<wbr/> the camera device's flash unit controls are
2271also overridden.<wbr/></p>
2272<p>The FLASH modes are only available if the camera device
2273has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
2274<p>If flash TORCH mode is desired,<wbr/> this field must be set to
2275ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2276<p>When set to any of the ON modes,<wbr/> the values chosen by the
2277camera device auto-exposure routine for the overridden
2278fields for a given capture will be available in its
2279CaptureResult.<wbr/></p>
2280            </td>
2281          </tr>
2282
2283
2284          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2285           <!-- end of entry -->
2286
2287
2288          <tr class="entry" id="controls_android.control.aeRegions">
2289            <td class="entry_name
2290             " rowspan="5">
2291              android.<wbr/>control.<wbr/>ae<wbr/>Regions
2292            </td>
2293            <td class="entry_type">
2294                <span class="entry_type_name">int32</span>
2295                <span class="entry_type_container">x</span>
2296
2297                <span class="entry_type_array">
2298                  5 x area_count
2299                </span>
2300              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2301
2302
2303
2304
2305
2306
2307            </td> <!-- entry_type -->
2308
2309            <td class="entry_description">
2310              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2311            </td>
2312
2313            <td class="entry_units">
2314              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2315            </td>
2316
2317            <td class="entry_range">
2318              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2319<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2320            </td>
2321
2322            <td class="entry_tags">
2323              <ul class="entry_tags">
2324                  <li><a href="#tag_BC">BC</a></li>
2325              </ul>
2326            </td>
2327
2328          </tr>
2329          <tr class="entries_header">
2330            <th class="th_details" colspan="5">Details</th>
2331          </tr>
2332          <tr class="entry_cont">
2333            <td class="entry_details" colspan="5">
2334              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2335Otherwise will always be present.<wbr/></p>
2336<p>The maximum number of regions supported by the device is determined by the value
2337of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2338<p>The coordinate system is based on the active pixel array,<wbr/>
2339with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2340(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2341<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2342bottom-right pixel in the active pixel array.<wbr/></p>
2343<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2344for every pixel in the area.<wbr/> This means that a large metering area
2345with the same weight as a smaller area will have more effect in
2346the metering result.<wbr/> Metering areas can partially overlap and the
2347camera device will add the weights in the overlap region.<wbr/></p>
2348<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2349region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2350weight is ignored.<wbr/></p>
2351<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2352camera device.<wbr/></p>
2353<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
2354capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2355region and output only the intersection rectangle as the metering region in the result
2356metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
2357not reported in the result metadata.<wbr/></p>
2358            </td>
2359          </tr>
2360
2361          <tr class="entries_header">
2362            <th class="th_details" colspan="5">HAL Implementation Details</th>
2363          </tr>
2364          <tr class="entry_cont">
2365            <td class="entry_details" colspan="5">
2366              <p>The HAL level representation of MeteringRectangle[] is a
2367int[5 * area_<wbr/>count].<wbr/>
2368Every five elements represent a metering region of
2369(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2370The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2371exclusive on xmax and ymax.<wbr/></p>
2372            </td>
2373          </tr>
2374
2375          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2376           <!-- end of entry -->
2377
2378
2379          <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2380            <td class="entry_name
2381             " rowspan="3">
2382              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2383            </td>
2384            <td class="entry_type">
2385                <span class="entry_type_name">int32</span>
2386                <span class="entry_type_container">x</span>
2387
2388                <span class="entry_type_array">
2389                  2
2390                </span>
2391              <span class="entry_type_visibility"> [public as rangeInt]</span>
2392
2393
2394              <span class="entry_type_hwlevel">[legacy] </span>
2395
2396
2397
2398
2399            </td> <!-- entry_type -->
2400
2401            <td class="entry_description">
2402              <p>Range over which the auto-exposure routine can
2403adjust the capture frame rate to maintain good
2404exposure.<wbr/></p>
2405            </td>
2406
2407            <td class="entry_units">
2408              Frames per second (FPS)
2409            </td>
2410
2411            <td class="entry_range">
2412              <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>
2413            </td>
2414
2415            <td class="entry_tags">
2416              <ul class="entry_tags">
2417                  <li><a href="#tag_BC">BC</a></li>
2418              </ul>
2419            </td>
2420
2421          </tr>
2422          <tr class="entries_header">
2423            <th class="th_details" colspan="5">Details</th>
2424          </tr>
2425          <tr class="entry_cont">
2426            <td class="entry_details" colspan="5">
2427              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2428manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2429<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2430            </td>
2431          </tr>
2432
2433
2434          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2435           <!-- end of entry -->
2436
2437
2438          <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2439            <td class="entry_name
2440             " rowspan="3">
2441              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2442            </td>
2443            <td class="entry_type">
2444                <span class="entry_type_name entry_type_name_enum">byte</span>
2445
2446              <span class="entry_type_visibility"> [public]</span>
2447
2448
2449              <span class="entry_type_hwlevel">[limited] </span>
2450
2451
2452
2453                <ul class="entry_type_enum">
2454                  <li>
2455                    <span class="entry_type_enum_name">IDLE</span>
2456                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2457                  </li>
2458                  <li>
2459                    <span class="entry_type_enum_name">START</span>
2460                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2461by the camera device.<wbr/></p>
2462<p>The exact effect of the precapture trigger depends on
2463the current AE mode and state.<wbr/></p></span>
2464                  </li>
2465                </ul>
2466
2467            </td> <!-- entry_type -->
2468
2469            <td class="entry_description">
2470              <p>Whether the camera device will trigger a precapture
2471metering sequence when it processes this request.<wbr/></p>
2472            </td>
2473
2474            <td class="entry_units">
2475            </td>
2476
2477            <td class="entry_range">
2478            </td>
2479
2480            <td class="entry_tags">
2481              <ul class="entry_tags">
2482                  <li><a href="#tag_BC">BC</a></li>
2483              </ul>
2484            </td>
2485
2486          </tr>
2487          <tr class="entries_header">
2488            <th class="th_details" colspan="5">Details</th>
2489          </tr>
2490          <tr class="entry_cont">
2491            <td class="entry_details" colspan="5">
2492              <p>This entry is normally set to IDLE,<wbr/> or is not
2493included at all in the request settings.<wbr/> When included and
2494set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2495precapture metering sequence.<wbr/></p>
2496<p>The precapture sequence should be triggered before starting a
2497high-quality still capture for final metering decisions to
2498be made,<wbr/> and for firing pre-capture flash pulses to estimate
2499scene brightness and required final capture flash power,<wbr/> when
2500the flash is enabled.<wbr/></p>
2501<p>Normally,<wbr/> this entry should be set to START for only a
2502single request,<wbr/> and the application should wait until the
2503sequence completes before starting a new one.<wbr/></p>
2504<p>When a precapture metering sequence is finished,<wbr/> the camera device
2505may lock the auto-exposure routine internally to be able to accurately expose the
2506subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2507For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2508submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2509submit 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
2510with <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
2511still capture request after the precapture sequence completes.<wbr/></p>
2512<p>The exact effect of auto-exposure (AE) precapture trigger
2513depends on the current AE mode and state; see
2514<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2515details.<wbr/></p>
2516<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2517capturing a high-resolution JPEG image will automatically trigger a
2518precapture sequence before the high-resolution capture,<wbr/> including
2519potentially firing a pre-capture flash.<wbr/></p>
2520            </td>
2521          </tr>
2522
2523
2524          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2525           <!-- end of entry -->
2526
2527
2528          <tr class="entry" id="controls_android.control.afMode">
2529            <td class="entry_name
2530             " rowspan="5">
2531              android.<wbr/>control.<wbr/>af<wbr/>Mode
2532            </td>
2533            <td class="entry_type">
2534                <span class="entry_type_name entry_type_name_enum">byte</span>
2535
2536              <span class="entry_type_visibility"> [public]</span>
2537
2538
2539              <span class="entry_type_hwlevel">[legacy] </span>
2540
2541
2542
2543                <ul class="entry_type_enum">
2544                  <li>
2545                    <span class="entry_type_enum_name">OFF</span>
2546                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2547<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2548application.<wbr/></p></span>
2549                  </li>
2550                  <li>
2551                    <span class="entry_type_enum_name">AUTO</span>
2552                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2553<p>In this mode,<wbr/> the lens does not move unless
2554the autofocus trigger action is called.<wbr/> When that trigger
2555is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2556the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2557<p>Always supported if lens is not fixed focus.<wbr/></p>
2558<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
2559is fixed-focus.<wbr/></p>
2560<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2561and sets the AF state to INACTIVE.<wbr/></p></span>
2562                  </li>
2563                  <li>
2564                    <span class="entry_type_enum_name">MACRO</span>
2565                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2566<p>In this mode,<wbr/> the lens does not move unless the
2567autofocus trigger action is called.<wbr/> When that trigger is
2568activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2569the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2570mode is optimized for focusing on objects very close to
2571the camera.<wbr/></p>
2572<p>When that trigger is activated,<wbr/> AF will transition to
2573ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2574NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2575position to default,<wbr/> and sets the AF state to
2576INACTIVE.<wbr/></p></span>
2577                  </li>
2578                  <li>
2579                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
2580                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2581position continually to attempt to provide a
2582constantly-in-focus image stream.<wbr/></p>
2583<p>The focusing behavior should be suitable for good quality
2584video recording; typically this means slower focus
2585movement and no overshoots.<wbr/> When the AF trigger is not
2586involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2587and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2588states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2589the algorithm should immediately transition into
2590AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2591lens position until a cancel AF trigger is received.<wbr/></p>
2592<p>Once cancel is received,<wbr/> the algorithm should transition
2593back to INACTIVE and resume passive scan.<wbr/> Note that this
2594behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2595ongoing PASSIVE_<wbr/>SCAN must immediately be
2596canceled.<wbr/></p></span>
2597                  </li>
2598                  <li>
2599                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
2600                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2601position continually to attempt to provide a
2602constantly-in-focus image stream.<wbr/></p>
2603<p>The focusing behavior should be suitable for still image
2604capture; typically this means focusing as fast as
2605possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2606algorithm should start in INACTIVE state,<wbr/> and then
2607transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2608appropriate as it attempts to maintain focus.<wbr/> When the AF
2609trigger is activated,<wbr/> the algorithm should finish its
2610PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2611AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2612lens position until a cancel AF trigger is received.<wbr/></p>
2613<p>When the AF cancel trigger is activated,<wbr/> the algorithm
2614should transition back to INACTIVE and then act as if it
2615has just been started.<wbr/></p></span>
2616                  </li>
2617                  <li>
2618                    <span class="entry_type_enum_name">EDOF</span>
2619                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2620<p>The camera device will produce images with an extended
2621depth of field automatically; no special focusing
2622operations need to be done before taking a picture.<wbr/></p>
2623<p>AF triggers are ignored,<wbr/> and the AF state will always be
2624INACTIVE.<wbr/></p></span>
2625                  </li>
2626                </ul>
2627
2628            </td> <!-- entry_type -->
2629
2630            <td class="entry_description">
2631              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2632mode it is set to.<wbr/></p>
2633            </td>
2634
2635            <td class="entry_units">
2636            </td>
2637
2638            <td class="entry_range">
2639              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2640            </td>
2641
2642            <td class="entry_tags">
2643              <ul class="entry_tags">
2644                  <li><a href="#tag_BC">BC</a></li>
2645              </ul>
2646            </td>
2647
2648          </tr>
2649          <tr class="entries_header">
2650            <th class="th_details" colspan="5">Details</th>
2651          </tr>
2652          <tr class="entry_cont">
2653            <td class="entry_details" colspan="5">
2654              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2655(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
2656when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2657dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
2658setting <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>
2659<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2660the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2661in result metadata.<wbr/></p>
2662            </td>
2663          </tr>
2664
2665          <tr class="entries_header">
2666            <th class="th_details" colspan="5">HAL Implementation Details</th>
2667          </tr>
2668          <tr class="entry_cont">
2669            <td class="entry_details" colspan="5">
2670              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2671request (<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
2672up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2673<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
2674locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2675after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2676the same focal plane remains in focus.<wbr/></p>
2677<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2678scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2679(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
2680same lock behavior as above.<wbr/></p>
2681<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2682focus 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/>
2683However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2684manual control.<wbr/></p>
2685<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2686camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
2687remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
2688by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
2689that will arise on camera modules with open-loop VCMs.<wbr/></p>
2690            </td>
2691          </tr>
2692
2693          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2694           <!-- end of entry -->
2695
2696
2697          <tr class="entry" id="controls_android.control.afRegions">
2698            <td class="entry_name
2699             " rowspan="5">
2700              android.<wbr/>control.<wbr/>af<wbr/>Regions
2701            </td>
2702            <td class="entry_type">
2703                <span class="entry_type_name">int32</span>
2704                <span class="entry_type_container">x</span>
2705
2706                <span class="entry_type_array">
2707                  5 x area_count
2708                </span>
2709              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2710
2711
2712
2713
2714
2715
2716            </td> <!-- entry_type -->
2717
2718            <td class="entry_description">
2719              <p>List of metering areas to use for auto-focus.<wbr/></p>
2720            </td>
2721
2722            <td class="entry_units">
2723              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2724            </td>
2725
2726            <td class="entry_range">
2727              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2728<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2729            </td>
2730
2731            <td class="entry_tags">
2732              <ul class="entry_tags">
2733                  <li><a href="#tag_BC">BC</a></li>
2734              </ul>
2735            </td>
2736
2737          </tr>
2738          <tr class="entries_header">
2739            <th class="th_details" colspan="5">Details</th>
2740          </tr>
2741          <tr class="entry_cont">
2742            <td class="entry_details" colspan="5">
2743              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
2744Otherwise will always be present.<wbr/></p>
2745<p>The maximum number of focus areas supported by the device is determined by the value
2746of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
2747<p>The coordinate system is based on the active pixel array,<wbr/>
2748with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2749(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2750<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2751bottom-right pixel in the active pixel array.<wbr/></p>
2752<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2753for every pixel in the area.<wbr/> This means that a large metering area
2754with the same weight as a smaller area will have more effect in
2755the metering result.<wbr/> Metering areas can partially overlap and the
2756camera device will add the weights in the overlap region.<wbr/></p>
2757<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
2758is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
2759ignored.<wbr/></p>
2760<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2761camera device.<wbr/></p>
2762<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
2763capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2764region and output only the intersection rectangle as the metering region in the result
2765metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
2766not reported in the result metadata.<wbr/></p>
2767            </td>
2768          </tr>
2769
2770          <tr class="entries_header">
2771            <th class="th_details" colspan="5">HAL Implementation Details</th>
2772          </tr>
2773          <tr class="entry_cont">
2774            <td class="entry_details" colspan="5">
2775              <p>The HAL level representation of MeteringRectangle[] is a
2776int[5 * area_<wbr/>count].<wbr/>
2777Every five elements represent a metering region of
2778(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2779The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2780exclusive on xmax and ymax.<wbr/></p>
2781            </td>
2782          </tr>
2783
2784          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2785           <!-- end of entry -->
2786
2787
2788          <tr class="entry" id="controls_android.control.afTrigger">
2789            <td class="entry_name
2790             " rowspan="3">
2791              android.<wbr/>control.<wbr/>af<wbr/>Trigger
2792            </td>
2793            <td class="entry_type">
2794                <span class="entry_type_name entry_type_name_enum">byte</span>
2795
2796              <span class="entry_type_visibility"> [public]</span>
2797
2798
2799              <span class="entry_type_hwlevel">[legacy] </span>
2800
2801
2802
2803                <ul class="entry_type_enum">
2804                  <li>
2805                    <span class="entry_type_enum_name">IDLE</span>
2806                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2807                  </li>
2808                  <li>
2809                    <span class="entry_type_enum_name">START</span>
2810                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
2811                  </li>
2812                  <li>
2813                    <span class="entry_type_enum_name">CANCEL</span>
2814                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
2815state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
2816                  </li>
2817                </ul>
2818
2819            </td> <!-- entry_type -->
2820
2821            <td class="entry_description">
2822              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
2823            </td>
2824
2825            <td class="entry_units">
2826            </td>
2827
2828            <td class="entry_range">
2829            </td>
2830
2831            <td class="entry_tags">
2832              <ul class="entry_tags">
2833                  <li><a href="#tag_BC">BC</a></li>
2834              </ul>
2835            </td>
2836
2837          </tr>
2838          <tr class="entries_header">
2839            <th class="th_details" colspan="5">Details</th>
2840          </tr>
2841          <tr class="entry_cont">
2842            <td class="entry_details" colspan="5">
2843              <p>This entry is normally set to IDLE,<wbr/> or is not
2844included at all in the request settings.<wbr/></p>
2845<p>When included and set to START,<wbr/> the camera device will trigger the
2846autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
2847<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
2848and return to its initial AF state.<wbr/></p>
2849<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
2850single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
2851START for multiple captures in a row means restarting the AF operation over
2852and over again.<wbr/></p>
2853<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>
2854            </td>
2855          </tr>
2856
2857
2858          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2859           <!-- end of entry -->
2860
2861
2862          <tr class="entry" id="controls_android.control.awbLock">
2863            <td class="entry_name
2864             " rowspan="3">
2865              android.<wbr/>control.<wbr/>awb<wbr/>Lock
2866            </td>
2867            <td class="entry_type">
2868                <span class="entry_type_name entry_type_name_enum">byte</span>
2869
2870              <span class="entry_type_visibility"> [public as boolean]</span>
2871
2872
2873              <span class="entry_type_hwlevel">[legacy] </span>
2874
2875
2876
2877                <ul class="entry_type_enum">
2878                  <li>
2879                    <span class="entry_type_enum_name">OFF</span>
2880                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
2881algorithm is free to update its parameters if in AUTO
2882mode.<wbr/></p></span>
2883                  </li>
2884                  <li>
2885                    <span class="entry_type_enum_name">ON</span>
2886                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
2887algorithm will not update its parameters while the lock
2888is active.<wbr/></p></span>
2889                  </li>
2890                </ul>
2891
2892            </td> <!-- entry_type -->
2893
2894            <td class="entry_description">
2895              <p>Whether auto-white balance (AWB) is currently locked to its
2896latest calculated values.<wbr/></p>
2897            </td>
2898
2899            <td class="entry_units">
2900            </td>
2901
2902            <td class="entry_range">
2903            </td>
2904
2905            <td class="entry_tags">
2906              <ul class="entry_tags">
2907                  <li><a href="#tag_BC">BC</a></li>
2908              </ul>
2909            </td>
2910
2911          </tr>
2912          <tr class="entries_header">
2913            <th class="th_details" colspan="5">Details</th>
2914          </tr>
2915          <tr class="entry_cont">
2916            <td class="entry_details" colspan="5">
2917              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
2918and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2919<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2920get locked do not necessarily correspond to the settings that were present in the
2921latest capture result received from the camera device,<wbr/> since additional captures
2922and AWB updates may have occurred even before the result was sent out.<wbr/> If an
2923application is switching between automatic and manual control and wishes to eliminate
2924any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2925<ol>
2926<li>Starting in auto-AWB mode:</li>
2927<li>Lock AWB</li>
2928<li>Wait for the first result to be output that has the AWB locked</li>
2929<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
2930<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
2931</ol>
2932<p>Note that AWB lock is only meaningful when
2933<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
2934AWB is already fixed to a specific setting.<wbr/></p>
2935<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
2936            </td>
2937          </tr>
2938
2939
2940          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2941           <!-- end of entry -->
2942
2943
2944          <tr class="entry" id="controls_android.control.awbMode">
2945            <td class="entry_name
2946             " rowspan="3">
2947              android.<wbr/>control.<wbr/>awb<wbr/>Mode
2948            </td>
2949            <td class="entry_type">
2950                <span class="entry_type_name entry_type_name_enum">byte</span>
2951
2952              <span class="entry_type_visibility"> [public]</span>
2953
2954
2955              <span class="entry_type_hwlevel">[legacy] </span>
2956
2957
2958
2959                <ul class="entry_type_enum">
2960                  <li>
2961                    <span class="entry_type_enum_name">OFF</span>
2962                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
2963<p>The application-selected color transform matrix
2964(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
2965(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
2966device for manual white balance control.<wbr/></p></span>
2967                  </li>
2968                  <li>
2969                    <span class="entry_type_enum_name">AUTO</span>
2970                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
2971<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
2972and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
2973For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
2974values used by the camera device for the transform and gains
2975will be available in the capture result for this request.<wbr/></p></span>
2976                  </li>
2977                  <li>
2978                    <span class="entry_type_enum_name">INCANDESCENT</span>
2979                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
2980the camera device uses incandescent light as the assumed scene
2981illumination for white balance.<wbr/></p>
2982<p>While the exact white balance transforms are up to the
2983camera device,<wbr/> they will approximately match the CIE
2984standard illuminant A.<wbr/></p>
2985<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
2986and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
2987For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
2988values used by the camera device for the transform and gains
2989will be available in the capture result for this request.<wbr/></p></span>
2990                  </li>
2991                  <li>
2992                    <span class="entry_type_enum_name">FLUORESCENT</span>
2993                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
2994the camera device uses fluorescent light as the assumed scene
2995illumination for white balance.<wbr/></p>
2996<p>While the exact white balance transforms are up to the
2997camera device,<wbr/> they will approximately match the CIE
2998standard illuminant F2.<wbr/></p>
2999<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3000and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3001For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3002values used by the camera device for the transform and gains
3003will be available in the capture result for this request.<wbr/></p></span>
3004                  </li>
3005                  <li>
3006                    <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
3007                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3008the camera device uses warm fluorescent light as the assumed scene
3009illumination for white balance.<wbr/></p>
3010<p>While the exact white balance transforms are up to the
3011camera device,<wbr/> they will approximately match the CIE
3012standard illuminant F4.<wbr/></p>
3013<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3014and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3015For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3016values used by the camera device for the transform and gains
3017will be available in the capture result for this request.<wbr/></p></span>
3018                  </li>
3019                  <li>
3020                    <span class="entry_type_enum_name">DAYLIGHT</span>
3021                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3022the camera device uses daylight light as the assumed scene
3023illumination for white balance.<wbr/></p>
3024<p>While the exact white balance transforms are up to the
3025camera device,<wbr/> they will approximately match the CIE
3026standard illuminant D65.<wbr/></p>
3027<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3028and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3029For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3030values used by the camera device for the transform and gains
3031will be available in the capture result for this request.<wbr/></p></span>
3032                  </li>
3033                  <li>
3034                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
3035                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3036the camera device uses cloudy daylight light as the assumed scene
3037illumination for white balance.<wbr/></p>
3038<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3039and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3040For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3041values used by the camera device for the transform and gains
3042will be available in the capture result for this request.<wbr/></p></span>
3043                  </li>
3044                  <li>
3045                    <span class="entry_type_enum_name">TWILIGHT</span>
3046                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3047the camera device uses twilight light as the assumed scene
3048illumination for white balance.<wbr/></p>
3049<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3050and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3051For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3052values used by the camera device for the transform and gains
3053will be available in the capture result for this request.<wbr/></p></span>
3054                  </li>
3055                  <li>
3056                    <span class="entry_type_enum_name">SHADE</span>
3057                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3058the camera device uses shade light as the assumed scene
3059illumination for white balance.<wbr/></p>
3060<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3061and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3062For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3063values used by the camera device for the transform and gains
3064will be available in the capture result for this request.<wbr/></p></span>
3065                  </li>
3066                </ul>
3067
3068            </td> <!-- entry_type -->
3069
3070            <td class="entry_description">
3071              <p>Whether auto-white balance (AWB) is currently setting the color
3072transform fields,<wbr/> and what its illumination target
3073is.<wbr/></p>
3074            </td>
3075
3076            <td class="entry_units">
3077            </td>
3078
3079            <td class="entry_range">
3080              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3081            </td>
3082
3083            <td class="entry_tags">
3084              <ul class="entry_tags">
3085                  <li><a href="#tag_BC">BC</a></li>
3086              </ul>
3087            </td>
3088
3089          </tr>
3090          <tr class="entries_header">
3091            <th class="th_details" colspan="5">Details</th>
3092          </tr>
3093          <tr class="entry_cont">
3094            <td class="entry_details" colspan="5">
3095              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3096<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3097routine is enabled,<wbr/> overriding the application's selected
3098<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
3099<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>
3100is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3101also 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
3102setting AE mode to OFF.<wbr/></p>
3103<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3104routine is disabled.<wbr/> The application manually controls the white
3105balance 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>
3106and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3107<p>When set to any other modes,<wbr/> the camera device's auto-white
3108balance routine is disabled.<wbr/> The camera device uses each
3109particular illumination target for white balance
3110adjustment.<wbr/> The application's values for
3111<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3112<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3113<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3114            </td>
3115          </tr>
3116
3117
3118          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3119           <!-- end of entry -->
3120
3121
3122          <tr class="entry" id="controls_android.control.awbRegions">
3123            <td class="entry_name
3124             " rowspan="5">
3125              android.<wbr/>control.<wbr/>awb<wbr/>Regions
3126            </td>
3127            <td class="entry_type">
3128                <span class="entry_type_name">int32</span>
3129                <span class="entry_type_container">x</span>
3130
3131                <span class="entry_type_array">
3132                  5 x area_count
3133                </span>
3134              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3135
3136
3137
3138
3139
3140
3141            </td> <!-- entry_type -->
3142
3143            <td class="entry_description">
3144              <p>List of metering areas to use for auto-white-balance illuminant
3145estimation.<wbr/></p>
3146            </td>
3147
3148            <td class="entry_units">
3149              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3150            </td>
3151
3152            <td class="entry_range">
3153              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3154<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3155            </td>
3156
3157            <td class="entry_tags">
3158              <ul class="entry_tags">
3159                  <li><a href="#tag_BC">BC</a></li>
3160              </ul>
3161            </td>
3162
3163          </tr>
3164          <tr class="entries_header">
3165            <th class="th_details" colspan="5">Details</th>
3166          </tr>
3167          <tr class="entry_cont">
3168            <td class="entry_details" colspan="5">
3169              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3170Otherwise will always be present.<wbr/></p>
3171<p>The maximum number of regions supported by the device is determined by the value
3172of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3173<p>The coordinate system is based on the active pixel array,<wbr/>
3174with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3175(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3176<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3177bottom-right pixel in the active pixel array.<wbr/></p>
3178<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3179for every pixel in the area.<wbr/> This means that a large metering area
3180with the same weight as a smaller area will have more effect in
3181the metering result.<wbr/> Metering areas can partially overlap and the
3182camera device will add the weights in the overlap region.<wbr/></p>
3183<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3184only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
31850 weight is ignored.<wbr/></p>
3186<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3187camera device.<wbr/></p>
3188<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
3189capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3190region and output only the intersection rectangle as the metering region in the result
3191metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3192not reported in the result metadata.<wbr/></p>
3193            </td>
3194          </tr>
3195
3196          <tr class="entries_header">
3197            <th class="th_details" colspan="5">HAL Implementation Details</th>
3198          </tr>
3199          <tr class="entry_cont">
3200            <td class="entry_details" colspan="5">
3201              <p>The HAL level representation of MeteringRectangle[] is a
3202int[5 * area_<wbr/>count].<wbr/>
3203Every five elements represent a metering region of
3204(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3205The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3206exclusive on xmax and ymax.<wbr/></p>
3207            </td>
3208          </tr>
3209
3210          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3211           <!-- end of entry -->
3212
3213
3214          <tr class="entry" id="controls_android.control.captureIntent">
3215            <td class="entry_name
3216             " rowspan="3">
3217              android.<wbr/>control.<wbr/>capture<wbr/>Intent
3218            </td>
3219            <td class="entry_type">
3220                <span class="entry_type_name entry_type_name_enum">byte</span>
3221
3222              <span class="entry_type_visibility"> [public]</span>
3223
3224
3225              <span class="entry_type_hwlevel">[legacy] </span>
3226
3227
3228
3229                <ul class="entry_type_enum">
3230                  <li>
3231                    <span class="entry_type_enum_name">CUSTOM</span>
3232                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3233categories.<wbr/> The camera device will default to preview-like
3234behavior.<wbr/></p></span>
3235                  </li>
3236                  <li>
3237                    <span class="entry_type_enum_name">PREVIEW</span>
3238                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3239<p>The precapture trigger may be used to start off a metering
3240w/<wbr/>flash sequence.<wbr/></p></span>
3241                  </li>
3242                  <li>
3243                    <span class="entry_type_enum_name">STILL_CAPTURE</span>
3244                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3245use case.<wbr/></p>
3246<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3247                  </li>
3248                  <li>
3249                    <span class="entry_type_enum_name">VIDEO_RECORD</span>
3250                    <span class="entry_type_enum_notes"><p>This request is for a video recording
3251use case.<wbr/></p></span>
3252                  </li>
3253                  <li>
3254                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
3255                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3256image while recording video) use case.<wbr/></p>
3257<p>The camera device should take the highest-quality image
3258possible (given the other settings) without disrupting the
3259frame rate of video recording.<wbr/>  </p></span>
3260                  </li>
3261                  <li>
3262                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
3263                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3264application will stream full-resolution images and
3265reprocess one or several later for a final
3266capture.<wbr/></p></span>
3267                  </li>
3268                  <li>
3269                    <span class="entry_type_enum_name">MANUAL</span>
3270                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3271the applications want to directly control the capture parameters.<wbr/></p>
3272<p>For example,<wbr/> the application may wish to manually control
3273<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>
3274                  </li>
3275                </ul>
3276
3277            </td> <!-- entry_type -->
3278
3279            <td class="entry_description">
3280              <p>Information to the camera device 3A (auto-exposure,<wbr/>
3281auto-focus,<wbr/> auto-white balance) routines about the purpose
3282of this capture,<wbr/> to help the camera device to decide optimal 3A
3283strategy.<wbr/></p>
3284            </td>
3285
3286            <td class="entry_units">
3287            </td>
3288
3289            <td class="entry_range">
3290            </td>
3291
3292            <td class="entry_tags">
3293              <ul class="entry_tags">
3294                  <li><a href="#tag_BC">BC</a></li>
3295              </ul>
3296            </td>
3297
3298          </tr>
3299          <tr class="entries_header">
3300            <th class="th_details" colspan="5">Details</th>
3301          </tr>
3302          <tr class="entry_cont">
3303            <td class="entry_details" colspan="5">
3304              <p>This control (except for MANUAL) is only effective if
3305<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3306<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
3307contains ZSL.<wbr/> MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
3308contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are always supported.<wbr/></p>
3309            </td>
3310          </tr>
3311
3312
3313          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3314           <!-- end of entry -->
3315
3316
3317          <tr class="entry" id="controls_android.control.effectMode">
3318            <td class="entry_name
3319             " rowspan="3">
3320              android.<wbr/>control.<wbr/>effect<wbr/>Mode
3321            </td>
3322            <td class="entry_type">
3323                <span class="entry_type_name entry_type_name_enum">byte</span>
3324
3325              <span class="entry_type_visibility"> [public]</span>
3326
3327
3328              <span class="entry_type_hwlevel">[legacy] </span>
3329
3330
3331
3332                <ul class="entry_type_enum">
3333                  <li>
3334                    <span class="entry_type_enum_name">OFF</span>
3335                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3336                  </li>
3337                  <li>
3338                    <span class="entry_type_enum_name">MONO</span>
3339                    <span class="entry_type_enum_optional">[optional]</span>
3340                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3341a single color.<wbr/></p>
3342<p>This will typically be grayscale.<wbr/></p></span>
3343                  </li>
3344                  <li>
3345                    <span class="entry_type_enum_name">NEGATIVE</span>
3346                    <span class="entry_type_enum_optional">[optional]</span>
3347                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3348are inverted.<wbr/></p></span>
3349                  </li>
3350                  <li>
3351                    <span class="entry_type_enum_name">SOLARIZE</span>
3352                    <span class="entry_type_enum_optional">[optional]</span>
3353                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3354image is wholly or partially reversed in
3355tone.<wbr/></p></span>
3356                  </li>
3357                  <li>
3358                    <span class="entry_type_enum_name">SEPIA</span>
3359                    <span class="entry_type_enum_optional">[optional]</span>
3360                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3361gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3362                  </li>
3363                  <li>
3364                    <span class="entry_type_enum_name">POSTERIZE</span>
3365                    <span class="entry_type_enum_optional">[optional]</span>
3366                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3367discrete regions of tone rather than a continuous
3368gradient of tones.<wbr/></p></span>
3369                  </li>
3370                  <li>
3371                    <span class="entry_type_enum_name">WHITEBOARD</span>
3372                    <span class="entry_type_enum_optional">[optional]</span>
3373                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3374as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3375                  </li>
3376                  <li>
3377                    <span class="entry_type_enum_name">BLACKBOARD</span>
3378                    <span class="entry_type_enum_optional">[optional]</span>
3379                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3380as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3381                  </li>
3382                  <li>
3383                    <span class="entry_type_enum_name">AQUA</span>
3384                    <span class="entry_type_enum_optional">[optional]</span>
3385                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3386                  </li>
3387                </ul>
3388
3389            </td> <!-- entry_type -->
3390
3391            <td class="entry_description">
3392              <p>A special color effect to apply.<wbr/></p>
3393            </td>
3394
3395            <td class="entry_units">
3396            </td>
3397
3398            <td class="entry_range">
3399              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3400            </td>
3401
3402            <td class="entry_tags">
3403              <ul class="entry_tags">
3404                  <li><a href="#tag_BC">BC</a></li>
3405              </ul>
3406            </td>
3407
3408          </tr>
3409          <tr class="entries_header">
3410            <th class="th_details" colspan="5">Details</th>
3411          </tr>
3412          <tr class="entry_cont">
3413            <td class="entry_details" colspan="5">
3414              <p>When this mode is set,<wbr/> a color effect will be applied
3415to images produced by the camera device.<wbr/> The interpretation
3416and implementation of these color effects is left to the
3417implementor of the camera device,<wbr/> and should not be
3418depended on to be consistent (or present) across all
3419devices.<wbr/></p>
3420            </td>
3421          </tr>
3422
3423
3424          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3425           <!-- end of entry -->
3426
3427
3428          <tr class="entry" id="controls_android.control.mode">
3429            <td class="entry_name
3430             " rowspan="3">
3431              android.<wbr/>control.<wbr/>mode
3432            </td>
3433            <td class="entry_type">
3434                <span class="entry_type_name entry_type_name_enum">byte</span>
3435
3436              <span class="entry_type_visibility"> [public]</span>
3437
3438
3439              <span class="entry_type_hwlevel">[legacy] </span>
3440
3441
3442
3443                <ul class="entry_type_enum">
3444                  <li>
3445                    <span class="entry_type_enum_name">OFF</span>
3446                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3447<p>All control by the device's metering and focusing (3A)
3448routines is disabled,<wbr/> and no other settings in
3449android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3450<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3451device to select post-processing values for processing
3452blocks that do not allow for manual control,<wbr/> or are not
3453exposed by the camera API.<wbr/></p>
3454<p>However,<wbr/> the camera device's 3A routines may continue to
3455collect statistics and update their internal state so that
3456when control is switched to AUTO mode,<wbr/> good control values
3457can be immediately applied.<wbr/></p></span>
3458                  </li>
3459                  <li>
3460                    <span class="entry_type_enum_name">AUTO</span>
3461                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3462<p>Manual control of capture parameters is disabled.<wbr/> All
3463controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3464effect.<wbr/></p></span>
3465                  </li>
3466                  <li>
3467                    <span class="entry_type_enum_name">USE_SCENE_MODE</span>
3468                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3469<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3470control.<wbr/>afMode controls; the camera device will ignore
3471those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3472FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still
3473active.<wbr/>  This setting can only be used if scene mode is
3474supported (i.<wbr/>e.<wbr/> <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3475contain some modes other than DISABLED).<wbr/></p></span>
3476                  </li>
3477                  <li>
3478                    <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
3479                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3480used by camera device background auto-exposure,<wbr/> auto-white balance and
3481auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3482<p>Specifically,<wbr/> the 3A routines are locked to the last
3483values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3484USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3485collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3486discarded by the camera device.<wbr/></p></span>
3487                  </li>
3488                </ul>
3489
3490            </td> <!-- entry_type -->
3491
3492            <td class="entry_description">
3493              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3494routines.<wbr/></p>
3495            </td>
3496
3497            <td class="entry_units">
3498            </td>
3499
3500            <td class="entry_range">
3501            </td>
3502
3503            <td class="entry_tags">
3504              <ul class="entry_tags">
3505                  <li><a href="#tag_BC">BC</a></li>
3506              </ul>
3507            </td>
3508
3509          </tr>
3510          <tr class="entries_header">
3511            <th class="th_details" colspan="5">Details</th>
3512          </tr>
3513          <tr class="entry_cont">
3514            <td class="entry_details" colspan="5">
3515              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3516by the camera device is disabled.<wbr/> The application must set the fields for
3517capture parameters itself.<wbr/></p>
3518<p>When set to AUTO,<wbr/> the individual algorithm controls in
3519android.<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>
3520<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3521android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
3522one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
3523as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
3524<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
3525<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3526is that this frame will not be used by camera device background 3A statistics
3527update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3528where the application doesn't want a 3A manual control capture to affect
3529the subsequent auto 3A capture results.<wbr/></p>
3530<p>LEGACY mode devices will only support AUTO and USE_<wbr/>SCENE_<wbr/>MODE modes.<wbr/>
3531LIMITED mode devices will only support OFF and OFF_<wbr/>KEEP_<wbr/>STATE if they
3532support the MANUAL_<wbr/>SENSOR and MANUAL_<wbr/>POST_<wbr/>PROCSESING capabilities.<wbr/>
3533FULL mode devices will always support OFF and OFF_<wbr/>KEEP_<wbr/>STATE.<wbr/></p>
3534            </td>
3535          </tr>
3536
3537
3538          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3539           <!-- end of entry -->
3540
3541
3542          <tr class="entry" id="controls_android.control.sceneMode">
3543            <td class="entry_name
3544             " rowspan="5">
3545              android.<wbr/>control.<wbr/>scene<wbr/>Mode
3546            </td>
3547            <td class="entry_type">
3548                <span class="entry_type_name entry_type_name_enum">byte</span>
3549
3550              <span class="entry_type_visibility"> [public]</span>
3551
3552
3553              <span class="entry_type_hwlevel">[legacy] </span>
3554
3555
3556
3557                <ul class="entry_type_enum">
3558                  <li>
3559                    <span class="entry_type_enum_name">DISABLED</span>
3560                    <span class="entry_type_enum_value">0</span>
3561                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3562                  </li>
3563                  <li>
3564                    <span class="entry_type_enum_name">FACE_PRIORITY</span>
3565                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3566detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3567auto-exposure routines.<wbr/></p>
3568<p>If face detection statistics are disabled
3569(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/>
3570this should still operate correctly (but will not return
3571face detection statistics to the framework).<wbr/></p>
3572<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3573<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>
3574remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3575                  </li>
3576                  <li>
3577                    <span class="entry_type_enum_name">ACTION</span>
3578                    <span class="entry_type_enum_optional">[optional]</span>
3579                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3580<p>Similar to SPORTS.<wbr/></p></span>
3581                  </li>
3582                  <li>
3583                    <span class="entry_type_enum_name">PORTRAIT</span>
3584                    <span class="entry_type_enum_optional">[optional]</span>
3585                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3586                  </li>
3587                  <li>
3588                    <span class="entry_type_enum_name">LANDSCAPE</span>
3589                    <span class="entry_type_enum_optional">[optional]</span>
3590                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3591                  </li>
3592                  <li>
3593                    <span class="entry_type_enum_name">NIGHT</span>
3594                    <span class="entry_type_enum_optional">[optional]</span>
3595                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3596                  </li>
3597                  <li>
3598                    <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
3599                    <span class="entry_type_enum_optional">[optional]</span>
3600                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3601settings.<wbr/></p></span>
3602                  </li>
3603                  <li>
3604                    <span class="entry_type_enum_name">THEATRE</span>
3605                    <span class="entry_type_enum_optional">[optional]</span>
3606                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3607remain off.<wbr/></p></span>
3608                  </li>
3609                  <li>
3610                    <span class="entry_type_enum_name">BEACH</span>
3611                    <span class="entry_type_enum_optional">[optional]</span>
3612                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3613                  </li>
3614                  <li>
3615                    <span class="entry_type_enum_name">SNOW</span>
3616                    <span class="entry_type_enum_optional">[optional]</span>
3617                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3618                  </li>
3619                  <li>
3620                    <span class="entry_type_enum_name">SUNSET</span>
3621                    <span class="entry_type_enum_optional">[optional]</span>
3622                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3623                  </li>
3624                  <li>
3625                    <span class="entry_type_enum_name">STEADYPHOTO</span>
3626                    <span class="entry_type_enum_optional">[optional]</span>
3627                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
3628device motion (for example: due to hand shake).<wbr/></p></span>
3629                  </li>
3630                  <li>
3631                    <span class="entry_type_enum_name">FIREWORKS</span>
3632                    <span class="entry_type_enum_optional">[optional]</span>
3633                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
3634                  </li>
3635                  <li>
3636                    <span class="entry_type_enum_name">SPORTS</span>
3637                    <span class="entry_type_enum_optional">[optional]</span>
3638                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
3639<p>Similar to ACTION.<wbr/></p></span>
3640                  </li>
3641                  <li>
3642                    <span class="entry_type_enum_name">PARTY</span>
3643                    <span class="entry_type_enum_optional">[optional]</span>
3644                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
3645people.<wbr/></p></span>
3646                  </li>
3647                  <li>
3648                    <span class="entry_type_enum_name">CANDLELIGHT</span>
3649                    <span class="entry_type_enum_optional">[optional]</span>
3650                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
3651is a flame.<wbr/></p></span>
3652                  </li>
3653                  <li>
3654                    <span class="entry_type_enum_name">BARCODE</span>
3655                    <span class="entry_type_enum_optional">[optional]</span>
3656                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
3657for use by camera applications that wish to read the
3658barcode value.<wbr/></p></span>
3659                  </li>
3660                  <li>
3661                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
3662                    <span class="entry_type_enum_optional">[optional]</span>
3663                    <span class="entry_type_enum_notes"><p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
3664<p>The supported high speed video sizes and fps ranges are specified in
3665<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
3666output frame rates,<wbr/> the application is only allowed to select video size
3667and fps range combinations listed in this static metadata.<wbr/> The fps range
3668can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
3669<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
3670ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
3671controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
3672and post-processing parameters is possible.<wbr/> All other controls operate the
3673same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
3674android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
3675<ul>
3676<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
3677<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
3678<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
3679<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
3680<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
3681<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
3682<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
3683<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
3684<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
3685<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
3686</ul>
3687<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
3688<ul>
3689<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>
3690<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
3691<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
3692<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
3693</ul>
3694<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
3695be lower than what camera can output,<wbr/> depending on the destination Surfaces for
3696the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
3697the application need check if the video encoder is capable of supporting the
3698high frame rate for a given video size,<wbr/> or it will end up with lower recording
3699frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
3700rate will be bounded by the screen refresh rate.<wbr/></p>
3701<p>The camera device will only support up to 2 output high speed streams
3702(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
3703in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
3704<ul>
3705<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
3706format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
3707min(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>
3708<li>The stream sizes are selected from the sizes reported by
3709<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
3710<li>No processed non-stalling or raw streams are configured.<wbr/></li>
3711</ul>
3712<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
3713<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/>
3714the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
3715and the returned capture result metadata will give the fps range choosen
3716by the camera device.<wbr/></p>
3717<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
3718reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
3719the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
3720                  </li>
3721                  <li>
3722                    <span class="entry_type_enum_name">HDR</span>
3723                    <span class="entry_type_enum_optional">[optional]</span>
3724                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
3725<p>In this scene mode,<wbr/> the camera device captures images
3726that keep a larger range of scene illumination levels
3727visible in the final image.<wbr/> For example,<wbr/> when taking a
3728picture of a object in front of a bright window,<wbr/> both
3729the object and the scene through the window may be
3730visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
3731one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
3732HDR mode generally takes much longer to capture a single
3733image,<wbr/> has no user control,<wbr/> and may have other artifacts
3734depending on the HDR method used.<wbr/></p>
3735<p>Therefore,<wbr/> HDR captures operate at a much slower rate
3736than regular captures.<wbr/></p>
3737<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
3738is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
3739STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
3740using a high dynamic range capture technique.<wbr/>  On LEGACY
3741devices,<wbr/> captures that target a JPEG-format output will
3742be captured with HDR,<wbr/> and the capture intent is not
3743relevant.<wbr/></p>
3744<p>The HDR capture may involve the device capturing a burst
3745of images internally and combining them into one,<wbr/> or it
3746may involve the device using specialized high dynamic
3747range capture hardware.<wbr/> In all cases,<wbr/> a single image is
3748produced in response to a capture request submitted
3749while in HDR mode.<wbr/></p>
3750<p>Since substantial post-processing is generally needed to
3751produce an HDR image,<wbr/> only YUV and JPEG outputs are
3752supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only
3753JPEG outputs are supported for LEGACY HDR
3754captures.<wbr/> Using a RAW output for HDR capture is not
3755supported.<wbr/></p></span>
3756                  </li>
3757                </ul>
3758
3759            </td> <!-- entry_type -->
3760
3761            <td class="entry_description">
3762              <p>Control for which scene mode is currently active.<wbr/></p>
3763            </td>
3764
3765            <td class="entry_units">
3766            </td>
3767
3768            <td class="entry_range">
3769              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
3770            </td>
3771
3772            <td class="entry_tags">
3773              <ul class="entry_tags">
3774                  <li><a href="#tag_BC">BC</a></li>
3775              </ul>
3776            </td>
3777
3778          </tr>
3779          <tr class="entries_header">
3780            <th class="th_details" colspan="5">Details</th>
3781          </tr>
3782          <tr class="entry_cont">
3783            <td class="entry_details" colspan="5">
3784              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
3785capture settings.<wbr/></p>
3786<p>This is the mode that that is active when
3787<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/>
3788these modes will disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3789<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> while in use.<wbr/></p>
3790<p>The interpretation and implementation of these scene modes is left
3791to the implementor of the camera device.<wbr/> Their behavior will not be
3792consistent across all devices,<wbr/> and any given device may only implement
3793a subset of these modes.<wbr/></p>
3794            </td>
3795          </tr>
3796
3797          <tr class="entries_header">
3798            <th class="th_details" colspan="5">HAL Implementation Details</th>
3799          </tr>
3800          <tr class="entry_cont">
3801            <td class="entry_details" colspan="5">
3802              <p>HAL implementations that include scene modes are expected to provide
3803the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3804<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
3805<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
3806<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/>
3807the HAL must list supported video size and fps range in
3808<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/>
38091280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
3810mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
3811requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/></p>
3812            </td>
3813          </tr>
3814
3815          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3816           <!-- end of entry -->
3817
3818
3819          <tr class="entry" id="controls_android.control.videoStabilizationMode">
3820            <td class="entry_name
3821             " rowspan="3">
3822              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
3823            </td>
3824            <td class="entry_type">
3825                <span class="entry_type_name entry_type_name_enum">byte</span>
3826
3827              <span class="entry_type_visibility"> [public]</span>
3828
3829
3830              <span class="entry_type_hwlevel">[legacy] </span>
3831
3832
3833
3834                <ul class="entry_type_enum">
3835                  <li>
3836                    <span class="entry_type_enum_name">OFF</span>
3837                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
3838                  </li>
3839                  <li>
3840                    <span class="entry_type_enum_name">ON</span>
3841                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
3842                  </li>
3843                </ul>
3844
3845            </td> <!-- entry_type -->
3846
3847            <td class="entry_description">
3848              <p>Whether video stabilization is
3849active.<wbr/></p>
3850            </td>
3851
3852            <td class="entry_units">
3853            </td>
3854
3855            <td class="entry_range">
3856            </td>
3857
3858            <td class="entry_tags">
3859              <ul class="entry_tags">
3860                  <li><a href="#tag_BC">BC</a></li>
3861              </ul>
3862            </td>
3863
3864          </tr>
3865          <tr class="entries_header">
3866            <th class="th_details" colspan="5">Details</th>
3867          </tr>
3868          <tr class="entry_cont">
3869            <td class="entry_details" colspan="5">
3870              <p>Video stabilization automatically translates and scales images from
3871the camera in order to stabilize motion between consecutive frames.<wbr/></p>
3872<p>If enabled,<wbr/> video stabilization can modify the
3873<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
3874<p>Switching between different video stabilization modes may take several
3875frames to initialize,<wbr/> the camera device will report the current mode
3876in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
3877the video stabilization modes in the first several capture results may
3878still be "OFF",<wbr/> and it will become "ON" when the initialization is
3879done.<wbr/></p>
3880<p>If a camera device supports both this mode and OIS
3881(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
3882produce undesirable interaction,<wbr/> so it is recommended not to enable
3883both at the same time.<wbr/></p>
3884            </td>
3885          </tr>
3886
3887
3888          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3889           <!-- end of entry -->
3890
3891
3892
3893      <!-- end of kind -->
3894      </tbody>
3895      <tr><td colspan="6" class="kind">static</td></tr>
3896
3897      <thead class="entries_header">
3898        <tr>
3899          <th class="th_name">Property Name</th>
3900          <th class="th_type">Type</th>
3901          <th class="th_description">Description</th>
3902          <th class="th_units">Units</th>
3903          <th class="th_range">Range</th>
3904          <th class="th_tags">Tags</th>
3905        </tr>
3906      </thead>
3907
3908      <tbody>
3909
3910
3911
3912
3913
3914
3915
3916
3917
3918
3919          <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
3920            <td class="entry_name
3921             " rowspan="3">
3922              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
3923            </td>
3924            <td class="entry_type">
3925                <span class="entry_type_name">byte</span>
3926                <span class="entry_type_container">x</span>
3927
3928                <span class="entry_type_array">
3929                  n
3930                </span>
3931              <span class="entry_type_visibility"> [public as enumList]</span>
3932
3933
3934              <span class="entry_type_hwlevel">[legacy] </span>
3935
3936
3937                <div class="entry_type_notes">list of enums</div>
3938
3939
3940            </td> <!-- entry_type -->
3941
3942            <td class="entry_description">
3943              <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
3944supported by this camera device.<wbr/></p>
3945            </td>
3946
3947            <td class="entry_units">
3948            </td>
3949
3950            <td class="entry_range">
3951              <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
3952            </td>
3953
3954            <td class="entry_tags">
3955              <ul class="entry_tags">
3956                  <li><a href="#tag_BC">BC</a></li>
3957              </ul>
3958            </td>
3959
3960          </tr>
3961          <tr class="entries_header">
3962            <th class="th_details" colspan="5">Details</th>
3963          </tr>
3964          <tr class="entry_cont">
3965            <td class="entry_details" colspan="5">
3966              <p>Not all of the auto-exposure anti-banding modes may be
3967supported by a given camera device.<wbr/> This field lists the
3968valid anti-banding modes that the application may request
3969for this camera device with the
3970<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
3971            </td>
3972          </tr>
3973
3974
3975          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3976           <!-- end of entry -->
3977
3978
3979          <tr class="entry" id="static_android.control.aeAvailableModes">
3980            <td class="entry_name
3981             " rowspan="3">
3982              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
3983            </td>
3984            <td class="entry_type">
3985                <span class="entry_type_name">byte</span>
3986                <span class="entry_type_container">x</span>
3987
3988                <span class="entry_type_array">
3989                  n
3990                </span>
3991              <span class="entry_type_visibility"> [public as enumList]</span>
3992
3993
3994              <span class="entry_type_hwlevel">[legacy] </span>
3995
3996
3997                <div class="entry_type_notes">list of enums</div>
3998
3999
4000            </td> <!-- entry_type -->
4001
4002            <td class="entry_description">
4003              <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
4004device.<wbr/></p>
4005            </td>
4006
4007            <td class="entry_units">
4008            </td>
4009
4010            <td class="entry_range">
4011              <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4012            </td>
4013
4014            <td class="entry_tags">
4015              <ul class="entry_tags">
4016                  <li><a href="#tag_BC">BC</a></li>
4017              </ul>
4018            </td>
4019
4020          </tr>
4021          <tr class="entries_header">
4022            <th class="th_details" colspan="5">Details</th>
4023          </tr>
4024          <tr class="entry_cont">
4025            <td class="entry_details" colspan="5">
4026              <p>Not all the auto-exposure modes may be supported by a
4027given camera device,<wbr/> especially if no flash unit is
4028available.<wbr/> This entry lists the valid modes for
4029<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4030<p>All camera devices support ON,<wbr/> and all camera devices with flash
4031units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4032<p>FULL mode camera devices always support OFF mode,<wbr/>
4033which enables application control of camera exposure time,<wbr/>
4034sensitivity,<wbr/> and frame duration.<wbr/></p>
4035<p>LEGACY mode camera devices never support OFF mode.<wbr/>
4036LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4037capability.<wbr/></p>
4038            </td>
4039          </tr>
4040
4041
4042          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4043           <!-- end of entry -->
4044
4045
4046          <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4047            <td class="entry_name
4048             " rowspan="3">
4049              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4050            </td>
4051            <td class="entry_type">
4052                <span class="entry_type_name">int32</span>
4053                <span class="entry_type_container">x</span>
4054
4055                <span class="entry_type_array">
4056                  2 x n
4057                </span>
4058              <span class="entry_type_visibility"> [public as rangeInt]</span>
4059
4060
4061              <span class="entry_type_hwlevel">[legacy] </span>
4062
4063
4064                <div class="entry_type_notes">list of pairs of frame rates</div>
4065
4066
4067            </td> <!-- entry_type -->
4068
4069            <td class="entry_description">
4070              <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
4071this camera device.<wbr/></p>
4072            </td>
4073
4074            <td class="entry_units">
4075              Frames per second (FPS)
4076            </td>
4077
4078            <td class="entry_range">
4079            </td>
4080
4081            <td class="entry_tags">
4082              <ul class="entry_tags">
4083                  <li><a href="#tag_BC">BC</a></li>
4084              </ul>
4085            </td>
4086
4087          </tr>
4088          <tr class="entries_header">
4089            <th class="th_details" colspan="5">Details</th>
4090          </tr>
4091          <tr class="entry_cont">
4092            <td class="entry_details" colspan="5">
4093              <p>For devices at the LIMITED level or above,<wbr/> this list will include at least (30,<wbr/> 30) for
4094constant-framerate recording.<wbr/></p>
4095            </td>
4096          </tr>
4097
4098
4099          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4100           <!-- end of entry -->
4101
4102
4103          <tr class="entry" id="static_android.control.aeCompensationRange">
4104            <td class="entry_name
4105             " rowspan="1">
4106              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4107            </td>
4108            <td class="entry_type">
4109                <span class="entry_type_name">int32</span>
4110                <span class="entry_type_container">x</span>
4111
4112                <span class="entry_type_array">
4113                  2
4114                </span>
4115              <span class="entry_type_visibility"> [public as rangeInt]</span>
4116
4117
4118              <span class="entry_type_hwlevel">[legacy] </span>
4119
4120
4121
4122
4123            </td> <!-- entry_type -->
4124
4125            <td class="entry_description">
4126              <p>Maximum and minimum exposure compensation values for
4127<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/>
4128that are supported by this camera device.<wbr/></p>
4129            </td>
4130
4131            <td class="entry_units">
4132            </td>
4133
4134            <td class="entry_range">
4135              <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4136<p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4137compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4138<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>
4139<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>
4140<p>LEGACY devices may support a smaller range than this.<wbr/></p>
4141            </td>
4142
4143            <td class="entry_tags">
4144              <ul class="entry_tags">
4145                  <li><a href="#tag_BC">BC</a></li>
4146              </ul>
4147            </td>
4148
4149          </tr>
4150
4151
4152          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4153           <!-- end of entry -->
4154
4155
4156          <tr class="entry" id="static_android.control.aeCompensationStep">
4157            <td class="entry_name
4158             " rowspan="5">
4159              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4160            </td>
4161            <td class="entry_type">
4162                <span class="entry_type_name">rational</span>
4163
4164              <span class="entry_type_visibility"> [public]</span>
4165
4166
4167              <span class="entry_type_hwlevel">[legacy] </span>
4168
4169
4170
4171
4172            </td> <!-- entry_type -->
4173
4174            <td class="entry_description">
4175              <p>Smallest step by which the exposure compensation
4176can be changed.<wbr/></p>
4177            </td>
4178
4179            <td class="entry_units">
4180              Exposure Value (EV)
4181            </td>
4182
4183            <td class="entry_range">
4184            </td>
4185
4186            <td class="entry_tags">
4187              <ul class="entry_tags">
4188                  <li><a href="#tag_BC">BC</a></li>
4189              </ul>
4190            </td>
4191
4192          </tr>
4193          <tr class="entries_header">
4194            <th class="th_details" colspan="5">Details</th>
4195          </tr>
4196          <tr class="entry_cont">
4197            <td class="entry_details" colspan="5">
4198              <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
4199a 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
4200that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4201<p>One unit of EV compensation changes the brightness of the captured image by a factor
4202of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4203            </td>
4204          </tr>
4205
4206          <tr class="entries_header">
4207            <th class="th_details" colspan="5">HAL Implementation Details</th>
4208          </tr>
4209          <tr class="entry_cont">
4210            <td class="entry_details" colspan="5">
4211              <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4212            </td>
4213          </tr>
4214
4215          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4216           <!-- end of entry -->
4217
4218
4219          <tr class="entry" id="static_android.control.afAvailableModes">
4220            <td class="entry_name
4221             " rowspan="3">
4222              android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4223            </td>
4224            <td class="entry_type">
4225                <span class="entry_type_name">byte</span>
4226                <span class="entry_type_container">x</span>
4227
4228                <span class="entry_type_array">
4229                  n
4230                </span>
4231              <span class="entry_type_visibility"> [public as enumList]</span>
4232
4233
4234              <span class="entry_type_hwlevel">[legacy] </span>
4235
4236
4237                <div class="entry_type_notes">List of enums</div>
4238
4239
4240            </td> <!-- entry_type -->
4241
4242            <td class="entry_description">
4243              <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4244supported by this camera device.<wbr/></p>
4245            </td>
4246
4247            <td class="entry_units">
4248            </td>
4249
4250            <td class="entry_range">
4251              <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4252            </td>
4253
4254            <td class="entry_tags">
4255              <ul class="entry_tags">
4256                  <li><a href="#tag_BC">BC</a></li>
4257              </ul>
4258            </td>
4259
4260          </tr>
4261          <tr class="entries_header">
4262            <th class="th_details" colspan="5">Details</th>
4263          </tr>
4264          <tr class="entry_cont">
4265            <td class="entry_details" colspan="5">
4266              <p>Not all the auto-focus modes may be supported by a
4267given camera device.<wbr/> This entry lists the valid modes for
4268<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4269<p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4270camera devices with adjustable focuser units
4271(<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>
4272<p>LEGACY devices will support OFF mode only if they support
4273focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4274<code>0.<wbr/>0f</code>).<wbr/></p>
4275            </td>
4276          </tr>
4277
4278
4279          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4280           <!-- end of entry -->
4281
4282
4283          <tr class="entry" id="static_android.control.availableEffects">
4284            <td class="entry_name
4285             " rowspan="3">
4286              android.<wbr/>control.<wbr/>available<wbr/>Effects
4287            </td>
4288            <td class="entry_type">
4289                <span class="entry_type_name">byte</span>
4290                <span class="entry_type_container">x</span>
4291
4292                <span class="entry_type_array">
4293                  n
4294                </span>
4295              <span class="entry_type_visibility"> [public as enumList]</span>
4296
4297
4298              <span class="entry_type_hwlevel">[legacy] </span>
4299
4300
4301                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4302
4303
4304            </td> <!-- entry_type -->
4305
4306            <td class="entry_description">
4307              <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
4308device.<wbr/></p>
4309            </td>
4310
4311            <td class="entry_units">
4312            </td>
4313
4314            <td class="entry_range">
4315              <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4316            </td>
4317
4318            <td class="entry_tags">
4319              <ul class="entry_tags">
4320                  <li><a href="#tag_BC">BC</a></li>
4321              </ul>
4322            </td>
4323
4324          </tr>
4325          <tr class="entries_header">
4326            <th class="th_details" colspan="5">Details</th>
4327          </tr>
4328          <tr class="entry_cont">
4329            <td class="entry_details" colspan="5">
4330              <p>This list contains the color effect modes that can be applied to
4331images produced by the camera device.<wbr/>
4332Implementations are not expected to be consistent across all devices.<wbr/>
4333If no color effect modes are available for a device,<wbr/> this will only list
4334OFF.<wbr/></p>
4335<p>A color effect will only be applied if
4336<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
4337<p>This control has no effect on the operation of other control routines such
4338as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
4339            </td>
4340          </tr>
4341
4342
4343          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4344           <!-- end of entry -->
4345
4346
4347          <tr class="entry" id="static_android.control.availableSceneModes">
4348            <td class="entry_name
4349             " rowspan="3">
4350              android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
4351            </td>
4352            <td class="entry_type">
4353                <span class="entry_type_name">byte</span>
4354                <span class="entry_type_container">x</span>
4355
4356                <span class="entry_type_array">
4357                  n
4358                </span>
4359              <span class="entry_type_visibility"> [public as enumList]</span>
4360
4361
4362              <span class="entry_type_hwlevel">[legacy] </span>
4363
4364
4365                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
4366
4367
4368            </td> <!-- entry_type -->
4369
4370            <td class="entry_description">
4371              <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
4372device.<wbr/></p>
4373            </td>
4374
4375            <td class="entry_units">
4376            </td>
4377
4378            <td class="entry_range">
4379              <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
4380            </td>
4381
4382            <td class="entry_tags">
4383              <ul class="entry_tags">
4384                  <li><a href="#tag_BC">BC</a></li>
4385              </ul>
4386            </td>
4387
4388          </tr>
4389          <tr class="entries_header">
4390            <th class="th_details" colspan="5">Details</th>
4391          </tr>
4392          <tr class="entry_cont">
4393            <td class="entry_details" colspan="5">
4394              <p>This list contains scene modes that can be set for the camera device.<wbr/>
4395Only scene modes that have been fully implemented for the
4396camera device may be included here.<wbr/> Implementations are not expected
4397to be consistent across all devices.<wbr/></p>
4398<p>If no scene modes are supported by the camera device,<wbr/> this
4399will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
4400<p>FACE_<wbr/>PRIORITY is always listed if face detection is
4401supported (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;
44020</code>).<wbr/></p>
4403            </td>
4404          </tr>
4405
4406
4407          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4408           <!-- end of entry -->
4409
4410
4411          <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
4412            <td class="entry_name
4413             " rowspan="3">
4414              android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
4415            </td>
4416            <td class="entry_type">
4417                <span class="entry_type_name">byte</span>
4418                <span class="entry_type_container">x</span>
4419
4420                <span class="entry_type_array">
4421                  n
4422                </span>
4423              <span class="entry_type_visibility"> [public as enumList]</span>
4424
4425
4426              <span class="entry_type_hwlevel">[legacy] </span>
4427
4428
4429                <div class="entry_type_notes">List of enums.<wbr/></div>
4430
4431
4432            </td> <!-- entry_type -->
4433
4434            <td class="entry_description">
4435              <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
4436that are supported by this camera device.<wbr/></p>
4437            </td>
4438
4439            <td class="entry_units">
4440            </td>
4441
4442            <td class="entry_range">
4443              <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
4444            </td>
4445
4446            <td class="entry_tags">
4447              <ul class="entry_tags">
4448                  <li><a href="#tag_BC">BC</a></li>
4449              </ul>
4450            </td>
4451
4452          </tr>
4453          <tr class="entries_header">
4454            <th class="th_details" colspan="5">Details</th>
4455          </tr>
4456          <tr class="entry_cont">
4457            <td class="entry_details" colspan="5">
4458              <p>OFF will always be listed.<wbr/></p>
4459            </td>
4460          </tr>
4461
4462
4463          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4464           <!-- end of entry -->
4465
4466
4467          <tr class="entry" id="static_android.control.awbAvailableModes">
4468            <td class="entry_name
4469             " rowspan="3">
4470              android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
4471            </td>
4472            <td class="entry_type">
4473                <span class="entry_type_name">byte</span>
4474                <span class="entry_type_container">x</span>
4475
4476                <span class="entry_type_array">
4477                  n
4478                </span>
4479              <span class="entry_type_visibility"> [public as enumList]</span>
4480
4481
4482              <span class="entry_type_hwlevel">[legacy] </span>
4483
4484
4485                <div class="entry_type_notes">List of enums</div>
4486
4487
4488            </td> <!-- entry_type -->
4489
4490            <td class="entry_description">
4491              <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
4492camera device.<wbr/></p>
4493            </td>
4494
4495            <td class="entry_units">
4496            </td>
4497
4498            <td class="entry_range">
4499              <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
4500            </td>
4501
4502            <td class="entry_tags">
4503              <ul class="entry_tags">
4504                  <li><a href="#tag_BC">BC</a></li>
4505              </ul>
4506            </td>
4507
4508          </tr>
4509          <tr class="entries_header">
4510            <th class="th_details" colspan="5">Details</th>
4511          </tr>
4512          <tr class="entry_cont">
4513            <td class="entry_details" colspan="5">
4514              <p>Not all the auto-white-balance modes may be supported by a
4515given camera device.<wbr/> This entry lists the valid modes for
4516<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
4517<p>All camera devices will support ON mode.<wbr/></p>
4518<p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
4519mode,<wbr/> which enables application control of white balance,<wbr/> by using
4520<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
4521mode camera devices.<wbr/></p>
4522            </td>
4523          </tr>
4524
4525
4526          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4527           <!-- end of entry -->
4528
4529
4530          <tr class="entry" id="static_android.control.maxRegions">
4531            <td class="entry_name
4532             " rowspan="1">
4533              android.<wbr/>control.<wbr/>max<wbr/>Regions
4534            </td>
4535            <td class="entry_type">
4536                <span class="entry_type_name">int32</span>
4537                <span class="entry_type_container">x</span>
4538
4539                <span class="entry_type_array">
4540                  3
4541                </span>
4542              <span class="entry_type_visibility"> [hidden]</span>
4543
4544
4545              <span class="entry_type_hwlevel">[legacy] </span>
4546
4547
4548
4549
4550            </td> <!-- entry_type -->
4551
4552            <td class="entry_description">
4553              <p>List of the maximum number of regions that can be used for metering in
4554auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
4555this corresponds to the the maximum number of elements in
4556<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/>
4557and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
4558            </td>
4559
4560            <td class="entry_units">
4561            </td>
4562
4563            <td class="entry_range">
4564              <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
4565this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
4566<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></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
4577
4578          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4579           <!-- end of entry -->
4580
4581
4582          <tr class="entry" id="static_android.control.maxRegionsAe">
4583            <td class="entry_name
4584             " rowspan="5">
4585              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
4586            </td>
4587            <td class="entry_type">
4588                <span class="entry_type_name">int32</span>
4589
4590              <span class="entry_type_visibility"> [public]</span>
4591
4592              <span class="entry_type_synthetic">[synthetic] </span>
4593
4594              <span class="entry_type_hwlevel">[legacy] </span>
4595
4596
4597
4598
4599            </td> <!-- entry_type -->
4600
4601            <td class="entry_description">
4602              <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
4603routine.<wbr/></p>
4604            </td>
4605
4606            <td class="entry_units">
4607            </td>
4608
4609            <td class="entry_range">
4610              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
4611value will be &gt;= 1.<wbr/></p>
4612            </td>
4613
4614            <td class="entry_tags">
4615            </td>
4616
4617          </tr>
4618          <tr class="entries_header">
4619            <th class="th_details" colspan="5">Details</th>
4620          </tr>
4621          <tr class="entry_cont">
4622            <td class="entry_details" colspan="5">
4623              <p>This corresponds to the the maximum allowed number of elements in
4624<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
4625            </td>
4626          </tr>
4627
4628          <tr class="entries_header">
4629            <th class="th_details" colspan="5">HAL Implementation Details</th>
4630          </tr>
4631          <tr class="entry_cont">
4632            <td class="entry_details" colspan="5">
4633              <p>This entry is private to the framework.<wbr/> Fill in
4634maxRegions to have this entry be automatically populated.<wbr/></p>
4635            </td>
4636          </tr>
4637
4638          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4639           <!-- end of entry -->
4640
4641
4642          <tr class="entry" id="static_android.control.maxRegionsAwb">
4643            <td class="entry_name
4644             " rowspan="5">
4645              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
4646            </td>
4647            <td class="entry_type">
4648                <span class="entry_type_name">int32</span>
4649
4650              <span class="entry_type_visibility"> [public]</span>
4651
4652              <span class="entry_type_synthetic">[synthetic] </span>
4653
4654              <span class="entry_type_hwlevel">[legacy] </span>
4655
4656
4657
4658
4659            </td> <!-- entry_type -->
4660
4661            <td class="entry_description">
4662              <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
4663routine.<wbr/></p>
4664            </td>
4665
4666            <td class="entry_units">
4667            </td>
4668
4669            <td class="entry_range">
4670              <p>Value will be &gt;= 0.<wbr/></p>
4671            </td>
4672
4673            <td class="entry_tags">
4674            </td>
4675
4676          </tr>
4677          <tr class="entries_header">
4678            <th class="th_details" colspan="5">Details</th>
4679          </tr>
4680          <tr class="entry_cont">
4681            <td class="entry_details" colspan="5">
4682              <p>This corresponds to the the maximum allowed number of elements in
4683<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
4684            </td>
4685          </tr>
4686
4687          <tr class="entries_header">
4688            <th class="th_details" colspan="5">HAL Implementation Details</th>
4689          </tr>
4690          <tr class="entry_cont">
4691            <td class="entry_details" colspan="5">
4692              <p>This entry is private to the framework.<wbr/> Fill in
4693maxRegions to have this entry be automatically populated.<wbr/></p>
4694            </td>
4695          </tr>
4696
4697          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4698           <!-- end of entry -->
4699
4700
4701          <tr class="entry" id="static_android.control.maxRegionsAf">
4702            <td class="entry_name
4703             " rowspan="5">
4704              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
4705            </td>
4706            <td class="entry_type">
4707                <span class="entry_type_name">int32</span>
4708
4709              <span class="entry_type_visibility"> [public]</span>
4710
4711              <span class="entry_type_synthetic">[synthetic] </span>
4712
4713              <span class="entry_type_hwlevel">[legacy] </span>
4714
4715
4716
4717
4718            </td> <!-- entry_type -->
4719
4720            <td class="entry_description">
4721              <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
4722            </td>
4723
4724            <td class="entry_units">
4725            </td>
4726
4727            <td class="entry_range">
4728              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
4729value will be &gt;= 1.<wbr/></p>
4730            </td>
4731
4732            <td class="entry_tags">
4733            </td>
4734
4735          </tr>
4736          <tr class="entries_header">
4737            <th class="th_details" colspan="5">Details</th>
4738          </tr>
4739          <tr class="entry_cont">
4740            <td class="entry_details" colspan="5">
4741              <p>This corresponds to the the maximum allowed number of elements in
4742<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
4743            </td>
4744          </tr>
4745
4746          <tr class="entries_header">
4747            <th class="th_details" colspan="5">HAL Implementation Details</th>
4748          </tr>
4749          <tr class="entry_cont">
4750            <td class="entry_details" colspan="5">
4751              <p>This entry is private to the framework.<wbr/> Fill in
4752maxRegions to have this entry be automatically populated.<wbr/></p>
4753            </td>
4754          </tr>
4755
4756          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4757           <!-- end of entry -->
4758
4759
4760          <tr class="entry" id="static_android.control.sceneModeOverrides">
4761            <td class="entry_name
4762             " rowspan="5">
4763              android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
4764            </td>
4765            <td class="entry_type">
4766                <span class="entry_type_name">byte</span>
4767                <span class="entry_type_container">x</span>
4768
4769                <span class="entry_type_array">
4770                  3 x length(availableSceneModes)
4771                </span>
4772              <span class="entry_type_visibility"> [system]</span>
4773
4774
4775              <span class="entry_type_hwlevel">[limited] </span>
4776
4777
4778
4779
4780            </td> <!-- entry_type -->
4781
4782            <td class="entry_description">
4783              <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
4784settings to use with each available scene mode.<wbr/></p>
4785            </td>
4786
4787            <td class="entry_units">
4788            </td>
4789
4790            <td class="entry_range">
4791              <p>For each available scene mode,<wbr/> the list must contain three
4792entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4793<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
4794by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
4795where aeMode has the lowest index position.<wbr/></p>
4796            </td>
4797
4798            <td class="entry_tags">
4799              <ul class="entry_tags">
4800                  <li><a href="#tag_BC">BC</a></li>
4801              </ul>
4802            </td>
4803
4804          </tr>
4805          <tr class="entries_header">
4806            <th class="th_details" colspan="5">Details</th>
4807          </tr>
4808          <tr class="entry_cont">
4809            <td class="entry_details" colspan="5">
4810              <p>When a scene mode is enabled,<wbr/> the camera device is expected
4811to 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/>
4812and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
4813that scene mode.<wbr/></p>
4814<p>The order of this list matches that of availableSceneModes,<wbr/>
4815with 3 entries for each mode.<wbr/>  The overrides listed
4816for FACE_<wbr/>PRIORITY are ignored,<wbr/> since for that
4817mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4818<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
4819used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
4820is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY
4821overrides should be set to 0.<wbr/></p>
4822<p>For example,<wbr/> if availableSceneModes contains
4823<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
4824expects sceneModeOverrides to have 9 entries formatted like:
4825<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
4826ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
4827            </td>
4828          </tr>
4829
4830          <tr class="entries_header">
4831            <th class="th_details" colspan="5">HAL Implementation Details</th>
4832          </tr>
4833          <tr class="entry_cont">
4834            <td class="entry_details" colspan="5">
4835              <p>To maintain backward compatibility,<wbr/> this list will be made available
4836in the static metadata of the camera service.<wbr/>  The camera service will
4837use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4838<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
4839mode other than FACE_<wbr/>PRIORITY.<wbr/></p>
4840            </td>
4841          </tr>
4842
4843          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4844           <!-- end of entry -->
4845
4846
4847          <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
4848            <td class="entry_name
4849             " rowspan="5">
4850              android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
4851            </td>
4852            <td class="entry_type">
4853                <span class="entry_type_name">int32</span>
4854                <span class="entry_type_container">x</span>
4855
4856                <span class="entry_type_array">
4857                  4 x n
4858                </span>
4859              <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
4860
4861
4862              <span class="entry_type_hwlevel">[limited] </span>
4863
4864
4865
4866
4867            </td> <!-- entry_type -->
4868
4869            <td class="entry_description">
4870              <p>List of available high speed video size and fps range configurations
4871supported by the camera device,<wbr/> in the format of (width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max).<wbr/></p>
4872            </td>
4873
4874            <td class="entry_units">
4875            </td>
4876
4877            <td class="entry_range">
4878              <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 60fps.<wbr/></p>
4879            </td>
4880
4881            <td class="entry_tags">
4882              <ul class="entry_tags">
4883                  <li><a href="#tag_V1">V1</a></li>
4884              </ul>
4885            </td>
4886
4887          </tr>
4888          <tr class="entries_header">
4889            <th class="th_details" colspan="5">Details</th>
4890          </tr>
4891          <tr class="entry_cont">
4892            <td class="entry_details" colspan="5">
4893              <p>When HIGH_<wbr/>SPEED_<wbr/>VIDEO is supported in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/>
4894this metadata will list the supported high speed video size and fps range
4895configurations.<wbr/> All the sizes listed in this configuration will be a subset
4896of the sizes reported by StreamConfigurationMap#getOutputSizes for processed
4897non-stalling formats.<wbr/></p>
4898<p>For the high speed video use case,<wbr/> where the application will set
4899<a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> to HIGH_<wbr/>SPEED_<wbr/>VIDEO in capture requests,<wbr/> the application must
4900select the video size and fps range from this metadata to configure the recording and
4901preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
4902to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
4903configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
4904by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
4905recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
4906must select one unique size from this metadata to use.<wbr/> Otherwise a request error might
4907occur.<wbr/></p>
4908<p>For normal video recording use case,<wbr/> where some application will NOT set
4909<a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> to HIGH_<wbr/>SPEED_<wbr/>VIDEO in capture requests,<wbr/> the fps ranges
4910reported in this metadata must not be used to setup capture requests,<wbr/> or it will cause
4911request error.<wbr/></p>
4912            </td>
4913          </tr>
4914
4915          <tr class="entries_header">
4916            <th class="th_details" colspan="5">HAL Implementation Details</th>
4917          </tr>
4918          <tr class="entry_cont">
4919            <td class="entry_details" colspan="5">
4920              <p>All the sizes listed in this configuration will be a subset of the sizes reported by
4921<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
4922Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
4923of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
4924<p>Since the HIGH_<wbr/>SPEED_<wbr/>VIDEO mode may be turned on for preview view only case,<wbr/> the preview
4925fps is bounded by device refresh rate (e.<wbr/>g.<wbr/> 60fps).<wbr/> For a given resolution,<wbr/> it is
4926recommended that this list includes some fps ranges (e.<wbr/>g.<wbr/> [30,<wbr/> 60]) that is suitable
4927for preview only streaming case.<wbr/></p>
4928            </td>
4929          </tr>
4930
4931          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4932           <!-- end of entry -->
4933
4934
4935
4936      <!-- end of kind -->
4937      </tbody>
4938      <tr><td colspan="6" class="kind">dynamic</td></tr>
4939
4940      <thead class="entries_header">
4941        <tr>
4942          <th class="th_name">Property Name</th>
4943          <th class="th_type">Type</th>
4944          <th class="th_description">Description</th>
4945          <th class="th_units">Units</th>
4946          <th class="th_range">Range</th>
4947          <th class="th_tags">Tags</th>
4948        </tr>
4949      </thead>
4950
4951      <tbody>
4952
4953
4954
4955
4956
4957
4958
4959
4960
4961
4962          <tr class="entry" id="dynamic_android.control.aePrecaptureId">
4963            <td class="entry_name
4964                entry_name_deprecated
4965             " rowspan="3">
4966              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
4967            </td>
4968            <td class="entry_type">
4969                <span class="entry_type_name">int32</span>
4970
4971              <span class="entry_type_visibility"> [system]</span>
4972
4973
4974
4975              <span class="entry_type_deprecated">[deprecated] </span>
4976
4977
4978
4979            </td> <!-- entry_type -->
4980
4981            <td class="entry_description">
4982              <p>The ID sent with the latest
4983CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
4984            </td>
4985
4986            <td class="entry_units">
4987            </td>
4988
4989            <td class="entry_range">
4990              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
4991            </td>
4992
4993            <td class="entry_tags">
4994            </td>
4995
4996          </tr>
4997          <tr class="entries_header">
4998            <th class="th_details" colspan="5">Details</th>
4999          </tr>
5000          <tr class="entry_cont">
5001            <td class="entry_details" colspan="5">
5002              <p>Must be 0 if no
5003CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5004by HAL.<wbr/> Always updated even if AE algorithm ignores the
5005trigger</p>
5006            </td>
5007          </tr>
5008
5009
5010          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5011           <!-- end of entry -->
5012
5013
5014          <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
5015            <td class="entry_name
5016             " rowspan="5">
5017              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
5018            </td>
5019            <td class="entry_type">
5020                <span class="entry_type_name entry_type_name_enum">byte</span>
5021
5022              <span class="entry_type_visibility"> [public]</span>
5023
5024
5025              <span class="entry_type_hwlevel">[legacy] </span>
5026
5027
5028
5029                <ul class="entry_type_enum">
5030                  <li>
5031                    <span class="entry_type_enum_name">OFF</span>
5032                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
5033avoid banding problems.<wbr/></p></span>
5034                  </li>
5035                  <li>
5036                    <span class="entry_type_enum_name">50HZ</span>
5037                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5038avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
5039                  </li>
5040                  <li>
5041                    <span class="entry_type_enum_name">60HZ</span>
5042                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5043avoid banding problems with 60Hz illumination
5044sources.<wbr/></p></span>
5045                  </li>
5046                  <li>
5047                    <span class="entry_type_enum_name">AUTO</span>
5048                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
5049antibanding routine to the current illumination
5050condition.<wbr/> This is the default mode if AUTO is
5051available on given camera device.<wbr/></p></span>
5052                  </li>
5053                </ul>
5054
5055            </td> <!-- entry_type -->
5056
5057            <td class="entry_description">
5058              <p>The desired setting for the camera device's auto-exposure
5059algorithm's antibanding compensation.<wbr/></p>
5060            </td>
5061
5062            <td class="entry_units">
5063            </td>
5064
5065            <td class="entry_range">
5066              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
5067            </td>
5068
5069            <td class="entry_tags">
5070              <ul class="entry_tags">
5071                  <li><a href="#tag_BC">BC</a></li>
5072              </ul>
5073            </td>
5074
5075          </tr>
5076          <tr class="entries_header">
5077            <th class="th_details" colspan="5">Details</th>
5078          </tr>
5079          <tr class="entry_cont">
5080            <td class="entry_details" colspan="5">
5081              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
5082lights,<wbr/> flicker at the rate of the power supply frequency
5083(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
5084typically not noticeable to a person,<wbr/> it can be visible to
5085a camera device.<wbr/> If a camera sets its exposure time to the
5086wrong value,<wbr/> the flicker may become visible in the
5087viewfinder as flicker or in a final captured image,<wbr/> as a
5088set of variable-brightness bands across the image.<wbr/></p>
5089<p>Therefore,<wbr/> the auto-exposure routines of camera devices
5090include antibanding routines that ensure that the chosen
5091exposure value will not cause such banding.<wbr/> The choice of
5092exposure time depends on the rate of flicker,<wbr/> which the
5093camera device can detect automatically,<wbr/> or the expected
5094rate can be selected by the application using this
5095control.<wbr/></p>
5096<p>A given camera device may not support all of the possible
5097options for the antibanding mode.<wbr/> The
5098<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
5099the available modes for a given camera device.<wbr/></p>
5100<p>AUTO mode is the default if it is available on given
5101camera device.<wbr/> When AUTO mode is not available,<wbr/> the
5102default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
5103and 60HZ will be available.<wbr/></p>
5104<p>If manual exposure control is enabled (by setting
5105<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/>
5106then this setting has no effect,<wbr/> and the application must
5107ensure it selects exposure times that do not cause banding
5108issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
5109the application in this.<wbr/></p>
5110            </td>
5111          </tr>
5112
5113          <tr class="entries_header">
5114            <th class="th_details" colspan="5">HAL Implementation Details</th>
5115          </tr>
5116          <tr class="entry_cont">
5117            <td class="entry_details" colspan="5">
5118              <p>For all capture request templates,<wbr/> this field must be set
5119to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
5120the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
512160HZ must be available.<wbr/></p>
5122<p>If manual exposure control is enabled (by setting
5123<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/>
5124then the exposure values provided by the application must not be
5125adjusted for antibanding.<wbr/></p>
5126            </td>
5127          </tr>
5128
5129          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5130           <!-- end of entry -->
5131
5132
5133          <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
5134            <td class="entry_name
5135             " rowspan="3">
5136              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
5137            </td>
5138            <td class="entry_type">
5139                <span class="entry_type_name">int32</span>
5140
5141              <span class="entry_type_visibility"> [public]</span>
5142
5143
5144              <span class="entry_type_hwlevel">[legacy] </span>
5145
5146
5147
5148
5149            </td> <!-- entry_type -->
5150
5151            <td class="entry_description">
5152              <p>Adjustment to auto-exposure (AE) target image
5153brightness.<wbr/></p>
5154            </td>
5155
5156            <td class="entry_units">
5157              Compensation steps
5158            </td>
5159
5160            <td class="entry_range">
5161              <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
5162            </td>
5163
5164            <td class="entry_tags">
5165              <ul class="entry_tags">
5166                  <li><a href="#tag_BC">BC</a></li>
5167              </ul>
5168            </td>
5169
5170          </tr>
5171          <tr class="entries_header">
5172            <th class="th_details" colspan="5">Details</th>
5173          </tr>
5174          <tr class="entry_cont">
5175            <td class="entry_details" colspan="5">
5176              <p>The adjustment is measured as a count of steps,<wbr/> with the
5177step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
5178allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
5179<p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
5180will mean an exposure compensation of +2 EV; -3 will mean an
5181exposure compensation of -1 EV.<wbr/> One EV represents a doubling
5182of image brightness.<wbr/> Note that this control will only be
5183effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
5184will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
5185<p>In the event of exposure compensation value being changed,<wbr/> camera device
5186may take several frames to reach the newly requested exposure target.<wbr/>
5187During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
5188state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
5189change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
5190FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
5191            </td>
5192          </tr>
5193
5194
5195          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5196           <!-- end of entry -->
5197
5198
5199          <tr class="entry" id="dynamic_android.control.aeLock">
5200            <td class="entry_name
5201             " rowspan="3">
5202              android.<wbr/>control.<wbr/>ae<wbr/>Lock
5203            </td>
5204            <td class="entry_type">
5205                <span class="entry_type_name entry_type_name_enum">byte</span>
5206
5207              <span class="entry_type_visibility"> [public as boolean]</span>
5208
5209
5210              <span class="entry_type_hwlevel">[legacy] </span>
5211
5212
5213
5214                <ul class="entry_type_enum">
5215                  <li>
5216                    <span class="entry_type_enum_name">OFF</span>
5217                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
5218is free to update its parameters.<wbr/></p></span>
5219                  </li>
5220                  <li>
5221                    <span class="entry_type_enum_name">ON</span>
5222                    <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
5223must not update the exposure and sensitivity parameters
5224while the lock is active.<wbr/></p>
5225<p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
5226will still take effect while auto-exposure is locked.<wbr/></p>
5227<p>Some rare LEGACY devices may not support
5228this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
5229                  </li>
5230                </ul>
5231
5232            </td> <!-- entry_type -->
5233
5234            <td class="entry_description">
5235              <p>Whether auto-exposure (AE) is currently locked to its latest
5236calculated values.<wbr/></p>
5237            </td>
5238
5239            <td class="entry_units">
5240            </td>
5241
5242            <td class="entry_range">
5243            </td>
5244
5245            <td class="entry_tags">
5246              <ul class="entry_tags">
5247                  <li><a href="#tag_BC">BC</a></li>
5248              </ul>
5249            </td>
5250
5251          </tr>
5252          <tr class="entries_header">
5253            <th class="th_details" colspan="5">Details</th>
5254          </tr>
5255          <tr class="entry_cont">
5256            <td class="entry_details" colspan="5">
5257              <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
5258and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
5259<p>Note that even when AE is locked,<wbr/> the flash may be fired if
5260the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
5261ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
5262<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
5263is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
5264<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
5265when AE is already locked,<wbr/> the camera device will not change the exposure time
5266(<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>)
5267parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
5268is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
5269<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/></p>
5270<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
5271get locked do not necessarily correspond to the settings that were present in the
5272latest capture result received from the camera device,<wbr/> since additional captures
5273and AE updates may have occurred even before the result was sent out.<wbr/> If an
5274application is switching between automatic and manual control and wishes to eliminate
5275any flicker during the switch,<wbr/> the following procedure is recommended:</p>
5276<ol>
5277<li>Starting in auto-AE mode:</li>
5278<li>Lock AE</li>
5279<li>Wait for the first result to be output that has the AE locked</li>
5280<li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
5281<li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
5282</ol>
5283<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>
5284            </td>
5285          </tr>
5286
5287
5288          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5289           <!-- end of entry -->
5290
5291
5292          <tr class="entry" id="dynamic_android.control.aeMode">
5293            <td class="entry_name
5294             " rowspan="3">
5295              android.<wbr/>control.<wbr/>ae<wbr/>Mode
5296            </td>
5297            <td class="entry_type">
5298                <span class="entry_type_name entry_type_name_enum">byte</span>
5299
5300              <span class="entry_type_visibility"> [public]</span>
5301
5302
5303              <span class="entry_type_hwlevel">[legacy] </span>
5304
5305
5306
5307                <ul class="entry_type_enum">
5308                  <li>
5309                    <span class="entry_type_enum_name">OFF</span>
5310                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
5311<p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5312<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
5313<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
5314device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
5315a flash unit for this camera device.<wbr/></p>
5316<p>Note that auto-white balance (AWB) and auto-focus (AF)
5317behavior is device dependent when AE is in OFF mode.<wbr/>
5318To have consistent behavior across different devices,<wbr/>
5319it is recommended to either set AWB and AF to OFF mode
5320or lock AWB and AF before setting AE to OFF.<wbr/>
5321See <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/>
5322<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>
5323for more details.<wbr/></p>
5324<p>LEGACY devices do not support the OFF mode and will
5325override attempts to use this value to ON.<wbr/></p></span>
5326                  </li>
5327                  <li>
5328                    <span class="entry_type_enum_name">ON</span>
5329                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
5330with no flash control.<wbr/></p>
5331<p>The application's values for
5332<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5333<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
5334<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
5335application has control over the various
5336android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
5337                  </li>
5338                  <li>
5339                    <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
5340                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
5341the camera's flash unit,<wbr/> firing it in low-light
5342conditions.<wbr/></p>
5343<p>The flash may be fired during a precapture sequence
5344(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
5345may be fired for captures for which the
5346<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
5347STILL_<wbr/>CAPTURE</p></span>
5348                  </li>
5349                  <li>
5350                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
5351                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
5352the camera's flash unit,<wbr/> always firing it for still
5353captures.<wbr/></p>
5354<p>The flash may be fired during a precapture sequence
5355(triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
5356will always be fired for captures for which the
5357<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
5358STILL_<wbr/>CAPTURE</p></span>
5359                  </li>
5360                  <li>
5361                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
5362                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
5363reduction.<wbr/></p>
5364<p>If deemed necessary by the camera device,<wbr/> a red eye
5365reduction flash will fire during the precapture
5366sequence.<wbr/></p></span>
5367                  </li>
5368                </ul>
5369
5370            </td> <!-- entry_type -->
5371
5372            <td class="entry_description">
5373              <p>The desired mode for the camera device's
5374auto-exposure routine.<wbr/></p>
5375            </td>
5376
5377            <td class="entry_units">
5378            </td>
5379
5380            <td class="entry_range">
5381              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
5382            </td>
5383
5384            <td class="entry_tags">
5385              <ul class="entry_tags">
5386                  <li><a href="#tag_BC">BC</a></li>
5387              </ul>
5388            </td>
5389
5390          </tr>
5391          <tr class="entries_header">
5392            <th class="th_details" colspan="5">Details</th>
5393          </tr>
5394          <tr class="entry_cont">
5395            <td class="entry_details" colspan="5">
5396              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
5397AUTO.<wbr/></p>
5398<p>When set to any of the ON modes,<wbr/> the camera device's
5399auto-exposure routine is enabled,<wbr/> overriding the
5400application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
5401and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5402<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
5403<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
5404is selected,<wbr/> the camera device's flash unit controls are
5405also overridden.<wbr/></p>
5406<p>The FLASH modes are only available if the camera device
5407has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
5408<p>If flash TORCH mode is desired,<wbr/> this field must be set to
5409ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
5410<p>When set to any of the ON modes,<wbr/> the values chosen by the
5411camera device auto-exposure routine for the overridden
5412fields for a given capture will be available in its
5413CaptureResult.<wbr/></p>
5414            </td>
5415          </tr>
5416
5417
5418          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5419           <!-- end of entry -->
5420
5421
5422          <tr class="entry" id="dynamic_android.control.aeRegions">
5423            <td class="entry_name
5424             " rowspan="5">
5425              android.<wbr/>control.<wbr/>ae<wbr/>Regions
5426            </td>
5427            <td class="entry_type">
5428                <span class="entry_type_name">int32</span>
5429                <span class="entry_type_container">x</span>
5430
5431                <span class="entry_type_array">
5432                  5 x area_count
5433                </span>
5434              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
5435
5436
5437
5438
5439
5440
5441            </td> <!-- entry_type -->
5442
5443            <td class="entry_description">
5444              <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
5445            </td>
5446
5447            <td class="entry_units">
5448              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
5449            </td>
5450
5451            <td class="entry_range">
5452              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
5453<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
5454            </td>
5455
5456            <td class="entry_tags">
5457              <ul class="entry_tags">
5458                  <li><a href="#tag_BC">BC</a></li>
5459              </ul>
5460            </td>
5461
5462          </tr>
5463          <tr class="entries_header">
5464            <th class="th_details" colspan="5">Details</th>
5465          </tr>
5466          <tr class="entry_cont">
5467            <td class="entry_details" colspan="5">
5468              <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
5469Otherwise will always be present.<wbr/></p>
5470<p>The maximum number of regions supported by the device is determined by the value
5471of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
5472<p>The coordinate system is based on the active pixel array,<wbr/>
5473with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
5474(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
5475<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
5476bottom-right pixel in the active pixel array.<wbr/></p>
5477<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
5478for every pixel in the area.<wbr/> This means that a large metering area
5479with the same weight as a smaller area will have more effect in
5480the metering result.<wbr/> Metering areas can partially overlap and the
5481camera device will add the weights in the overlap region.<wbr/></p>
5482<p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
5483region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
5484weight is ignored.<wbr/></p>
5485<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
5486camera device.<wbr/></p>
5487<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
5488capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
5489region and output only the intersection rectangle as the metering region in the result
5490metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
5491not reported in the result metadata.<wbr/></p>
5492            </td>
5493          </tr>
5494
5495          <tr class="entries_header">
5496            <th class="th_details" colspan="5">HAL Implementation Details</th>
5497          </tr>
5498          <tr class="entry_cont">
5499            <td class="entry_details" colspan="5">
5500              <p>The HAL level representation of MeteringRectangle[] is a
5501int[5 * area_<wbr/>count].<wbr/>
5502Every five elements represent a metering region of
5503(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
5504The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
5505exclusive on xmax and ymax.<wbr/></p>
5506            </td>
5507          </tr>
5508
5509          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5510           <!-- end of entry -->
5511
5512
5513          <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
5514            <td class="entry_name
5515             " rowspan="3">
5516              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
5517            </td>
5518            <td class="entry_type">
5519                <span class="entry_type_name">int32</span>
5520                <span class="entry_type_container">x</span>
5521
5522                <span class="entry_type_array">
5523                  2
5524                </span>
5525              <span class="entry_type_visibility"> [public as rangeInt]</span>
5526
5527
5528              <span class="entry_type_hwlevel">[legacy] </span>
5529
5530
5531
5532
5533            </td> <!-- entry_type -->
5534
5535            <td class="entry_description">
5536              <p>Range over which the auto-exposure routine can
5537adjust the capture frame rate to maintain good
5538exposure.<wbr/></p>
5539            </td>
5540
5541            <td class="entry_units">
5542              Frames per second (FPS)
5543            </td>
5544
5545            <td class="entry_range">
5546              <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>
5547            </td>
5548
5549            <td class="entry_tags">
5550              <ul class="entry_tags">
5551                  <li><a href="#tag_BC">BC</a></li>
5552              </ul>
5553            </td>
5554
5555          </tr>
5556          <tr class="entries_header">
5557            <th class="th_details" colspan="5">Details</th>
5558          </tr>
5559          <tr class="entry_cont">
5560            <td class="entry_details" colspan="5">
5561              <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
5562manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
5563<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
5564            </td>
5565          </tr>
5566
5567
5568          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5569           <!-- end of entry -->
5570
5571
5572          <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
5573            <td class="entry_name
5574             " rowspan="3">
5575              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
5576            </td>
5577            <td class="entry_type">
5578                <span class="entry_type_name entry_type_name_enum">byte</span>
5579
5580              <span class="entry_type_visibility"> [public]</span>
5581
5582
5583              <span class="entry_type_hwlevel">[limited] </span>
5584
5585
5586
5587                <ul class="entry_type_enum">
5588                  <li>
5589                    <span class="entry_type_enum_name">IDLE</span>
5590                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
5591                  </li>
5592                  <li>
5593                    <span class="entry_type_enum_name">START</span>
5594                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
5595by the camera device.<wbr/></p>
5596<p>The exact effect of the precapture trigger depends on
5597the current AE mode and state.<wbr/></p></span>
5598                  </li>
5599                </ul>
5600
5601            </td> <!-- entry_type -->
5602
5603            <td class="entry_description">
5604              <p>Whether the camera device will trigger a precapture
5605metering sequence when it processes this request.<wbr/></p>
5606            </td>
5607
5608            <td class="entry_units">
5609            </td>
5610
5611            <td class="entry_range">
5612            </td>
5613
5614            <td class="entry_tags">
5615              <ul class="entry_tags">
5616                  <li><a href="#tag_BC">BC</a></li>
5617              </ul>
5618            </td>
5619
5620          </tr>
5621          <tr class="entries_header">
5622            <th class="th_details" colspan="5">Details</th>
5623          </tr>
5624          <tr class="entry_cont">
5625            <td class="entry_details" colspan="5">
5626              <p>This entry is normally set to IDLE,<wbr/> or is not
5627included at all in the request settings.<wbr/> When included and
5628set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
5629precapture metering sequence.<wbr/></p>
5630<p>The precapture sequence should be triggered before starting a
5631high-quality still capture for final metering decisions to
5632be made,<wbr/> and for firing pre-capture flash pulses to estimate
5633scene brightness and required final capture flash power,<wbr/> when
5634the flash is enabled.<wbr/></p>
5635<p>Normally,<wbr/> this entry should be set to START for only a
5636single request,<wbr/> and the application should wait until the
5637sequence completes before starting a new one.<wbr/></p>
5638<p>When a precapture metering sequence is finished,<wbr/> the camera device
5639may lock the auto-exposure routine internally to be able to accurately expose the
5640subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
5641For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
5642submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
5643submit 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
5644with <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
5645still capture request after the precapture sequence completes.<wbr/></p>
5646<p>The exact effect of auto-exposure (AE) precapture trigger
5647depends on the current AE mode and state; see
5648<a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
5649details.<wbr/></p>
5650<p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
5651capturing a high-resolution JPEG image will automatically trigger a
5652precapture sequence before the high-resolution capture,<wbr/> including
5653potentially firing a pre-capture flash.<wbr/></p>
5654            </td>
5655          </tr>
5656
5657
5658          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5659           <!-- end of entry -->
5660
5661
5662          <tr class="entry" id="dynamic_android.control.aeState">
5663            <td class="entry_name
5664             " rowspan="3">
5665              android.<wbr/>control.<wbr/>ae<wbr/>State
5666            </td>
5667            <td class="entry_type">
5668                <span class="entry_type_name entry_type_name_enum">byte</span>
5669
5670              <span class="entry_type_visibility"> [public]</span>
5671
5672
5673              <span class="entry_type_hwlevel">[limited] </span>
5674
5675
5676
5677                <ul class="entry_type_enum">
5678                  <li>
5679                    <span class="entry_type_enum_name">INACTIVE</span>
5680                    <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
5681<p>When a camera device is opened,<wbr/> it starts in
5682this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
5683this state in capture result.<wbr/></p></span>
5684                  </li>
5685                  <li>
5686                    <span class="entry_type_enum_name">SEARCHING</span>
5687                    <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
5688for the current scene.<wbr/></p>
5689<p>This is a transient state,<wbr/> the camera device may skip
5690reporting this state in capture result.<wbr/></p></span>
5691                  </li>
5692                  <li>
5693                    <span class="entry_type_enum_name">CONVERGED</span>
5694                    <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
5695current scene.<wbr/></p></span>
5696                  </li>
5697                  <li>
5698                    <span class="entry_type_enum_name">LOCKED</span>
5699                    <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
5700                  </li>
5701                  <li>
5702                    <span class="entry_type_enum_name">FLASH_REQUIRED</span>
5703                    <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
5704needs to be fired for good quality still
5705capture.<wbr/></p></span>
5706                  </li>
5707                  <li>
5708                    <span class="entry_type_enum_name">PRECAPTURE</span>
5709                    <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
5710and is currently executing it.<wbr/></p>
5711<p>Precapture can be triggered through setting
5712<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/></p>
5713<p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
5714or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
5715state,<wbr/> the camera device may skip reporting this state in
5716capture result.<wbr/></p></span>
5717                  </li>
5718                </ul>
5719
5720            </td> <!-- entry_type -->
5721
5722            <td class="entry_description">
5723              <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
5724            </td>
5725
5726            <td class="entry_units">
5727            </td>
5728
5729            <td class="entry_range">
5730            </td>
5731
5732            <td class="entry_tags">
5733            </td>
5734
5735          </tr>
5736          <tr class="entries_header">
5737            <th class="th_details" colspan="5">Details</th>
5738          </tr>
5739          <tr class="entry_cont">
5740            <td class="entry_details" colspan="5">
5741              <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
5742resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
5743or <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
5744the algorithm states to INACTIVE.<wbr/></p>
5745<p>The camera device can do several state transitions between two results,<wbr/> if it is
5746allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
5747seen in a result.<wbr/></p>
5748<p>The state in the result is the state for this image (in sync with this image): if
5749AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
5750be good to use.<wbr/></p>
5751<p>Below are state transition tables for different AE modes.<wbr/></p>
5752<table>
5753<thead>
5754<tr>
5755<th align="center">State</th>
5756<th align="center">Transition Cause</th>
5757<th align="center">New State</th>
5758<th align="center">Notes</th>
5759</tr>
5760</thead>
5761<tbody>
5762<tr>
5763<td align="center">INACTIVE</td>
5764<td align="center"></td>
5765<td align="center">INACTIVE</td>
5766<td align="center">Camera device auto exposure algorithm is disabled</td>
5767</tr>
5768</tbody>
5769</table>
5770<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p>
5771<table>
5772<thead>
5773<tr>
5774<th align="center">State</th>
5775<th align="center">Transition Cause</th>
5776<th align="center">New State</th>
5777<th align="center">Notes</th>
5778</tr>
5779</thead>
5780<tbody>
5781<tr>
5782<td align="center">INACTIVE</td>
5783<td align="center">Camera device initiates AE scan</td>
5784<td align="center">SEARCHING</td>
5785<td align="center">Values changing</td>
5786</tr>
5787<tr>
5788<td align="center">INACTIVE</td>
5789<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
5790<td align="center">LOCKED</td>
5791<td align="center">Values locked</td>
5792</tr>
5793<tr>
5794<td align="center">SEARCHING</td>
5795<td align="center">Camera device finishes AE scan</td>
5796<td align="center">CONVERGED</td>
5797<td align="center">Good values,<wbr/> not changing</td>
5798</tr>
5799<tr>
5800<td align="center">SEARCHING</td>
5801<td align="center">Camera device finishes AE scan</td>
5802<td align="center">FLASH_<wbr/>REQUIRED</td>
5803<td align="center">Converged but too dark w/<wbr/>o flash</td>
5804</tr>
5805<tr>
5806<td align="center">SEARCHING</td>
5807<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
5808<td align="center">LOCKED</td>
5809<td align="center">Values locked</td>
5810</tr>
5811<tr>
5812<td align="center">CONVERGED</td>
5813<td align="center">Camera device initiates AE scan</td>
5814<td align="center">SEARCHING</td>
5815<td align="center">Values changing</td>
5816</tr>
5817<tr>
5818<td align="center">CONVERGED</td>
5819<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
5820<td align="center">LOCKED</td>
5821<td align="center">Values locked</td>
5822</tr>
5823<tr>
5824<td align="center">FLASH_<wbr/>REQUIRED</td>
5825<td align="center">Camera device initiates AE scan</td>
5826<td align="center">SEARCHING</td>
5827<td align="center">Values changing</td>
5828</tr>
5829<tr>
5830<td align="center">FLASH_<wbr/>REQUIRED</td>
5831<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
5832<td align="center">LOCKED</td>
5833<td align="center">Values locked</td>
5834</tr>
5835<tr>
5836<td align="center">LOCKED</td>
5837<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
5838<td align="center">SEARCHING</td>
5839<td align="center">Values not good after unlock</td>
5840</tr>
5841<tr>
5842<td align="center">LOCKED</td>
5843<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
5844<td align="center">CONVERGED</td>
5845<td align="center">Values good after unlock</td>
5846</tr>
5847<tr>
5848<td align="center">LOCKED</td>
5849<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
5850<td align="center">FLASH_<wbr/>REQUIRED</td>
5851<td align="center">Exposure good,<wbr/> but too dark</td>
5852</tr>
5853<tr>
5854<td align="center">PRECAPTURE</td>
5855<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
5856<td align="center">CONVERGED</td>
5857<td align="center">Ready for high-quality capture</td>
5858</tr>
5859<tr>
5860<td align="center">PRECAPTURE</td>
5861<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
5862<td align="center">LOCKED</td>
5863<td align="center">Ready for high-quality capture</td>
5864</tr>
5865<tr>
5866<td align="center">Any state</td>
5867<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
5868<td align="center">PRECAPTURE</td>
5869<td align="center">Start AE precapture metering sequence</td>
5870</tr>
5871</tbody>
5872</table>
5873<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
5874without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
5875can be skipped in that manner is called a transient state.<wbr/></p>
5876<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
5877listed in above table,<wbr/> it is also legal for the camera device to skip one or more
5878transient states between two results.<wbr/> See below table for examples:</p>
5879<table>
5880<thead>
5881<tr>
5882<th align="center">State</th>
5883<th align="center">Transition Cause</th>
5884<th align="center">New State</th>
5885<th align="center">Notes</th>
5886</tr>
5887</thead>
5888<tbody>
5889<tr>
5890<td align="center">INACTIVE</td>
5891<td align="center">Camera device finished AE scan</td>
5892<td align="center">CONVERGED</td>
5893<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
5894</tr>
5895<tr>
5896<td align="center">Any state</td>
5897<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>
5898<td align="center">FLASH_<wbr/>REQUIRED</td>
5899<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>
5900</tr>
5901<tr>
5902<td align="center">Any state</td>
5903<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>
5904<td align="center">CONVERGED</td>
5905<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
5906</tr>
5907<tr>
5908<td align="center">CONVERGED</td>
5909<td align="center">Camera device finished AE scan</td>
5910<td align="center">FLASH_<wbr/>REQUIRED</td>
5911<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>
5912</tr>
5913<tr>
5914<td align="center">FLASH_<wbr/>REQUIRED</td>
5915<td align="center">Camera device finished AE scan</td>
5916<td align="center">CONVERGED</td>
5917<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
5918</tr>
5919</tbody>
5920</table>
5921            </td>
5922          </tr>
5923
5924
5925          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5926           <!-- end of entry -->
5927
5928
5929          <tr class="entry" id="dynamic_android.control.afMode">
5930            <td class="entry_name
5931             " rowspan="5">
5932              android.<wbr/>control.<wbr/>af<wbr/>Mode
5933            </td>
5934            <td class="entry_type">
5935                <span class="entry_type_name entry_type_name_enum">byte</span>
5936
5937              <span class="entry_type_visibility"> [public]</span>
5938
5939
5940              <span class="entry_type_hwlevel">[legacy] </span>
5941
5942
5943
5944                <ul class="entry_type_enum">
5945                  <li>
5946                    <span class="entry_type_enum_name">OFF</span>
5947                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
5948<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
5949application.<wbr/></p></span>
5950                  </li>
5951                  <li>
5952                    <span class="entry_type_enum_name">AUTO</span>
5953                    <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
5954<p>In this mode,<wbr/> the lens does not move unless
5955the autofocus trigger action is called.<wbr/> When that trigger
5956is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
5957the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
5958<p>Always supported if lens is not fixed focus.<wbr/></p>
5959<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
5960is fixed-focus.<wbr/></p>
5961<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
5962and sets the AF state to INACTIVE.<wbr/></p></span>
5963                  </li>
5964                  <li>
5965                    <span class="entry_type_enum_name">MACRO</span>
5966                    <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
5967<p>In this mode,<wbr/> the lens does not move unless the
5968autofocus trigger action is called.<wbr/> When that trigger is
5969activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
5970the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
5971mode is optimized for focusing on objects very close to
5972the camera.<wbr/></p>
5973<p>When that trigger is activated,<wbr/> AF will transition to
5974ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
5975NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
5976position to default,<wbr/> and sets the AF state to
5977INACTIVE.<wbr/></p></span>
5978                  </li>
5979                  <li>
5980                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
5981                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
5982position continually to attempt to provide a
5983constantly-in-focus image stream.<wbr/></p>
5984<p>The focusing behavior should be suitable for good quality
5985video recording; typically this means slower focus
5986movement and no overshoots.<wbr/> When the AF trigger is not
5987involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
5988and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
5989states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
5990the algorithm should immediately transition into
5991AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
5992lens position until a cancel AF trigger is received.<wbr/></p>
5993<p>Once cancel is received,<wbr/> the algorithm should transition
5994back to INACTIVE and resume passive scan.<wbr/> Note that this
5995behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
5996ongoing PASSIVE_<wbr/>SCAN must immediately be
5997canceled.<wbr/></p></span>
5998                  </li>
5999                  <li>
6000                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
6001                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6002position continually to attempt to provide a
6003constantly-in-focus image stream.<wbr/></p>
6004<p>The focusing behavior should be suitable for still image
6005capture; typically this means focusing as fast as
6006possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
6007algorithm should start in INACTIVE state,<wbr/> and then
6008transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
6009appropriate as it attempts to maintain focus.<wbr/> When the AF
6010trigger is activated,<wbr/> the algorithm should finish its
6011PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
6012AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6013lens position until a cancel AF trigger is received.<wbr/></p>
6014<p>When the AF cancel trigger is activated,<wbr/> the algorithm
6015should transition back to INACTIVE and then act as if it
6016has just been started.<wbr/></p></span>
6017                  </li>
6018                  <li>
6019                    <span class="entry_type_enum_name">EDOF</span>
6020                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
6021<p>The camera device will produce images with an extended
6022depth of field automatically; no special focusing
6023operations need to be done before taking a picture.<wbr/></p>
6024<p>AF triggers are ignored,<wbr/> and the AF state will always be
6025INACTIVE.<wbr/></p></span>
6026                  </li>
6027                </ul>
6028
6029            </td> <!-- entry_type -->
6030
6031            <td class="entry_description">
6032              <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
6033mode it is set to.<wbr/></p>
6034            </td>
6035
6036            <td class="entry_units">
6037            </td>
6038
6039            <td class="entry_range">
6040              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
6041            </td>
6042
6043            <td class="entry_tags">
6044              <ul class="entry_tags">
6045                  <li><a href="#tag_BC">BC</a></li>
6046              </ul>
6047            </td>
6048
6049          </tr>
6050          <tr class="entries_header">
6051            <th class="th_details" colspan="5">Details</th>
6052          </tr>
6053          <tr class="entry_cont">
6054            <td class="entry_details" colspan="5">
6055              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
6056(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
6057when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
6058dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
6059setting <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>
6060<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
6061the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
6062in result metadata.<wbr/></p>
6063            </td>
6064          </tr>
6065
6066          <tr class="entries_header">
6067            <th class="th_details" colspan="5">HAL Implementation Details</th>
6068          </tr>
6069          <tr class="entry_cont">
6070            <td class="entry_details" colspan="5">
6071              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
6072request (<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
6073up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
6074<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
6075locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
6076after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
6077the same focal plane remains in focus.<wbr/></p>
6078<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
6079scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
6080(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
6081same lock behavior as above.<wbr/></p>
6082<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
6083focus 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/>
6084However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
6085manual control.<wbr/></p>
6086<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
6087camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
6088remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
6089by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
6090that will arise on camera modules with open-loop VCMs.<wbr/></p>
6091            </td>
6092          </tr>
6093
6094          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6095           <!-- end of entry -->
6096
6097
6098          <tr class="entry" id="dynamic_android.control.afRegions">
6099            <td class="entry_name
6100             " rowspan="5">
6101              android.<wbr/>control.<wbr/>af<wbr/>Regions
6102            </td>
6103            <td class="entry_type">
6104                <span class="entry_type_name">int32</span>
6105                <span class="entry_type_container">x</span>
6106
6107                <span class="entry_type_array">
6108                  5 x area_count
6109                </span>
6110              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6111
6112
6113
6114
6115
6116
6117            </td> <!-- entry_type -->
6118
6119            <td class="entry_description">
6120              <p>List of metering areas to use for auto-focus.<wbr/></p>
6121            </td>
6122
6123            <td class="entry_units">
6124              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6125            </td>
6126
6127            <td class="entry_range">
6128              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6129<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6130            </td>
6131
6132            <td class="entry_tags">
6133              <ul class="entry_tags">
6134                  <li><a href="#tag_BC">BC</a></li>
6135              </ul>
6136            </td>
6137
6138          </tr>
6139          <tr class="entries_header">
6140            <th class="th_details" colspan="5">Details</th>
6141          </tr>
6142          <tr class="entry_cont">
6143            <td class="entry_details" colspan="5">
6144              <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
6145Otherwise will always be present.<wbr/></p>
6146<p>The maximum number of focus areas supported by the device is determined by the value
6147of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
6148<p>The coordinate system is based on the active pixel array,<wbr/>
6149with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6150(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6151<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6152bottom-right pixel in the active pixel array.<wbr/></p>
6153<p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6154for every pixel in the area.<wbr/> This means that a large metering area
6155with the same weight as a smaller area will have more effect in
6156the metering result.<wbr/> Metering areas can partially overlap and the
6157camera device will add the weights in the overlap region.<wbr/></p>
6158<p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
6159is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
6160ignored.<wbr/></p>
6161<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6162camera device.<wbr/></p>
6163<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
6164capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6165region and output only the intersection rectangle as the metering region in the result
6166metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
6167not reported in the result metadata.<wbr/></p>
6168            </td>
6169          </tr>
6170
6171          <tr class="entries_header">
6172            <th class="th_details" colspan="5">HAL Implementation Details</th>
6173          </tr>
6174          <tr class="entry_cont">
6175            <td class="entry_details" colspan="5">
6176              <p>The HAL level representation of MeteringRectangle[] is a
6177int[5 * area_<wbr/>count].<wbr/>
6178Every five elements represent a metering region of
6179(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6180The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6181exclusive on xmax and ymax.<wbr/></p>
6182            </td>
6183          </tr>
6184
6185          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6186           <!-- end of entry -->
6187
6188
6189          <tr class="entry" id="dynamic_android.control.afTrigger">
6190            <td class="entry_name
6191             " rowspan="3">
6192              android.<wbr/>control.<wbr/>af<wbr/>Trigger
6193            </td>
6194            <td class="entry_type">
6195                <span class="entry_type_name entry_type_name_enum">byte</span>
6196
6197              <span class="entry_type_visibility"> [public]</span>
6198
6199
6200              <span class="entry_type_hwlevel">[legacy] </span>
6201
6202
6203
6204                <ul class="entry_type_enum">
6205                  <li>
6206                    <span class="entry_type_enum_name">IDLE</span>
6207                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6208                  </li>
6209                  <li>
6210                    <span class="entry_type_enum_name">START</span>
6211                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
6212                  </li>
6213                  <li>
6214                    <span class="entry_type_enum_name">CANCEL</span>
6215                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
6216state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
6217                  </li>
6218                </ul>
6219
6220            </td> <!-- entry_type -->
6221
6222            <td class="entry_description">
6223              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
6224            </td>
6225
6226            <td class="entry_units">
6227            </td>
6228
6229            <td class="entry_range">
6230            </td>
6231
6232            <td class="entry_tags">
6233              <ul class="entry_tags">
6234                  <li><a href="#tag_BC">BC</a></li>
6235              </ul>
6236            </td>
6237
6238          </tr>
6239          <tr class="entries_header">
6240            <th class="th_details" colspan="5">Details</th>
6241          </tr>
6242          <tr class="entry_cont">
6243            <td class="entry_details" colspan="5">
6244              <p>This entry is normally set to IDLE,<wbr/> or is not
6245included at all in the request settings.<wbr/></p>
6246<p>When included and set to START,<wbr/> the camera device will trigger the
6247autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
6248<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
6249and return to its initial AF state.<wbr/></p>
6250<p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
6251single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
6252START for multiple captures in a row means restarting the AF operation over
6253and over again.<wbr/></p>
6254<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>
6255            </td>
6256          </tr>
6257
6258
6259          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6260           <!-- end of entry -->
6261
6262
6263          <tr class="entry" id="dynamic_android.control.afState">
6264            <td class="entry_name
6265             " rowspan="3">
6266              android.<wbr/>control.<wbr/>af<wbr/>State
6267            </td>
6268            <td class="entry_type">
6269                <span class="entry_type_name entry_type_name_enum">byte</span>
6270
6271              <span class="entry_type_visibility"> [public]</span>
6272
6273
6274              <span class="entry_type_hwlevel">[legacy] </span>
6275
6276
6277
6278                <ul class="entry_type_enum">
6279                  <li>
6280                    <span class="entry_type_enum_name">INACTIVE</span>
6281                    <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
6282to scan.<wbr/></p>
6283<p>When a camera device is opened,<wbr/> it starts in this
6284state.<wbr/> This is a transient state,<wbr/> the camera device may
6285skip reporting this state in capture
6286result.<wbr/></p></span>
6287                  </li>
6288                  <li>
6289                    <span class="entry_type_enum_name">PASSIVE_SCAN</span>
6290                    <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
6291camera device in a continuous autofocus mode.<wbr/></p>
6292<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
6293state,<wbr/> the camera device may skip reporting this state in
6294capture result.<wbr/></p></span>
6295                  </li>
6296                  <li>
6297                    <span class="entry_type_enum_name">PASSIVE_FOCUSED</span>
6298                    <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
6299restart scanning at any time.<wbr/></p>
6300<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
6301state,<wbr/> the camera device may skip reporting this state in
6302capture result.<wbr/></p></span>
6303                  </li>
6304                  <li>
6305                    <span class="entry_type_enum_name">ACTIVE_SCAN</span>
6306                    <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
6307triggered by AF trigger.<wbr/></p>
6308<p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
6309state,<wbr/> the camera device may skip reporting this state in
6310capture result.<wbr/></p></span>
6311                  </li>
6312                  <li>
6313                    <span class="entry_type_enum_name">FOCUSED_LOCKED</span>
6314                    <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
6315focus.<wbr/></p>
6316<p>This state is reached only after an explicit START AF trigger has been
6317sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
6318<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
6319a 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>
6320                  </li>
6321                  <li>
6322                    <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span>
6323                    <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
6324focus.<wbr/></p>
6325<p>This state is reached only after an explicit START AF trigger has been
6326sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
6327<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
6328a 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>
6329                  </li>
6330                  <li>
6331                    <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span>
6332                    <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
6333and may restart scanning at any time.<wbr/></p>
6334<p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
6335device may skip reporting this state in capture result.<wbr/></p>
6336<p>LEGACY camera devices do not support this state.<wbr/> When a passive
6337scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
6338                  </li>
6339                </ul>
6340
6341            </td> <!-- entry_type -->
6342
6343            <td class="entry_description">
6344              <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
6345            </td>
6346
6347            <td class="entry_units">
6348            </td>
6349
6350            <td class="entry_range">
6351            </td>
6352
6353            <td class="entry_tags">
6354            </td>
6355
6356          </tr>
6357          <tr class="entries_header">
6358            <th class="th_details" colspan="5">Details</th>
6359          </tr>
6360          <tr class="entry_cont">
6361            <td class="entry_details" colspan="5">
6362              <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
6363resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6364or <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
6365the algorithm states to INACTIVE.<wbr/></p>
6366<p>The camera device can do several state transitions between two results,<wbr/> if it is
6367allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6368seen in a result.<wbr/></p>
6369<p>The state in the result is the state for this image (in sync with this image): if
6370AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
6371be sharp.<wbr/></p>
6372<p>Below are state transition tables for different AF modes.<wbr/></p>
6373<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>
6374<table>
6375<thead>
6376<tr>
6377<th align="center">State</th>
6378<th align="center">Transition Cause</th>
6379<th align="center">New State</th>
6380<th align="center">Notes</th>
6381</tr>
6382</thead>
6383<tbody>
6384<tr>
6385<td align="center">INACTIVE</td>
6386<td align="center"></td>
6387<td align="center">INACTIVE</td>
6388<td align="center">Never changes</td>
6389</tr>
6390</tbody>
6391</table>
6392<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>
6393<table>
6394<thead>
6395<tr>
6396<th align="center">State</th>
6397<th align="center">Transition Cause</th>
6398<th align="center">New State</th>
6399<th align="center">Notes</th>
6400</tr>
6401</thead>
6402<tbody>
6403<tr>
6404<td align="center">INACTIVE</td>
6405<td align="center">AF_<wbr/>TRIGGER</td>
6406<td align="center">ACTIVE_<wbr/>SCAN</td>
6407<td align="center">Start AF sweep,<wbr/> Lens now moving</td>
6408</tr>
6409<tr>
6410<td align="center">ACTIVE_<wbr/>SCAN</td>
6411<td align="center">AF sweep done</td>
6412<td align="center">FOCUSED_<wbr/>LOCKED</td>
6413<td align="center">Focused,<wbr/> Lens now locked</td>
6414</tr>
6415<tr>
6416<td align="center">ACTIVE_<wbr/>SCAN</td>
6417<td align="center">AF sweep done</td>
6418<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6419<td align="center">Not focused,<wbr/> Lens now locked</td>
6420</tr>
6421<tr>
6422<td align="center">ACTIVE_<wbr/>SCAN</td>
6423<td align="center">AF_<wbr/>CANCEL</td>
6424<td align="center">INACTIVE</td>
6425<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
6426</tr>
6427<tr>
6428<td align="center">FOCUSED_<wbr/>LOCKED</td>
6429<td align="center">AF_<wbr/>CANCEL</td>
6430<td align="center">INACTIVE</td>
6431<td align="center">Cancel/<wbr/>reset AF</td>
6432</tr>
6433<tr>
6434<td align="center">FOCUSED_<wbr/>LOCKED</td>
6435<td align="center">AF_<wbr/>TRIGGER</td>
6436<td align="center">ACTIVE_<wbr/>SCAN</td>
6437<td align="center">Start new sweep,<wbr/> Lens now moving</td>
6438</tr>
6439<tr>
6440<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6441<td align="center">AF_<wbr/>CANCEL</td>
6442<td align="center">INACTIVE</td>
6443<td align="center">Cancel/<wbr/>reset AF</td>
6444</tr>
6445<tr>
6446<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6447<td align="center">AF_<wbr/>TRIGGER</td>
6448<td align="center">ACTIVE_<wbr/>SCAN</td>
6449<td align="center">Start new sweep,<wbr/> Lens now moving</td>
6450</tr>
6451<tr>
6452<td align="center">Any state</td>
6453<td align="center">Mode change</td>
6454<td align="center">INACTIVE</td>
6455<td align="center"></td>
6456</tr>
6457</tbody>
6458</table>
6459<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6460without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6461can be skipped in that manner is called a transient state.<wbr/></p>
6462<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
6463state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
6464one or more transient states between two results.<wbr/> See below table for examples:</p>
6465<table>
6466<thead>
6467<tr>
6468<th align="center">State</th>
6469<th align="center">Transition Cause</th>
6470<th align="center">New State</th>
6471<th align="center">Notes</th>
6472</tr>
6473</thead>
6474<tbody>
6475<tr>
6476<td align="center">INACTIVE</td>
6477<td align="center">AF_<wbr/>TRIGGER</td>
6478<td align="center">FOCUSED_<wbr/>LOCKED</td>
6479<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
6480</tr>
6481<tr>
6482<td align="center">INACTIVE</td>
6483<td align="center">AF_<wbr/>TRIGGER</td>
6484<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6485<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
6486</tr>
6487<tr>
6488<td align="center">FOCUSED_<wbr/>LOCKED</td>
6489<td align="center">AF_<wbr/>TRIGGER</td>
6490<td align="center">FOCUSED_<wbr/>LOCKED</td>
6491<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
6492</tr>
6493<tr>
6494<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6495<td align="center">AF_<wbr/>TRIGGER</td>
6496<td align="center">FOCUSED_<wbr/>LOCKED</td>
6497<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
6498</tr>
6499</tbody>
6500</table>
6501<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>
6502<table>
6503<thead>
6504<tr>
6505<th align="center">State</th>
6506<th align="center">Transition Cause</th>
6507<th align="center">New State</th>
6508<th align="center">Notes</th>
6509</tr>
6510</thead>
6511<tbody>
6512<tr>
6513<td align="center">INACTIVE</td>
6514<td align="center">Camera device initiates new scan</td>
6515<td align="center">PASSIVE_<wbr/>SCAN</td>
6516<td align="center">Start AF scan,<wbr/> Lens now moving</td>
6517</tr>
6518<tr>
6519<td align="center">INACTIVE</td>
6520<td align="center">AF_<wbr/>TRIGGER</td>
6521<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6522<td align="center">AF state query,<wbr/> Lens now locked</td>
6523</tr>
6524<tr>
6525<td align="center">PASSIVE_<wbr/>SCAN</td>
6526<td align="center">Camera device completes current scan</td>
6527<td align="center">PASSIVE_<wbr/>FOCUSED</td>
6528<td align="center">End AF scan,<wbr/> Lens now locked</td>
6529</tr>
6530<tr>
6531<td align="center">PASSIVE_<wbr/>SCAN</td>
6532<td align="center">Camera device fails current scan</td>
6533<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
6534<td align="center">End AF scan,<wbr/> Lens now locked</td>
6535</tr>
6536<tr>
6537<td align="center">PASSIVE_<wbr/>SCAN</td>
6538<td align="center">AF_<wbr/>TRIGGER</td>
6539<td align="center">FOCUSED_<wbr/>LOCKED</td>
6540<td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
6541</tr>
6542<tr>
6543<td align="center">PASSIVE_<wbr/>SCAN</td>
6544<td align="center">AF_<wbr/>TRIGGER</td>
6545<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6546<td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
6547</tr>
6548<tr>
6549<td align="center">PASSIVE_<wbr/>SCAN</td>
6550<td align="center">AF_<wbr/>CANCEL</td>
6551<td align="center">INACTIVE</td>
6552<td align="center">Reset lens position,<wbr/> Lens now locked</td>
6553</tr>
6554<tr>
6555<td align="center">PASSIVE_<wbr/>FOCUSED</td>
6556<td align="center">Camera device initiates new scan</td>
6557<td align="center">PASSIVE_<wbr/>SCAN</td>
6558<td align="center">Start AF scan,<wbr/> Lens now moving</td>
6559</tr>
6560<tr>
6561<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
6562<td align="center">Camera device initiates new scan</td>
6563<td align="center">PASSIVE_<wbr/>SCAN</td>
6564<td align="center">Start AF scan,<wbr/> Lens now moving</td>
6565</tr>
6566<tr>
6567<td align="center">PASSIVE_<wbr/>FOCUSED</td>
6568<td align="center">AF_<wbr/>TRIGGER</td>
6569<td align="center">FOCUSED_<wbr/>LOCKED</td>
6570<td align="center">Immediate transition,<wbr/> lens now locked</td>
6571</tr>
6572<tr>
6573<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
6574<td align="center">AF_<wbr/>TRIGGER</td>
6575<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6576<td align="center">Immediate transition,<wbr/> lens now locked</td>
6577</tr>
6578<tr>
6579<td align="center">FOCUSED_<wbr/>LOCKED</td>
6580<td align="center">AF_<wbr/>TRIGGER</td>
6581<td align="center">FOCUSED_<wbr/>LOCKED</td>
6582<td align="center">No effect</td>
6583</tr>
6584<tr>
6585<td align="center">FOCUSED_<wbr/>LOCKED</td>
6586<td align="center">AF_<wbr/>CANCEL</td>
6587<td align="center">INACTIVE</td>
6588<td align="center">Restart AF scan</td>
6589</tr>
6590<tr>
6591<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6592<td align="center">AF_<wbr/>TRIGGER</td>
6593<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6594<td align="center">No effect</td>
6595</tr>
6596<tr>
6597<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6598<td align="center">AF_<wbr/>CANCEL</td>
6599<td align="center">INACTIVE</td>
6600<td align="center">Restart AF scan</td>
6601</tr>
6602</tbody>
6603</table>
6604<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>
6605<table>
6606<thead>
6607<tr>
6608<th align="center">State</th>
6609<th align="center">Transition Cause</th>
6610<th align="center">New State</th>
6611<th align="center">Notes</th>
6612</tr>
6613</thead>
6614<tbody>
6615<tr>
6616<td align="center">INACTIVE</td>
6617<td align="center">Camera device initiates new scan</td>
6618<td align="center">PASSIVE_<wbr/>SCAN</td>
6619<td align="center">Start AF scan,<wbr/> Lens now moving</td>
6620</tr>
6621<tr>
6622<td align="center">INACTIVE</td>
6623<td align="center">AF_<wbr/>TRIGGER</td>
6624<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6625<td align="center">AF state query,<wbr/> Lens now locked</td>
6626</tr>
6627<tr>
6628<td align="center">PASSIVE_<wbr/>SCAN</td>
6629<td align="center">Camera device completes current scan</td>
6630<td align="center">PASSIVE_<wbr/>FOCUSED</td>
6631<td align="center">End AF scan,<wbr/> Lens now locked</td>
6632</tr>
6633<tr>
6634<td align="center">PASSIVE_<wbr/>SCAN</td>
6635<td align="center">Camera device fails current scan</td>
6636<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
6637<td align="center">End AF scan,<wbr/> Lens now locked</td>
6638</tr>
6639<tr>
6640<td align="center">PASSIVE_<wbr/>SCAN</td>
6641<td align="center">AF_<wbr/>TRIGGER</td>
6642<td align="center">FOCUSED_<wbr/>LOCKED</td>
6643<td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
6644</tr>
6645<tr>
6646<td align="center">PASSIVE_<wbr/>SCAN</td>
6647<td align="center">AF_<wbr/>TRIGGER</td>
6648<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6649<td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
6650</tr>
6651<tr>
6652<td align="center">PASSIVE_<wbr/>SCAN</td>
6653<td align="center">AF_<wbr/>CANCEL</td>
6654<td align="center">INACTIVE</td>
6655<td align="center">Reset lens position,<wbr/> Lens now locked</td>
6656</tr>
6657<tr>
6658<td align="center">PASSIVE_<wbr/>FOCUSED</td>
6659<td align="center">Camera device initiates new scan</td>
6660<td align="center">PASSIVE_<wbr/>SCAN</td>
6661<td align="center">Start AF scan,<wbr/> Lens now moving</td>
6662</tr>
6663<tr>
6664<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
6665<td align="center">Camera device initiates new scan</td>
6666<td align="center">PASSIVE_<wbr/>SCAN</td>
6667<td align="center">Start AF scan,<wbr/> Lens now moving</td>
6668</tr>
6669<tr>
6670<td align="center">PASSIVE_<wbr/>FOCUSED</td>
6671<td align="center">AF_<wbr/>TRIGGER</td>
6672<td align="center">FOCUSED_<wbr/>LOCKED</td>
6673<td align="center">Immediate trans.<wbr/> Lens now locked</td>
6674</tr>
6675<tr>
6676<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
6677<td align="center">AF_<wbr/>TRIGGER</td>
6678<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6679<td align="center">Immediate trans.<wbr/> Lens now locked</td>
6680</tr>
6681<tr>
6682<td align="center">FOCUSED_<wbr/>LOCKED</td>
6683<td align="center">AF_<wbr/>TRIGGER</td>
6684<td align="center">FOCUSED_<wbr/>LOCKED</td>
6685<td align="center">No effect</td>
6686</tr>
6687<tr>
6688<td align="center">FOCUSED_<wbr/>LOCKED</td>
6689<td align="center">AF_<wbr/>CANCEL</td>
6690<td align="center">INACTIVE</td>
6691<td align="center">Restart AF scan</td>
6692</tr>
6693<tr>
6694<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6695<td align="center">AF_<wbr/>TRIGGER</td>
6696<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6697<td align="center">No effect</td>
6698</tr>
6699<tr>
6700<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6701<td align="center">AF_<wbr/>CANCEL</td>
6702<td align="center">INACTIVE</td>
6703<td align="center">Restart AF scan</td>
6704</tr>
6705</tbody>
6706</table>
6707<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
6708(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
6709camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
6710will be evaluated in the context of the new mode in the request.<wbr/>
6711See below table for examples:</p>
6712<table>
6713<thead>
6714<tr>
6715<th align="center">State</th>
6716<th align="center">Transition Cause</th>
6717<th align="center">New State</th>
6718<th align="center">Notes</th>
6719</tr>
6720</thead>
6721<tbody>
6722<tr>
6723<td align="center">any state</td>
6724<td align="center">CAF--&gt;AUTO mode switch</td>
6725<td align="center">INACTIVE</td>
6726<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
6727</tr>
6728<tr>
6729<td align="center">any state</td>
6730<td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
6731<td align="center">trigger-reachable states from INACTIVE</td>
6732<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
6733</tr>
6734<tr>
6735<td align="center">any state</td>
6736<td align="center">AUTO--&gt;CAF mode switch</td>
6737<td align="center">passively reachable states from INACTIVE</td>
6738<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
6739</tr>
6740</tbody>
6741</table>
6742            </td>
6743          </tr>
6744
6745
6746          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6747           <!-- end of entry -->
6748
6749
6750          <tr class="entry" id="dynamic_android.control.afTriggerId">
6751            <td class="entry_name
6752                entry_name_deprecated
6753             " rowspan="3">
6754              android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
6755            </td>
6756            <td class="entry_type">
6757                <span class="entry_type_name">int32</span>
6758
6759              <span class="entry_type_visibility"> [system]</span>
6760
6761
6762
6763              <span class="entry_type_deprecated">[deprecated] </span>
6764
6765
6766
6767            </td> <!-- entry_type -->
6768
6769            <td class="entry_description">
6770              <p>The ID sent with the latest
6771CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
6772            </td>
6773
6774            <td class="entry_units">
6775            </td>
6776
6777            <td class="entry_range">
6778              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
6779            </td>
6780
6781            <td class="entry_tags">
6782            </td>
6783
6784          </tr>
6785          <tr class="entries_header">
6786            <th class="th_details" colspan="5">Details</th>
6787          </tr>
6788          <tr class="entry_cont">
6789            <td class="entry_details" colspan="5">
6790              <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
6791received yet by HAL.<wbr/> Always updated even if AF algorithm
6792ignores the trigger</p>
6793            </td>
6794          </tr>
6795
6796
6797          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6798           <!-- end of entry -->
6799
6800
6801          <tr class="entry" id="dynamic_android.control.awbLock">
6802            <td class="entry_name
6803             " rowspan="3">
6804              android.<wbr/>control.<wbr/>awb<wbr/>Lock
6805            </td>
6806            <td class="entry_type">
6807                <span class="entry_type_name entry_type_name_enum">byte</span>
6808
6809              <span class="entry_type_visibility"> [public as boolean]</span>
6810
6811
6812              <span class="entry_type_hwlevel">[legacy] </span>
6813
6814
6815
6816                <ul class="entry_type_enum">
6817                  <li>
6818                    <span class="entry_type_enum_name">OFF</span>
6819                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
6820algorithm is free to update its parameters if in AUTO
6821mode.<wbr/></p></span>
6822                  </li>
6823                  <li>
6824                    <span class="entry_type_enum_name">ON</span>
6825                    <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
6826algorithm will not update its parameters while the lock
6827is active.<wbr/></p></span>
6828                  </li>
6829                </ul>
6830
6831            </td> <!-- entry_type -->
6832
6833            <td class="entry_description">
6834              <p>Whether auto-white balance (AWB) is currently locked to its
6835latest calculated values.<wbr/></p>
6836            </td>
6837
6838            <td class="entry_units">
6839            </td>
6840
6841            <td class="entry_range">
6842            </td>
6843
6844            <td class="entry_tags">
6845              <ul class="entry_tags">
6846                  <li><a href="#tag_BC">BC</a></li>
6847              </ul>
6848            </td>
6849
6850          </tr>
6851          <tr class="entries_header">
6852            <th class="th_details" colspan="5">Details</th>
6853          </tr>
6854          <tr class="entry_cont">
6855            <td class="entry_details" colspan="5">
6856              <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
6857and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
6858<p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
6859get locked do not necessarily correspond to the settings that were present in the
6860latest capture result received from the camera device,<wbr/> since additional captures
6861and AWB updates may have occurred even before the result was sent out.<wbr/> If an
6862application is switching between automatic and manual control and wishes to eliminate
6863any flicker during the switch,<wbr/> the following procedure is recommended:</p>
6864<ol>
6865<li>Starting in auto-AWB mode:</li>
6866<li>Lock AWB</li>
6867<li>Wait for the first result to be output that has the AWB locked</li>
6868<li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
6869<li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
6870</ol>
6871<p>Note that AWB lock is only meaningful when
6872<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
6873AWB is already fixed to a specific setting.<wbr/></p>
6874<p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
6875            </td>
6876          </tr>
6877
6878
6879          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6880           <!-- end of entry -->
6881
6882
6883          <tr class="entry" id="dynamic_android.control.awbMode">
6884            <td class="entry_name
6885             " rowspan="3">
6886              android.<wbr/>control.<wbr/>awb<wbr/>Mode
6887            </td>
6888            <td class="entry_type">
6889                <span class="entry_type_name entry_type_name_enum">byte</span>
6890
6891              <span class="entry_type_visibility"> [public]</span>
6892
6893
6894              <span class="entry_type_hwlevel">[legacy] </span>
6895
6896
6897
6898                <ul class="entry_type_enum">
6899                  <li>
6900                    <span class="entry_type_enum_name">OFF</span>
6901                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
6902<p>The application-selected color transform matrix
6903(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
6904(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
6905device for manual white balance control.<wbr/></p></span>
6906                  </li>
6907                  <li>
6908                    <span class="entry_type_enum_name">AUTO</span>
6909                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
6910<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
6911and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
6912For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
6913values used by the camera device for the transform and gains
6914will be available in the capture result for this request.<wbr/></p></span>
6915                  </li>
6916                  <li>
6917                    <span class="entry_type_enum_name">INCANDESCENT</span>
6918                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
6919the camera device uses incandescent light as the assumed scene
6920illumination for white balance.<wbr/></p>
6921<p>While the exact white balance transforms are up to the
6922camera device,<wbr/> they will approximately match the CIE
6923standard illuminant A.<wbr/></p>
6924<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
6925and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
6926For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
6927values used by the camera device for the transform and gains
6928will be available in the capture result for this request.<wbr/></p></span>
6929                  </li>
6930                  <li>
6931                    <span class="entry_type_enum_name">FLUORESCENT</span>
6932                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
6933the camera device uses fluorescent light as the assumed scene
6934illumination for white balance.<wbr/></p>
6935<p>While the exact white balance transforms are up to the
6936camera device,<wbr/> they will approximately match the CIE
6937standard illuminant F2.<wbr/></p>
6938<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
6939and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
6940For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
6941values used by the camera device for the transform and gains
6942will be available in the capture result for this request.<wbr/></p></span>
6943                  </li>
6944                  <li>
6945                    <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
6946                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
6947the camera device uses warm fluorescent light as the assumed scene
6948illumination for white balance.<wbr/></p>
6949<p>While the exact white balance transforms are up to the
6950camera device,<wbr/> they will approximately match the CIE
6951standard illuminant F4.<wbr/></p>
6952<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
6953and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
6954For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
6955values used by the camera device for the transform and gains
6956will be available in the capture result for this request.<wbr/></p></span>
6957                  </li>
6958                  <li>
6959                    <span class="entry_type_enum_name">DAYLIGHT</span>
6960                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
6961the camera device uses daylight light as the assumed scene
6962illumination for white balance.<wbr/></p>
6963<p>While the exact white balance transforms are up to the
6964camera device,<wbr/> they will approximately match the CIE
6965standard illuminant D65.<wbr/></p>
6966<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
6967and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
6968For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
6969values used by the camera device for the transform and gains
6970will be available in the capture result for this request.<wbr/></p></span>
6971                  </li>
6972                  <li>
6973                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
6974                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
6975the camera device uses cloudy daylight light as the assumed scene
6976illumination for white balance.<wbr/></p>
6977<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
6978and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
6979For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
6980values used by the camera device for the transform and gains
6981will be available in the capture result for this request.<wbr/></p></span>
6982                  </li>
6983                  <li>
6984                    <span class="entry_type_enum_name">TWILIGHT</span>
6985                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
6986the camera device uses twilight light as the assumed scene
6987illumination for white balance.<wbr/></p>
6988<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
6989and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
6990For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
6991values used by the camera device for the transform and gains
6992will be available in the capture result for this request.<wbr/></p></span>
6993                  </li>
6994                  <li>
6995                    <span class="entry_type_enum_name">SHADE</span>
6996                    <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
6997the camera device uses shade light as the assumed scene
6998illumination for white balance.<wbr/></p>
6999<p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7000and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7001For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7002values used by the camera device for the transform and gains
7003will be available in the capture result for this request.<wbr/></p></span>
7004                  </li>
7005                </ul>
7006
7007            </td> <!-- entry_type -->
7008
7009            <td class="entry_description">
7010              <p>Whether auto-white balance (AWB) is currently setting the color
7011transform fields,<wbr/> and what its illumination target
7012is.<wbr/></p>
7013            </td>
7014
7015            <td class="entry_units">
7016            </td>
7017
7018            <td class="entry_range">
7019              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
7020            </td>
7021
7022            <td class="entry_tags">
7023              <ul class="entry_tags">
7024                  <li><a href="#tag_BC">BC</a></li>
7025              </ul>
7026            </td>
7027
7028          </tr>
7029          <tr class="entries_header">
7030            <th class="th_details" colspan="5">Details</th>
7031          </tr>
7032          <tr class="entry_cont">
7033            <td class="entry_details" colspan="5">
7034              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
7035<p>When set to the ON mode,<wbr/> the camera device's auto-white balance
7036routine is enabled,<wbr/> overriding the application's selected
7037<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
7038<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>
7039is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
7040also 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
7041setting AE mode to OFF.<wbr/></p>
7042<p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
7043routine is disabled.<wbr/> The application manually controls the white
7044balance 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>
7045and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
7046<p>When set to any other modes,<wbr/> the camera device's auto-white
7047balance routine is disabled.<wbr/> The camera device uses each
7048particular illumination target for white balance
7049adjustment.<wbr/> The application's values for
7050<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
7051<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
7052<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
7053            </td>
7054          </tr>
7055
7056
7057          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7058           <!-- end of entry -->
7059
7060
7061          <tr class="entry" id="dynamic_android.control.awbRegions">
7062            <td class="entry_name
7063             " rowspan="5">
7064              android.<wbr/>control.<wbr/>awb<wbr/>Regions
7065            </td>
7066            <td class="entry_type">
7067                <span class="entry_type_name">int32</span>
7068                <span class="entry_type_container">x</span>
7069
7070                <span class="entry_type_array">
7071                  5 x area_count
7072                </span>
7073              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7074
7075
7076
7077
7078
7079
7080            </td> <!-- entry_type -->
7081
7082            <td class="entry_description">
7083              <p>List of metering areas to use for auto-white-balance illuminant
7084estimation.<wbr/></p>
7085            </td>
7086
7087            <td class="entry_units">
7088              Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7089            </td>
7090
7091            <td class="entry_range">
7092              <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7093<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7094            </td>
7095
7096            <td class="entry_tags">
7097              <ul class="entry_tags">
7098                  <li><a href="#tag_BC">BC</a></li>
7099              </ul>
7100            </td>
7101
7102          </tr>
7103          <tr class="entries_header">
7104            <th class="th_details" colspan="5">Details</th>
7105          </tr>
7106          <tr class="entry_cont">
7107            <td class="entry_details" colspan="5">
7108              <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
7109Otherwise will always be present.<wbr/></p>
7110<p>The maximum number of regions supported by the device is determined by the value
7111of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
7112<p>The coordinate system is based on the active pixel array,<wbr/>
7113with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7114(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7115<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7116bottom-right pixel in the active pixel array.<wbr/></p>
7117<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
7118for every pixel in the area.<wbr/> This means that a large metering area
7119with the same weight as a smaller area will have more effect in
7120the metering result.<wbr/> Metering areas can partially overlap and the
7121camera device will add the weights in the overlap region.<wbr/></p>
7122<p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
7123only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
71240 weight is ignored.<wbr/></p>
7125<p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7126camera device.<wbr/></p>
7127<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
7128capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7129region and output only the intersection rectangle as the metering region in the result
7130metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
7131not reported in the result metadata.<wbr/></p>
7132            </td>
7133          </tr>
7134
7135          <tr class="entries_header">
7136            <th class="th_details" colspan="5">HAL Implementation Details</th>
7137          </tr>
7138          <tr class="entry_cont">
7139            <td class="entry_details" colspan="5">
7140              <p>The HAL level representation of MeteringRectangle[] is a
7141int[5 * area_<wbr/>count].<wbr/>
7142Every five elements represent a metering region of
7143(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7144The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7145exclusive on xmax and ymax.<wbr/></p>
7146            </td>
7147          </tr>
7148
7149          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7150           <!-- end of entry -->
7151
7152
7153          <tr class="entry" id="dynamic_android.control.captureIntent">
7154            <td class="entry_name
7155             " rowspan="3">
7156              android.<wbr/>control.<wbr/>capture<wbr/>Intent
7157            </td>
7158            <td class="entry_type">
7159                <span class="entry_type_name entry_type_name_enum">byte</span>
7160
7161              <span class="entry_type_visibility"> [public]</span>
7162
7163
7164              <span class="entry_type_hwlevel">[legacy] </span>
7165
7166
7167
7168                <ul class="entry_type_enum">
7169                  <li>
7170                    <span class="entry_type_enum_name">CUSTOM</span>
7171                    <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
7172categories.<wbr/> The camera device will default to preview-like
7173behavior.<wbr/></p></span>
7174                  </li>
7175                  <li>
7176                    <span class="entry_type_enum_name">PREVIEW</span>
7177                    <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
7178<p>The precapture trigger may be used to start off a metering
7179w/<wbr/>flash sequence.<wbr/></p></span>
7180                  </li>
7181                  <li>
7182                    <span class="entry_type_enum_name">STILL_CAPTURE</span>
7183                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
7184use case.<wbr/></p>
7185<p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
7186                  </li>
7187                  <li>
7188                    <span class="entry_type_enum_name">VIDEO_RECORD</span>
7189                    <span class="entry_type_enum_notes"><p>This request is for a video recording
7190use case.<wbr/></p></span>
7191                  </li>
7192                  <li>
7193                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
7194                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
7195image while recording video) use case.<wbr/></p>
7196<p>The camera device should take the highest-quality image
7197possible (given the other settings) without disrupting the
7198frame rate of video recording.<wbr/>  </p></span>
7199                  </li>
7200                  <li>
7201                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
7202                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
7203application will stream full-resolution images and
7204reprocess one or several later for a final
7205capture.<wbr/></p></span>
7206                  </li>
7207                  <li>
7208                    <span class="entry_type_enum_name">MANUAL</span>
7209                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
7210the applications want to directly control the capture parameters.<wbr/></p>
7211<p>For example,<wbr/> the application may wish to manually control
7212<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>
7213                  </li>
7214                </ul>
7215
7216            </td> <!-- entry_type -->
7217
7218            <td class="entry_description">
7219              <p>Information to the camera device 3A (auto-exposure,<wbr/>
7220auto-focus,<wbr/> auto-white balance) routines about the purpose
7221of this capture,<wbr/> to help the camera device to decide optimal 3A
7222strategy.<wbr/></p>
7223            </td>
7224
7225            <td class="entry_units">
7226            </td>
7227
7228            <td class="entry_range">
7229            </td>
7230
7231            <td class="entry_tags">
7232              <ul class="entry_tags">
7233                  <li><a href="#tag_BC">BC</a></li>
7234              </ul>
7235            </td>
7236
7237          </tr>
7238          <tr class="entries_header">
7239            <th class="th_details" colspan="5">Details</th>
7240          </tr>
7241          <tr class="entry_cont">
7242            <td class="entry_details" colspan="5">
7243              <p>This control (except for MANUAL) is only effective if
7244<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
7245<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
7246contains ZSL.<wbr/> MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
7247contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are always supported.<wbr/></p>
7248            </td>
7249          </tr>
7250
7251
7252          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7253           <!-- end of entry -->
7254
7255
7256          <tr class="entry" id="dynamic_android.control.awbState">
7257            <td class="entry_name
7258             " rowspan="3">
7259              android.<wbr/>control.<wbr/>awb<wbr/>State
7260            </td>
7261            <td class="entry_type">
7262                <span class="entry_type_name entry_type_name_enum">byte</span>
7263
7264              <span class="entry_type_visibility"> [public]</span>
7265
7266
7267              <span class="entry_type_hwlevel">[limited] </span>
7268
7269
7270
7271                <ul class="entry_type_enum">
7272                  <li>
7273                    <span class="entry_type_enum_name">INACTIVE</span>
7274                    <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
7275<p>When a camera device is opened,<wbr/> it starts in this
7276state.<wbr/> This is a transient state,<wbr/> the camera device may
7277skip reporting this state in capture
7278result.<wbr/></p></span>
7279                  </li>
7280                  <li>
7281                    <span class="entry_type_enum_name">SEARCHING</span>
7282                    <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
7283values for the current scene.<wbr/></p>
7284<p>This is a transient state,<wbr/> the camera device
7285may skip reporting this state in capture result.<wbr/></p></span>
7286                  </li>
7287                  <li>
7288                    <span class="entry_type_enum_name">CONVERGED</span>
7289                    <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
7290current scene.<wbr/></p></span>
7291                  </li>
7292                  <li>
7293                    <span class="entry_type_enum_name">LOCKED</span>
7294                    <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
7295                  </li>
7296                </ul>
7297
7298            </td> <!-- entry_type -->
7299
7300            <td class="entry_description">
7301              <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
7302            </td>
7303
7304            <td class="entry_units">
7305            </td>
7306
7307            <td class="entry_range">
7308            </td>
7309
7310            <td class="entry_tags">
7311            </td>
7312
7313          </tr>
7314          <tr class="entries_header">
7315            <th class="th_details" colspan="5">Details</th>
7316          </tr>
7317          <tr class="entry_cont">
7318            <td class="entry_details" colspan="5">
7319              <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
7320resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7321or <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
7322the algorithm states to INACTIVE.<wbr/></p>
7323<p>The camera device can do several state transitions between two results,<wbr/> if it is
7324allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
7325a result.<wbr/></p>
7326<p>The state in the result is the state for this image (in sync with this image): if
7327AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
7328be good to use.<wbr/></p>
7329<p>Below are state transition tables for different AWB modes.<wbr/></p>
7330<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
7331<table>
7332<thead>
7333<tr>
7334<th align="center">State</th>
7335<th align="center">Transition Cause</th>
7336<th align="center">New State</th>
7337<th align="center">Notes</th>
7338</tr>
7339</thead>
7340<tbody>
7341<tr>
7342<td align="center">INACTIVE</td>
7343<td align="center"></td>
7344<td align="center">INACTIVE</td>
7345<td align="center">Camera device auto white balance algorithm is disabled</td>
7346</tr>
7347</tbody>
7348</table>
7349<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
7350<table>
7351<thead>
7352<tr>
7353<th align="center">State</th>
7354<th align="center">Transition Cause</th>
7355<th align="center">New State</th>
7356<th align="center">Notes</th>
7357</tr>
7358</thead>
7359<tbody>
7360<tr>
7361<td align="center">INACTIVE</td>
7362<td align="center">Camera device initiates AWB scan</td>
7363<td align="center">SEARCHING</td>
7364<td align="center">Values changing</td>
7365</tr>
7366<tr>
7367<td align="center">INACTIVE</td>
7368<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7369<td align="center">LOCKED</td>
7370<td align="center">Values locked</td>
7371</tr>
7372<tr>
7373<td align="center">SEARCHING</td>
7374<td align="center">Camera device finishes AWB scan</td>
7375<td align="center">CONVERGED</td>
7376<td align="center">Good values,<wbr/> not changing</td>
7377</tr>
7378<tr>
7379<td align="center">SEARCHING</td>
7380<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7381<td align="center">LOCKED</td>
7382<td align="center">Values locked</td>
7383</tr>
7384<tr>
7385<td align="center">CONVERGED</td>
7386<td align="center">Camera device initiates AWB scan</td>
7387<td align="center">SEARCHING</td>
7388<td align="center">Values changing</td>
7389</tr>
7390<tr>
7391<td align="center">CONVERGED</td>
7392<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7393<td align="center">LOCKED</td>
7394<td align="center">Values locked</td>
7395</tr>
7396<tr>
7397<td align="center">LOCKED</td>
7398<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
7399<td align="center">SEARCHING</td>
7400<td align="center">Values not good after unlock</td>
7401</tr>
7402</tbody>
7403</table>
7404<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7405without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7406can be skipped in that manner is called a transient state.<wbr/></p>
7407<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
7408listed in above table,<wbr/> it is also legal for the camera device to skip one or more
7409transient states between two results.<wbr/> See below table for examples:</p>
7410<table>
7411<thead>
7412<tr>
7413<th align="center">State</th>
7414<th align="center">Transition Cause</th>
7415<th align="center">New State</th>
7416<th align="center">Notes</th>
7417</tr>
7418</thead>
7419<tbody>
7420<tr>
7421<td align="center">INACTIVE</td>
7422<td align="center">Camera device finished AWB scan</td>
7423<td align="center">CONVERGED</td>
7424<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
7425</tr>
7426<tr>
7427<td align="center">LOCKED</td>
7428<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
7429<td align="center">CONVERGED</td>
7430<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
7431</tr>
7432</tbody>
7433</table>
7434            </td>
7435          </tr>
7436
7437
7438          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7439           <!-- end of entry -->
7440
7441
7442          <tr class="entry" id="dynamic_android.control.effectMode">
7443            <td class="entry_name
7444             " rowspan="3">
7445              android.<wbr/>control.<wbr/>effect<wbr/>Mode
7446            </td>
7447            <td class="entry_type">
7448                <span class="entry_type_name entry_type_name_enum">byte</span>
7449
7450              <span class="entry_type_visibility"> [public]</span>
7451
7452
7453              <span class="entry_type_hwlevel">[legacy] </span>
7454
7455
7456
7457                <ul class="entry_type_enum">
7458                  <li>
7459                    <span class="entry_type_enum_name">OFF</span>
7460                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
7461                  </li>
7462                  <li>
7463                    <span class="entry_type_enum_name">MONO</span>
7464                    <span class="entry_type_enum_optional">[optional]</span>
7465                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
7466a single color.<wbr/></p>
7467<p>This will typically be grayscale.<wbr/></p></span>
7468                  </li>
7469                  <li>
7470                    <span class="entry_type_enum_name">NEGATIVE</span>
7471                    <span class="entry_type_enum_optional">[optional]</span>
7472                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
7473are inverted.<wbr/></p></span>
7474                  </li>
7475                  <li>
7476                    <span class="entry_type_enum_name">SOLARIZE</span>
7477                    <span class="entry_type_enum_optional">[optional]</span>
7478                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
7479image is wholly or partially reversed in
7480tone.<wbr/></p></span>
7481                  </li>
7482                  <li>
7483                    <span class="entry_type_enum_name">SEPIA</span>
7484                    <span class="entry_type_enum_optional">[optional]</span>
7485                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
7486gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
7487                  </li>
7488                  <li>
7489                    <span class="entry_type_enum_name">POSTERIZE</span>
7490                    <span class="entry_type_enum_optional">[optional]</span>
7491                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
7492discrete regions of tone rather than a continuous
7493gradient of tones.<wbr/></p></span>
7494                  </li>
7495                  <li>
7496                    <span class="entry_type_enum_name">WHITEBOARD</span>
7497                    <span class="entry_type_enum_optional">[optional]</span>
7498                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
7499as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
7500                  </li>
7501                  <li>
7502                    <span class="entry_type_enum_name">BLACKBOARD</span>
7503                    <span class="entry_type_enum_optional">[optional]</span>
7504                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
7505as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
7506                  </li>
7507                  <li>
7508                    <span class="entry_type_enum_name">AQUA</span>
7509                    <span class="entry_type_enum_optional">[optional]</span>
7510                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
7511                  </li>
7512                </ul>
7513
7514            </td> <!-- entry_type -->
7515
7516            <td class="entry_description">
7517              <p>A special color effect to apply.<wbr/></p>
7518            </td>
7519
7520            <td class="entry_units">
7521            </td>
7522
7523            <td class="entry_range">
7524              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
7525            </td>
7526
7527            <td class="entry_tags">
7528              <ul class="entry_tags">
7529                  <li><a href="#tag_BC">BC</a></li>
7530              </ul>
7531            </td>
7532
7533          </tr>
7534          <tr class="entries_header">
7535            <th class="th_details" colspan="5">Details</th>
7536          </tr>
7537          <tr class="entry_cont">
7538            <td class="entry_details" colspan="5">
7539              <p>When this mode is set,<wbr/> a color effect will be applied
7540to images produced by the camera device.<wbr/> The interpretation
7541and implementation of these color effects is left to the
7542implementor of the camera device,<wbr/> and should not be
7543depended on to be consistent (or present) across all
7544devices.<wbr/></p>
7545            </td>
7546          </tr>
7547
7548
7549          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7550           <!-- end of entry -->
7551
7552
7553          <tr class="entry" id="dynamic_android.control.mode">
7554            <td class="entry_name
7555             " rowspan="3">
7556              android.<wbr/>control.<wbr/>mode
7557            </td>
7558            <td class="entry_type">
7559                <span class="entry_type_name entry_type_name_enum">byte</span>
7560
7561              <span class="entry_type_visibility"> [public]</span>
7562
7563
7564              <span class="entry_type_hwlevel">[legacy] </span>
7565
7566
7567
7568                <ul class="entry_type_enum">
7569                  <li>
7570                    <span class="entry_type_enum_name">OFF</span>
7571                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
7572<p>All control by the device's metering and focusing (3A)
7573routines is disabled,<wbr/> and no other settings in
7574android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
7575<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
7576device to select post-processing values for processing
7577blocks that do not allow for manual control,<wbr/> or are not
7578exposed by the camera API.<wbr/></p>
7579<p>However,<wbr/> the camera device's 3A routines may continue to
7580collect statistics and update their internal state so that
7581when control is switched to AUTO mode,<wbr/> good control values
7582can be immediately applied.<wbr/></p></span>
7583                  </li>
7584                  <li>
7585                    <span class="entry_type_enum_name">AUTO</span>
7586                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
7587<p>Manual control of capture parameters is disabled.<wbr/> All
7588controls in android.<wbr/>control.<wbr/>* besides sceneMode take
7589effect.<wbr/></p></span>
7590                  </li>
7591                  <li>
7592                    <span class="entry_type_enum_name">USE_SCENE_MODE</span>
7593                    <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
7594<p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
7595control.<wbr/>afMode controls; the camera device will ignore
7596those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
7597FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still
7598active.<wbr/>  This setting can only be used if scene mode is
7599supported (i.<wbr/>e.<wbr/> <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
7600contain some modes other than DISABLED).<wbr/></p></span>
7601                  </li>
7602                  <li>
7603                    <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
7604                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
7605used by camera device background auto-exposure,<wbr/> auto-white balance and
7606auto-focus algorithms (3A) to update their statistics.<wbr/></p>
7607<p>Specifically,<wbr/> the 3A routines are locked to the last
7608values set from a request with AUTO,<wbr/> OFF,<wbr/> or
7609USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
7610collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
7611discarded by the camera device.<wbr/></p></span>
7612                  </li>
7613                </ul>
7614
7615            </td> <!-- entry_type -->
7616
7617            <td class="entry_description">
7618              <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
7619routines.<wbr/></p>
7620            </td>
7621
7622            <td class="entry_units">
7623            </td>
7624
7625            <td class="entry_range">
7626            </td>
7627
7628            <td class="entry_tags">
7629              <ul class="entry_tags">
7630                  <li><a href="#tag_BC">BC</a></li>
7631              </ul>
7632            </td>
7633
7634          </tr>
7635          <tr class="entries_header">
7636            <th class="th_details" colspan="5">Details</th>
7637          </tr>
7638          <tr class="entry_cont">
7639            <td class="entry_details" colspan="5">
7640              <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
7641by the camera device is disabled.<wbr/> The application must set the fields for
7642capture parameters itself.<wbr/></p>
7643<p>When set to AUTO,<wbr/> the individual algorithm controls in
7644android.<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>
7645<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
7646android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
7647one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
7648as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
7649<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
7650<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
7651is that this frame will not be used by camera device background 3A statistics
7652update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
7653where the application doesn't want a 3A manual control capture to affect
7654the subsequent auto 3A capture results.<wbr/></p>
7655<p>LEGACY mode devices will only support AUTO and USE_<wbr/>SCENE_<wbr/>MODE modes.<wbr/>
7656LIMITED mode devices will only support OFF and OFF_<wbr/>KEEP_<wbr/>STATE if they
7657support the MANUAL_<wbr/>SENSOR and MANUAL_<wbr/>POST_<wbr/>PROCSESING capabilities.<wbr/>
7658FULL mode devices will always support OFF and OFF_<wbr/>KEEP_<wbr/>STATE.<wbr/></p>
7659            </td>
7660          </tr>
7661
7662
7663          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7664           <!-- end of entry -->
7665
7666
7667          <tr class="entry" id="dynamic_android.control.sceneMode">
7668            <td class="entry_name
7669             " rowspan="5">
7670              android.<wbr/>control.<wbr/>scene<wbr/>Mode
7671            </td>
7672            <td class="entry_type">
7673                <span class="entry_type_name entry_type_name_enum">byte</span>
7674
7675              <span class="entry_type_visibility"> [public]</span>
7676
7677
7678              <span class="entry_type_hwlevel">[legacy] </span>
7679
7680
7681
7682                <ul class="entry_type_enum">
7683                  <li>
7684                    <span class="entry_type_enum_name">DISABLED</span>
7685                    <span class="entry_type_enum_value">0</span>
7686                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
7687                  </li>
7688                  <li>
7689                    <span class="entry_type_enum_name">FACE_PRIORITY</span>
7690                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
7691detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
7692auto-exposure routines.<wbr/></p>
7693<p>If face detection statistics are disabled
7694(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/>
7695this should still operate correctly (but will not return
7696face detection statistics to the framework).<wbr/></p>
7697<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
7698<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>
7699remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
7700                  </li>
7701                  <li>
7702                    <span class="entry_type_enum_name">ACTION</span>
7703                    <span class="entry_type_enum_optional">[optional]</span>
7704                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
7705<p>Similar to SPORTS.<wbr/></p></span>
7706                  </li>
7707                  <li>
7708                    <span class="entry_type_enum_name">PORTRAIT</span>
7709                    <span class="entry_type_enum_optional">[optional]</span>
7710                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
7711                  </li>
7712                  <li>
7713                    <span class="entry_type_enum_name">LANDSCAPE</span>
7714                    <span class="entry_type_enum_optional">[optional]</span>
7715                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
7716                  </li>
7717                  <li>
7718                    <span class="entry_type_enum_name">NIGHT</span>
7719                    <span class="entry_type_enum_optional">[optional]</span>
7720                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
7721                  </li>
7722                  <li>
7723                    <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
7724                    <span class="entry_type_enum_optional">[optional]</span>
7725                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
7726settings.<wbr/></p></span>
7727                  </li>
7728                  <li>
7729                    <span class="entry_type_enum_name">THEATRE</span>
7730                    <span class="entry_type_enum_optional">[optional]</span>
7731                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
7732remain off.<wbr/></p></span>
7733                  </li>
7734                  <li>
7735                    <span class="entry_type_enum_name">BEACH</span>
7736                    <span class="entry_type_enum_optional">[optional]</span>
7737                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
7738                  </li>
7739                  <li>
7740                    <span class="entry_type_enum_name">SNOW</span>
7741                    <span class="entry_type_enum_optional">[optional]</span>
7742                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
7743                  </li>
7744                  <li>
7745                    <span class="entry_type_enum_name">SUNSET</span>
7746                    <span class="entry_type_enum_optional">[optional]</span>
7747                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
7748                  </li>
7749                  <li>
7750                    <span class="entry_type_enum_name">STEADYPHOTO</span>
7751                    <span class="entry_type_enum_optional">[optional]</span>
7752                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
7753device motion (for example: due to hand shake).<wbr/></p></span>
7754                  </li>
7755                  <li>
7756                    <span class="entry_type_enum_name">FIREWORKS</span>
7757                    <span class="entry_type_enum_optional">[optional]</span>
7758                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
7759                  </li>
7760                  <li>
7761                    <span class="entry_type_enum_name">SPORTS</span>
7762                    <span class="entry_type_enum_optional">[optional]</span>
7763                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
7764<p>Similar to ACTION.<wbr/></p></span>
7765                  </li>
7766                  <li>
7767                    <span class="entry_type_enum_name">PARTY</span>
7768                    <span class="entry_type_enum_optional">[optional]</span>
7769                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
7770people.<wbr/></p></span>
7771                  </li>
7772                  <li>
7773                    <span class="entry_type_enum_name">CANDLELIGHT</span>
7774                    <span class="entry_type_enum_optional">[optional]</span>
7775                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
7776is a flame.<wbr/></p></span>
7777                  </li>
7778                  <li>
7779                    <span class="entry_type_enum_name">BARCODE</span>
7780                    <span class="entry_type_enum_optional">[optional]</span>
7781                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
7782for use by camera applications that wish to read the
7783barcode value.<wbr/></p></span>
7784                  </li>
7785                  <li>
7786                    <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
7787                    <span class="entry_type_enum_optional">[optional]</span>
7788                    <span class="entry_type_enum_notes"><p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
7789<p>The supported high speed video sizes and fps ranges are specified in
7790<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
7791output frame rates,<wbr/> the application is only allowed to select video size
7792and fps range combinations listed in this static metadata.<wbr/> The fps range
7793can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
7794<p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
7795ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
7796controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
7797and post-processing parameters is possible.<wbr/> All other controls operate the
7798same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
7799android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
7800<ul>
7801<li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
7802<li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
7803<li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
7804<li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
7805<li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
7806<li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
7807<li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
7808<li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
7809<li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
7810<li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
7811</ul>
7812<p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
7813<ul>
7814<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>
7815<li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
7816<li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
7817<li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
7818</ul>
7819<p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
7820be lower than what camera can output,<wbr/> depending on the destination Surfaces for
7821the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
7822the application need check if the video encoder is capable of supporting the
7823high frame rate for a given video size,<wbr/> or it will end up with lower recording
7824frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
7825rate will be bounded by the screen refresh rate.<wbr/></p>
7826<p>The camera device will only support up to 2 output high speed streams
7827(processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
7828in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
7829<ul>
7830<li>The application created no more than maxNumHighSpeedStreams processed non-stalling
7831format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
7832min(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>
7833<li>The stream sizes are selected from the sizes reported by
7834<a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
7835<li>No processed non-stalling or raw streams are configured.<wbr/></li>
7836</ul>
7837<p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
7838<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/>
7839the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
7840and the returned capture result metadata will give the fps range choosen
7841by the camera device.<wbr/></p>
7842<p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
7843reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
7844the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
7845                  </li>
7846                  <li>
7847                    <span class="entry_type_enum_name">HDR</span>
7848                    <span class="entry_type_enum_optional">[optional]</span>
7849                    <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
7850<p>In this scene mode,<wbr/> the camera device captures images
7851that keep a larger range of scene illumination levels
7852visible in the final image.<wbr/> For example,<wbr/> when taking a
7853picture of a object in front of a bright window,<wbr/> both
7854the object and the scene through the window may be
7855visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
7856one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
7857HDR mode generally takes much longer to capture a single
7858image,<wbr/> has no user control,<wbr/> and may have other artifacts
7859depending on the HDR method used.<wbr/></p>
7860<p>Therefore,<wbr/> HDR captures operate at a much slower rate
7861than regular captures.<wbr/></p>
7862<p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
7863is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
7864STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
7865using a high dynamic range capture technique.<wbr/>  On LEGACY
7866devices,<wbr/> captures that target a JPEG-format output will
7867be captured with HDR,<wbr/> and the capture intent is not
7868relevant.<wbr/></p>
7869<p>The HDR capture may involve the device capturing a burst
7870of images internally and combining them into one,<wbr/> or it
7871may involve the device using specialized high dynamic
7872range capture hardware.<wbr/> In all cases,<wbr/> a single image is
7873produced in response to a capture request submitted
7874while in HDR mode.<wbr/></p>
7875<p>Since substantial post-processing is generally needed to
7876produce an HDR image,<wbr/> only YUV and JPEG outputs are
7877supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only
7878JPEG outputs are supported for LEGACY HDR
7879captures.<wbr/> Using a RAW output for HDR capture is not
7880supported.<wbr/></p></span>
7881                  </li>
7882                </ul>
7883
7884            </td> <!-- entry_type -->
7885
7886            <td class="entry_description">
7887              <p>Control for which scene mode is currently active.<wbr/></p>
7888            </td>
7889
7890            <td class="entry_units">
7891            </td>
7892
7893            <td class="entry_range">
7894              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
7895            </td>
7896
7897            <td class="entry_tags">
7898              <ul class="entry_tags">
7899                  <li><a href="#tag_BC">BC</a></li>
7900              </ul>
7901            </td>
7902
7903          </tr>
7904          <tr class="entries_header">
7905            <th class="th_details" colspan="5">Details</th>
7906          </tr>
7907          <tr class="entry_cont">
7908            <td class="entry_details" colspan="5">
7909              <p>Scene modes are custom camera modes optimized for a certain set of conditions and
7910capture settings.<wbr/></p>
7911<p>This is the mode that that is active when
7912<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/>
7913these modes will disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
7914<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> while in use.<wbr/></p>
7915<p>The interpretation and implementation of these scene modes is left
7916to the implementor of the camera device.<wbr/> Their behavior will not be
7917consistent across all devices,<wbr/> and any given device may only implement
7918a subset of these modes.<wbr/></p>
7919            </td>
7920          </tr>
7921
7922          <tr class="entries_header">
7923            <th class="th_details" colspan="5">HAL Implementation Details</th>
7924          </tr>
7925          <tr class="entry_cont">
7926            <td class="entry_details" colspan="5">
7927              <p>HAL implementations that include scene modes are expected to provide
7928the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
7929<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
7930<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
7931<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/>
7932the HAL must list supported video size and fps range in
7933<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/>
79341280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
7935mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
7936requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/></p>
7937            </td>
7938          </tr>
7939
7940          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7941           <!-- end of entry -->
7942
7943
7944          <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
7945            <td class="entry_name
7946             " rowspan="3">
7947              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
7948            </td>
7949            <td class="entry_type">
7950                <span class="entry_type_name entry_type_name_enum">byte</span>
7951
7952              <span class="entry_type_visibility"> [public]</span>
7953
7954
7955              <span class="entry_type_hwlevel">[legacy] </span>
7956
7957
7958
7959                <ul class="entry_type_enum">
7960                  <li>
7961                    <span class="entry_type_enum_name">OFF</span>
7962                    <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
7963                  </li>
7964                  <li>
7965                    <span class="entry_type_enum_name">ON</span>
7966                    <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
7967                  </li>
7968                </ul>
7969
7970            </td> <!-- entry_type -->
7971
7972            <td class="entry_description">
7973              <p>Whether video stabilization is
7974active.<wbr/></p>
7975            </td>
7976
7977            <td class="entry_units">
7978            </td>
7979
7980            <td class="entry_range">
7981            </td>
7982
7983            <td class="entry_tags">
7984              <ul class="entry_tags">
7985                  <li><a href="#tag_BC">BC</a></li>
7986              </ul>
7987            </td>
7988
7989          </tr>
7990          <tr class="entries_header">
7991            <th class="th_details" colspan="5">Details</th>
7992          </tr>
7993          <tr class="entry_cont">
7994            <td class="entry_details" colspan="5">
7995              <p>Video stabilization automatically translates and scales images from
7996the camera in order to stabilize motion between consecutive frames.<wbr/></p>
7997<p>If enabled,<wbr/> video stabilization can modify the
7998<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
7999<p>Switching between different video stabilization modes may take several
8000frames to initialize,<wbr/> the camera device will report the current mode
8001in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
8002the video stabilization modes in the first several capture results may
8003still be "OFF",<wbr/> and it will become "ON" when the initialization is
8004done.<wbr/></p>
8005<p>If a camera device supports both this mode and OIS
8006(<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
8007produce undesirable interaction,<wbr/> so it is recommended not to enable
8008both at the same time.<wbr/></p>
8009            </td>
8010          </tr>
8011
8012
8013          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8014           <!-- end of entry -->
8015
8016
8017
8018      <!-- end of kind -->
8019      </tbody>
8020
8021  <!-- end of section -->
8022  <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr>
8023
8024
8025      <tr><td colspan="6" class="kind">controls</td></tr>
8026
8027      <thead class="entries_header">
8028        <tr>
8029          <th class="th_name">Property Name</th>
8030          <th class="th_type">Type</th>
8031          <th class="th_description">Description</th>
8032          <th class="th_units">Units</th>
8033          <th class="th_range">Range</th>
8034          <th class="th_tags">Tags</th>
8035        </tr>
8036      </thead>
8037
8038      <tbody>
8039
8040
8041
8042
8043
8044
8045
8046
8047
8048
8049          <tr class="entry" id="controls_android.demosaic.mode">
8050            <td class="entry_name
8051             " rowspan="1">
8052              android.<wbr/>demosaic.<wbr/>mode
8053            </td>
8054            <td class="entry_type">
8055                <span class="entry_type_name entry_type_name_enum">byte</span>
8056
8057              <span class="entry_type_visibility"> [system]</span>
8058
8059
8060
8061
8062
8063                <ul class="entry_type_enum">
8064                  <li>
8065                    <span class="entry_type_enum_name">FAST</span>
8066                    <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
8067Bayer RAW output.<wbr/></p></span>
8068                  </li>
8069                  <li>
8070                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
8071                    <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate is slowed down
8072relative to raw output.<wbr/></p></span>
8073                  </li>
8074                </ul>
8075
8076            </td> <!-- entry_type -->
8077
8078            <td class="entry_description">
8079              <p>Controls the quality of the demosaicing
8080processing.<wbr/></p>
8081            </td>
8082
8083            <td class="entry_units">
8084            </td>
8085
8086            <td class="entry_range">
8087            </td>
8088
8089            <td class="entry_tags">
8090              <ul class="entry_tags">
8091                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8092              </ul>
8093            </td>
8094
8095          </tr>
8096
8097
8098          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8099           <!-- end of entry -->
8100
8101
8102
8103      <!-- end of kind -->
8104      </tbody>
8105
8106  <!-- end of section -->
8107  <tr><td colspan="6" id="section_edge" class="section">edge</td></tr>
8108
8109
8110      <tr><td colspan="6" class="kind">controls</td></tr>
8111
8112      <thead class="entries_header">
8113        <tr>
8114          <th class="th_name">Property Name</th>
8115          <th class="th_type">Type</th>
8116          <th class="th_description">Description</th>
8117          <th class="th_units">Units</th>
8118          <th class="th_range">Range</th>
8119          <th class="th_tags">Tags</th>
8120        </tr>
8121      </thead>
8122
8123      <tbody>
8124
8125
8126
8127
8128
8129
8130
8131
8132
8133
8134          <tr class="entry" id="controls_android.edge.mode">
8135            <td class="entry_name
8136             " rowspan="3">
8137              android.<wbr/>edge.<wbr/>mode
8138            </td>
8139            <td class="entry_type">
8140                <span class="entry_type_name entry_type_name_enum">byte</span>
8141
8142              <span class="entry_type_visibility"> [public]</span>
8143
8144
8145              <span class="entry_type_hwlevel">[full] </span>
8146
8147
8148
8149                <ul class="entry_type_enum">
8150                  <li>
8151                    <span class="entry_type_enum_name">OFF</span>
8152                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
8153                  </li>
8154                  <li>
8155                    <span class="entry_type_enum_name">FAST</span>
8156                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate relative to sensor
8157output</p></span>
8158                  </li>
8159                  <li>
8160                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
8161                    <span class="entry_type_enum_notes"><p>Apply high-quality edge enhancement,<wbr/> at a cost of reducing output frame rate.<wbr/></p></span>
8162                  </li>
8163                </ul>
8164
8165            </td> <!-- entry_type -->
8166
8167            <td class="entry_description">
8168              <p>Operation mode for edge
8169enhancement.<wbr/></p>
8170            </td>
8171
8172            <td class="entry_units">
8173            </td>
8174
8175            <td class="entry_range">
8176              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
8177            </td>
8178
8179            <td class="entry_tags">
8180              <ul class="entry_tags">
8181                  <li><a href="#tag_V1">V1</a></li>
8182              </ul>
8183            </td>
8184
8185          </tr>
8186          <tr class="entries_header">
8187            <th class="th_details" colspan="5">Details</th>
8188          </tr>
8189          <tr class="entry_cont">
8190            <td class="entry_details" colspan="5">
8191              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
8192no enhancement will be applied by the camera device.<wbr/></p>
8193<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
8194will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
8195camera device will use the highest-quality enhancement algorithms,<wbr/>
8196even if it slows down capture rate.<wbr/> FAST means the camera device will
8197not slow down capture rate when applying edge enhancement.<wbr/></p>
8198            </td>
8199          </tr>
8200
8201
8202          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8203           <!-- end of entry -->
8204
8205
8206          <tr class="entry" id="controls_android.edge.strength">
8207            <td class="entry_name
8208             " rowspan="1">
8209              android.<wbr/>edge.<wbr/>strength
8210            </td>
8211            <td class="entry_type">
8212                <span class="entry_type_name">byte</span>
8213
8214              <span class="entry_type_visibility"> [system]</span>
8215
8216
8217
8218
8219
8220
8221            </td> <!-- entry_type -->
8222
8223            <td class="entry_description">
8224              <p>Control the amount of edge enhancement
8225applied to the images</p>
8226            </td>
8227
8228            <td class="entry_units">
8229              1-10; 10 is maximum sharpening
8230            </td>
8231
8232            <td class="entry_range">
8233            </td>
8234
8235            <td class="entry_tags">
8236              <ul class="entry_tags">
8237                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8238              </ul>
8239            </td>
8240
8241          </tr>
8242
8243
8244          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8245           <!-- end of entry -->
8246
8247
8248
8249      <!-- end of kind -->
8250      </tbody>
8251      <tr><td colspan="6" class="kind">static</td></tr>
8252
8253      <thead class="entries_header">
8254        <tr>
8255          <th class="th_name">Property Name</th>
8256          <th class="th_type">Type</th>
8257          <th class="th_description">Description</th>
8258          <th class="th_units">Units</th>
8259          <th class="th_range">Range</th>
8260          <th class="th_tags">Tags</th>
8261        </tr>
8262      </thead>
8263
8264      <tbody>
8265
8266
8267
8268
8269
8270
8271
8272
8273
8274
8275          <tr class="entry" id="static_android.edge.availableEdgeModes">
8276            <td class="entry_name
8277             " rowspan="3">
8278              android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
8279            </td>
8280            <td class="entry_type">
8281                <span class="entry_type_name">byte</span>
8282                <span class="entry_type_container">x</span>
8283
8284                <span class="entry_type_array">
8285                  n
8286                </span>
8287              <span class="entry_type_visibility"> [public as enumList]</span>
8288
8289
8290              <span class="entry_type_hwlevel">[full] </span>
8291
8292
8293                <div class="entry_type_notes">list of enums</div>
8294
8295
8296            </td> <!-- entry_type -->
8297
8298            <td class="entry_description">
8299              <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
8300device.<wbr/></p>
8301            </td>
8302
8303            <td class="entry_units">
8304            </td>
8305
8306            <td class="entry_range">
8307              <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
8308            </td>
8309
8310            <td class="entry_tags">
8311              <ul class="entry_tags">
8312                  <li><a href="#tag_V1">V1</a></li>
8313              </ul>
8314            </td>
8315
8316          </tr>
8317          <tr class="entries_header">
8318            <th class="th_details" colspan="5">Details</th>
8319          </tr>
8320          <tr class="entry_cont">
8321            <td class="entry_details" colspan="5">
8322              <p>Full-capability camera devices must always support OFF; all devices will list FAST.<wbr/></p>
8323            </td>
8324          </tr>
8325
8326
8327          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8328           <!-- end of entry -->
8329
8330
8331
8332      <!-- end of kind -->
8333      </tbody>
8334      <tr><td colspan="6" class="kind">dynamic</td></tr>
8335
8336      <thead class="entries_header">
8337        <tr>
8338          <th class="th_name">Property Name</th>
8339          <th class="th_type">Type</th>
8340          <th class="th_description">Description</th>
8341          <th class="th_units">Units</th>
8342          <th class="th_range">Range</th>
8343          <th class="th_tags">Tags</th>
8344        </tr>
8345      </thead>
8346
8347      <tbody>
8348
8349
8350
8351
8352
8353
8354
8355
8356
8357
8358          <tr class="entry" id="dynamic_android.edge.mode">
8359            <td class="entry_name
8360             " rowspan="3">
8361              android.<wbr/>edge.<wbr/>mode
8362            </td>
8363            <td class="entry_type">
8364                <span class="entry_type_name entry_type_name_enum">byte</span>
8365
8366              <span class="entry_type_visibility"> [public]</span>
8367
8368
8369              <span class="entry_type_hwlevel">[full] </span>
8370
8371
8372
8373                <ul class="entry_type_enum">
8374                  <li>
8375                    <span class="entry_type_enum_name">OFF</span>
8376                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
8377                  </li>
8378                  <li>
8379                    <span class="entry_type_enum_name">FAST</span>
8380                    <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate relative to sensor
8381output</p></span>
8382                  </li>
8383                  <li>
8384                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
8385                    <span class="entry_type_enum_notes"><p>Apply high-quality edge enhancement,<wbr/> at a cost of reducing output frame rate.<wbr/></p></span>
8386                  </li>
8387                </ul>
8388
8389            </td> <!-- entry_type -->
8390
8391            <td class="entry_description">
8392              <p>Operation mode for edge
8393enhancement.<wbr/></p>
8394            </td>
8395
8396            <td class="entry_units">
8397            </td>
8398
8399            <td class="entry_range">
8400              <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
8401            </td>
8402
8403            <td class="entry_tags">
8404              <ul class="entry_tags">
8405                  <li><a href="#tag_V1">V1</a></li>
8406              </ul>
8407            </td>
8408
8409          </tr>
8410          <tr class="entries_header">
8411            <th class="th_details" colspan="5">Details</th>
8412          </tr>
8413          <tr class="entry_cont">
8414            <td class="entry_details" colspan="5">
8415              <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
8416no enhancement will be applied by the camera device.<wbr/></p>
8417<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
8418will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
8419camera device will use the highest-quality enhancement algorithms,<wbr/>
8420even if it slows down capture rate.<wbr/> FAST means the camera device will
8421not slow down capture rate when applying edge enhancement.<wbr/></p>
8422            </td>
8423          </tr>
8424
8425
8426          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8427           <!-- end of entry -->
8428
8429
8430
8431      <!-- end of kind -->
8432      </tbody>
8433
8434  <!-- end of section -->
8435  <tr><td colspan="6" id="section_flash" class="section">flash</td></tr>
8436
8437
8438      <tr><td colspan="6" class="kind">controls</td></tr>
8439
8440      <thead class="entries_header">
8441        <tr>
8442          <th class="th_name">Property Name</th>
8443          <th class="th_type">Type</th>
8444          <th class="th_description">Description</th>
8445          <th class="th_units">Units</th>
8446          <th class="th_range">Range</th>
8447          <th class="th_tags">Tags</th>
8448        </tr>
8449      </thead>
8450
8451      <tbody>
8452
8453
8454
8455
8456
8457
8458
8459
8460
8461
8462          <tr class="entry" id="controls_android.flash.firingPower">
8463            <td class="entry_name
8464             " rowspan="3">
8465              android.<wbr/>flash.<wbr/>firing<wbr/>Power
8466            </td>
8467            <td class="entry_type">
8468                <span class="entry_type_name">byte</span>
8469
8470              <span class="entry_type_visibility"> [system]</span>
8471
8472
8473
8474
8475
8476
8477            </td> <!-- entry_type -->
8478
8479            <td class="entry_description">
8480              <p>Power for flash firing/<wbr/>torch</p>
8481            </td>
8482
8483            <td class="entry_units">
8484              10 is max power; 0 is no flash.<wbr/> Linear
8485            </td>
8486
8487            <td class="entry_range">
8488              <p>0 - 10</p>
8489            </td>
8490
8491            <td class="entry_tags">
8492              <ul class="entry_tags">
8493                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8494              </ul>
8495            </td>
8496
8497          </tr>
8498          <tr class="entries_header">
8499            <th class="th_details" colspan="5">Details</th>
8500          </tr>
8501          <tr class="entry_cont">
8502            <td class="entry_details" colspan="5">
8503              <p>Power for snapshot may use a different scale than
8504for torch mode.<wbr/> Only one entry for torch mode will be
8505used</p>
8506            </td>
8507          </tr>
8508
8509
8510          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8511           <!-- end of entry -->
8512
8513
8514          <tr class="entry" id="controls_android.flash.firingTime">
8515            <td class="entry_name
8516             " rowspan="3">
8517              android.<wbr/>flash.<wbr/>firing<wbr/>Time
8518            </td>
8519            <td class="entry_type">
8520                <span class="entry_type_name">int64</span>
8521
8522              <span class="entry_type_visibility"> [system]</span>
8523
8524
8525
8526
8527
8528
8529            </td> <!-- entry_type -->
8530
8531            <td class="entry_description">
8532              <p>Firing time of flash relative to start of
8533exposure</p>
8534            </td>
8535
8536            <td class="entry_units">
8537              nanoseconds
8538            </td>
8539
8540            <td class="entry_range">
8541              <p>0-(exposure time-flash duration)</p>
8542            </td>
8543
8544            <td class="entry_tags">
8545              <ul class="entry_tags">
8546                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8547              </ul>
8548            </td>
8549
8550          </tr>
8551          <tr class="entries_header">
8552            <th class="th_details" colspan="5">Details</th>
8553          </tr>
8554          <tr class="entry_cont">
8555            <td class="entry_details" colspan="5">
8556              <p>Clamped to (0,<wbr/> exposure time - flash
8557duration).<wbr/></p>
8558            </td>
8559          </tr>
8560
8561
8562          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8563           <!-- end of entry -->
8564
8565
8566          <tr class="entry" id="controls_android.flash.mode">
8567            <td class="entry_name
8568             " rowspan="3">
8569              android.<wbr/>flash.<wbr/>mode
8570            </td>
8571            <td class="entry_type">
8572                <span class="entry_type_name entry_type_name_enum">byte</span>
8573
8574              <span class="entry_type_visibility"> [public]</span>
8575
8576
8577              <span class="entry_type_hwlevel">[legacy] </span>
8578
8579
8580
8581                <ul class="entry_type_enum">
8582                  <li>
8583                    <span class="entry_type_enum_name">OFF</span>
8584                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
8585                  </li>
8586                  <li>
8587                    <span class="entry_type_enum_name">SINGLE</span>
8588                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
8589for this capture.<wbr/></p></span>
8590                  </li>
8591                  <li>
8592                    <span class="entry_type_enum_name">TORCH</span>
8593                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
8594                  </li>
8595                </ul>
8596
8597            </td> <!-- entry_type -->
8598
8599            <td class="entry_description">
8600              <p>The desired mode for for the camera device's flash control.<wbr/></p>
8601            </td>
8602
8603            <td class="entry_units">
8604            </td>
8605
8606            <td class="entry_range">
8607            </td>
8608
8609            <td class="entry_tags">
8610              <ul class="entry_tags">
8611                  <li><a href="#tag_BC">BC</a></li>
8612              </ul>
8613            </td>
8614
8615          </tr>
8616          <tr class="entries_header">
8617            <th class="th_details" colspan="5">Details</th>
8618          </tr>
8619          <tr class="entry_cont">
8620            <td class="entry_details" colspan="5">
8621              <p>This control is only effective when flash unit is available
8622(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
8623<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/>
8624Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
8625ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
8626<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
8627<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
8628device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
8629control should be used along with auto-exposure (AE) precapture metering sequence
8630(<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>
8631<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
8632for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
8633<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>
8634            </td>
8635          </tr>
8636
8637
8638          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8639           <!-- end of entry -->
8640
8641
8642
8643      <!-- end of kind -->
8644      </tbody>
8645      <tr><td colspan="6" class="kind">static</td></tr>
8646
8647      <thead class="entries_header">
8648        <tr>
8649          <th class="th_name">Property Name</th>
8650          <th class="th_type">Type</th>
8651          <th class="th_description">Description</th>
8652          <th class="th_units">Units</th>
8653          <th class="th_range">Range</th>
8654          <th class="th_tags">Tags</th>
8655        </tr>
8656      </thead>
8657
8658      <tbody>
8659
8660
8661
8662
8663
8664
8665
8666
8667
8668
8669
8670
8671          <tr class="entry" id="static_android.flash.info.available">
8672            <td class="entry_name
8673             " rowspan="3">
8674              android.<wbr/>flash.<wbr/>info.<wbr/>available
8675            </td>
8676            <td class="entry_type">
8677                <span class="entry_type_name entry_type_name_enum">byte</span>
8678
8679              <span class="entry_type_visibility"> [public as boolean]</span>
8680
8681
8682              <span class="entry_type_hwlevel">[legacy] </span>
8683
8684
8685
8686                <ul class="entry_type_enum">
8687                  <li>
8688                    <span class="entry_type_enum_name">FALSE</span>
8689                  </li>
8690                  <li>
8691                    <span class="entry_type_enum_name">TRUE</span>
8692                  </li>
8693                </ul>
8694
8695            </td> <!-- entry_type -->
8696
8697            <td class="entry_description">
8698              <p>Whether this camera device has a
8699flash unit.<wbr/></p>
8700            </td>
8701
8702            <td class="entry_units">
8703            </td>
8704
8705            <td class="entry_range">
8706            </td>
8707
8708            <td class="entry_tags">
8709              <ul class="entry_tags">
8710                  <li><a href="#tag_BC">BC</a></li>
8711              </ul>
8712            </td>
8713
8714          </tr>
8715          <tr class="entries_header">
8716            <th class="th_details" colspan="5">Details</th>
8717          </tr>
8718          <tr class="entry_cont">
8719            <td class="entry_details" colspan="5">
8720              <p>Will be <code>false</code> if no flash is available.<wbr/></p>
8721<p>If there is no flash unit,<wbr/> none of the flash controls do
8722anything.<wbr/></p>
8723            </td>
8724          </tr>
8725
8726
8727          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8728           <!-- end of entry -->
8729
8730
8731          <tr class="entry" id="static_android.flash.info.chargeDuration">
8732            <td class="entry_name
8733             " rowspan="3">
8734              android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
8735            </td>
8736            <td class="entry_type">
8737                <span class="entry_type_name">int64</span>
8738
8739              <span class="entry_type_visibility"> [system]</span>
8740
8741
8742
8743
8744
8745
8746            </td> <!-- entry_type -->
8747
8748            <td class="entry_description">
8749              <p>Time taken before flash can fire
8750again</p>
8751            </td>
8752
8753            <td class="entry_units">
8754              nanoseconds
8755            </td>
8756
8757            <td class="entry_range">
8758              <p>0-1e9</p>
8759            </td>
8760
8761            <td class="entry_tags">
8762              <ul class="entry_tags">
8763                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8764              </ul>
8765            </td>
8766
8767          </tr>
8768          <tr class="entries_header">
8769            <th class="th_details" colspan="5">Details</th>
8770          </tr>
8771          <tr class="entry_cont">
8772            <td class="entry_details" colspan="5">
8773              <p>1 second too long/<wbr/>too short for recharge? Should
8774this be power-dependent?</p>
8775            </td>
8776          </tr>
8777
8778
8779          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8780           <!-- end of entry -->
8781
8782
8783
8784
8785
8786          <tr class="entry" id="static_android.flash.colorTemperature">
8787            <td class="entry_name
8788             " rowspan="1">
8789              android.<wbr/>flash.<wbr/>color<wbr/>Temperature
8790            </td>
8791            <td class="entry_type">
8792                <span class="entry_type_name">byte</span>
8793
8794              <span class="entry_type_visibility"> [system]</span>
8795
8796
8797
8798
8799
8800
8801            </td> <!-- entry_type -->
8802
8803            <td class="entry_description">
8804              <p>The x,<wbr/>y whitepoint of the
8805flash</p>
8806            </td>
8807
8808            <td class="entry_units">
8809              pair of floats
8810            </td>
8811
8812            <td class="entry_range">
8813              <p>0-1 for both</p>
8814            </td>
8815
8816            <td class="entry_tags">
8817              <ul class="entry_tags">
8818                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8819              </ul>
8820            </td>
8821
8822          </tr>
8823
8824
8825          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8826           <!-- end of entry -->
8827
8828
8829          <tr class="entry" id="static_android.flash.maxEnergy">
8830            <td class="entry_name
8831             " rowspan="1">
8832              android.<wbr/>flash.<wbr/>max<wbr/>Energy
8833            </td>
8834            <td class="entry_type">
8835                <span class="entry_type_name">byte</span>
8836
8837              <span class="entry_type_visibility"> [system]</span>
8838
8839
8840
8841
8842
8843
8844            </td> <!-- entry_type -->
8845
8846            <td class="entry_description">
8847              <p>Max energy output of the flash for a full
8848power single flash</p>
8849            </td>
8850
8851            <td class="entry_units">
8852              lumen-seconds
8853            </td>
8854
8855            <td class="entry_range">
8856              <p>&gt;= 0</p>
8857            </td>
8858
8859            <td class="entry_tags">
8860              <ul class="entry_tags">
8861                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8862              </ul>
8863            </td>
8864
8865          </tr>
8866
8867
8868          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8869           <!-- end of entry -->
8870
8871
8872
8873      <!-- end of kind -->
8874      </tbody>
8875      <tr><td colspan="6" class="kind">dynamic</td></tr>
8876
8877      <thead class="entries_header">
8878        <tr>
8879          <th class="th_name">Property Name</th>
8880          <th class="th_type">Type</th>
8881          <th class="th_description">Description</th>
8882          <th class="th_units">Units</th>
8883          <th class="th_range">Range</th>
8884          <th class="th_tags">Tags</th>
8885        </tr>
8886      </thead>
8887
8888      <tbody>
8889
8890
8891
8892
8893
8894
8895
8896
8897
8898
8899          <tr class="entry" id="dynamic_android.flash.firingPower">
8900            <td class="entry_name
8901             " rowspan="3">
8902              android.<wbr/>flash.<wbr/>firing<wbr/>Power
8903            </td>
8904            <td class="entry_type">
8905                <span class="entry_type_name">byte</span>
8906
8907              <span class="entry_type_visibility"> [system]</span>
8908
8909
8910
8911
8912
8913
8914            </td> <!-- entry_type -->
8915
8916            <td class="entry_description">
8917              <p>Power for flash firing/<wbr/>torch</p>
8918            </td>
8919
8920            <td class="entry_units">
8921              10 is max power; 0 is no flash.<wbr/> Linear
8922            </td>
8923
8924            <td class="entry_range">
8925              <p>0 - 10</p>
8926            </td>
8927
8928            <td class="entry_tags">
8929              <ul class="entry_tags">
8930                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8931              </ul>
8932            </td>
8933
8934          </tr>
8935          <tr class="entries_header">
8936            <th class="th_details" colspan="5">Details</th>
8937          </tr>
8938          <tr class="entry_cont">
8939            <td class="entry_details" colspan="5">
8940              <p>Power for snapshot may use a different scale than
8941for torch mode.<wbr/> Only one entry for torch mode will be
8942used</p>
8943            </td>
8944          </tr>
8945
8946
8947          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8948           <!-- end of entry -->
8949
8950
8951          <tr class="entry" id="dynamic_android.flash.firingTime">
8952            <td class="entry_name
8953             " rowspan="3">
8954              android.<wbr/>flash.<wbr/>firing<wbr/>Time
8955            </td>
8956            <td class="entry_type">
8957                <span class="entry_type_name">int64</span>
8958
8959              <span class="entry_type_visibility"> [system]</span>
8960
8961
8962
8963
8964
8965
8966            </td> <!-- entry_type -->
8967
8968            <td class="entry_description">
8969              <p>Firing time of flash relative to start of
8970exposure</p>
8971            </td>
8972
8973            <td class="entry_units">
8974              nanoseconds
8975            </td>
8976
8977            <td class="entry_range">
8978              <p>0-(exposure time-flash duration)</p>
8979            </td>
8980
8981            <td class="entry_tags">
8982              <ul class="entry_tags">
8983                  <li><a href="#tag_FUTURE">FUTURE</a></li>
8984              </ul>
8985            </td>
8986
8987          </tr>
8988          <tr class="entries_header">
8989            <th class="th_details" colspan="5">Details</th>
8990          </tr>
8991          <tr class="entry_cont">
8992            <td class="entry_details" colspan="5">
8993              <p>Clamped to (0,<wbr/> exposure time - flash
8994duration).<wbr/></p>
8995            </td>
8996          </tr>
8997
8998
8999          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9000           <!-- end of entry -->
9001
9002
9003          <tr class="entry" id="dynamic_android.flash.mode">
9004            <td class="entry_name
9005             " rowspan="3">
9006              android.<wbr/>flash.<wbr/>mode
9007            </td>
9008            <td class="entry_type">
9009                <span class="entry_type_name entry_type_name_enum">byte</span>
9010
9011              <span class="entry_type_visibility"> [public]</span>
9012
9013
9014              <span class="entry_type_hwlevel">[legacy] </span>
9015
9016
9017
9018                <ul class="entry_type_enum">
9019                  <li>
9020                    <span class="entry_type_enum_name">OFF</span>
9021                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
9022                  </li>
9023                  <li>
9024                    <span class="entry_type_enum_name">SINGLE</span>
9025                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
9026for this capture.<wbr/></p></span>
9027                  </li>
9028                  <li>
9029                    <span class="entry_type_enum_name">TORCH</span>
9030                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
9031                  </li>
9032                </ul>
9033
9034            </td> <!-- entry_type -->
9035
9036            <td class="entry_description">
9037              <p>The desired mode for for the camera device's flash control.<wbr/></p>
9038            </td>
9039
9040            <td class="entry_units">
9041            </td>
9042
9043            <td class="entry_range">
9044            </td>
9045
9046            <td class="entry_tags">
9047              <ul class="entry_tags">
9048                  <li><a href="#tag_BC">BC</a></li>
9049              </ul>
9050            </td>
9051
9052          </tr>
9053          <tr class="entries_header">
9054            <th class="th_details" colspan="5">Details</th>
9055          </tr>
9056          <tr class="entry_cont">
9057            <td class="entry_details" colspan="5">
9058              <p>This control is only effective when flash unit is available
9059(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
9060<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/>
9061Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
9062ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
9063<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
9064<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
9065device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
9066control should be used along with auto-exposure (AE) precapture metering sequence
9067(<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>
9068<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
9069for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
9070<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>
9071            </td>
9072          </tr>
9073
9074
9075          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9076           <!-- end of entry -->
9077
9078
9079          <tr class="entry" id="dynamic_android.flash.state">
9080            <td class="entry_name
9081             " rowspan="3">
9082              android.<wbr/>flash.<wbr/>state
9083            </td>
9084            <td class="entry_type">
9085                <span class="entry_type_name entry_type_name_enum">byte</span>
9086
9087              <span class="entry_type_visibility"> [public]</span>
9088
9089
9090              <span class="entry_type_hwlevel">[limited] </span>
9091
9092
9093
9094                <ul class="entry_type_enum">
9095                  <li>
9096                    <span class="entry_type_enum_name">UNAVAILABLE</span>
9097                    <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
9098                  </li>
9099                  <li>
9100                    <span class="entry_type_enum_name">CHARGING</span>
9101                    <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
9102                  </li>
9103                  <li>
9104                    <span class="entry_type_enum_name">READY</span>
9105                    <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
9106                  </li>
9107                  <li>
9108                    <span class="entry_type_enum_name">FIRED</span>
9109                    <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
9110                  </li>
9111                  <li>
9112                    <span class="entry_type_enum_name">PARTIAL</span>
9113                    <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
9114<p>This is usually due to the next or previous frame having
9115the flash fire,<wbr/> and the flash spilling into this capture
9116due to hardware limitations.<wbr/></p></span>
9117                  </li>
9118                </ul>
9119
9120            </td> <!-- entry_type -->
9121
9122            <td class="entry_description">
9123              <p>Current state of the flash
9124unit.<wbr/></p>
9125            </td>
9126
9127            <td class="entry_units">
9128            </td>
9129
9130            <td class="entry_range">
9131            </td>
9132
9133            <td class="entry_tags">
9134            </td>
9135
9136          </tr>
9137          <tr class="entries_header">
9138            <th class="th_details" colspan="5">Details</th>
9139          </tr>
9140          <tr class="entry_cont">
9141            <td class="entry_details" colspan="5">
9142              <p>When the camera device doesn't have flash unit
9143(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/>
9144Other states indicate the current flash status.<wbr/></p>
9145<p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
9146<ul>
9147<li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
9148<li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
9149   will always return FIRED.<wbr/></li>
9150<li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
9151   will always return FIRED.<wbr/></li>
9152</ul>
9153<p>In all other conditions the state will not be available on
9154LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
9155            </td>
9156          </tr>
9157
9158
9159          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9160           <!-- end of entry -->
9161
9162
9163
9164      <!-- end of kind -->
9165      </tbody>
9166
9167  <!-- end of section -->
9168  <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr>
9169
9170
9171      <tr><td colspan="6" class="kind">controls</td></tr>
9172
9173      <thead class="entries_header">
9174        <tr>
9175          <th class="th_name">Property Name</th>
9176          <th class="th_type">Type</th>
9177          <th class="th_description">Description</th>
9178          <th class="th_units">Units</th>
9179          <th class="th_range">Range</th>
9180          <th class="th_tags">Tags</th>
9181        </tr>
9182      </thead>
9183
9184      <tbody>
9185
9186
9187
9188
9189
9190
9191
9192
9193
9194
9195          <tr class="entry" id="controls_android.hotPixel.mode">
9196            <td class="entry_name
9197             " rowspan="3">
9198              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
9199            </td>
9200            <td class="entry_type">
9201                <span class="entry_type_name entry_type_name_enum">byte</span>
9202
9203              <span class="entry_type_visibility"> [public]</span>
9204
9205
9206
9207
9208
9209                <ul class="entry_type_enum">
9210                  <li>
9211                    <span class="entry_type_enum_name">OFF</span>
9212                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
9213<p>The frame rate must not be reduced relative to sensor raw output
9214for this option.<wbr/></p>
9215<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>
9216                  </li>
9217                  <li>
9218                    <span class="entry_type_enum_name">FAST</span>
9219                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
9220rate relative to sensor raw output.<wbr/></p>
9221<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>
9222                  </li>
9223                  <li>
9224                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
9225                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
9226of reducing frame rate relative to sensor raw output.<wbr/></p>
9227<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>
9228                  </li>
9229                </ul>
9230
9231            </td> <!-- entry_type -->
9232
9233            <td class="entry_description">
9234              <p>Operational mode for hot pixel correction.<wbr/></p>
9235            </td>
9236
9237            <td class="entry_units">
9238            </td>
9239
9240            <td class="entry_range">
9241              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
9242            </td>
9243
9244            <td class="entry_tags">
9245              <ul class="entry_tags">
9246                  <li><a href="#tag_V1">V1</a></li>
9247                  <li><a href="#tag_RAW">RAW</a></li>
9248              </ul>
9249            </td>
9250
9251          </tr>
9252          <tr class="entries_header">
9253            <th class="th_details" colspan="5">Details</th>
9254          </tr>
9255          <tr class="entry_cont">
9256            <td class="entry_details" colspan="5">
9257              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
9258that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
9259are stuck at an arbitrary value or are oversensitive).<wbr/></p>
9260            </td>
9261          </tr>
9262
9263
9264          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9265           <!-- end of entry -->
9266
9267
9268
9269      <!-- end of kind -->
9270      </tbody>
9271      <tr><td colspan="6" class="kind">static</td></tr>
9272
9273      <thead class="entries_header">
9274        <tr>
9275          <th class="th_name">Property Name</th>
9276          <th class="th_type">Type</th>
9277          <th class="th_description">Description</th>
9278          <th class="th_units">Units</th>
9279          <th class="th_range">Range</th>
9280          <th class="th_tags">Tags</th>
9281        </tr>
9282      </thead>
9283
9284      <tbody>
9285
9286
9287
9288
9289
9290
9291
9292
9293
9294
9295          <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
9296            <td class="entry_name
9297             " rowspan="5">
9298              android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
9299            </td>
9300            <td class="entry_type">
9301                <span class="entry_type_name">byte</span>
9302                <span class="entry_type_container">x</span>
9303
9304                <span class="entry_type_array">
9305                  n
9306                </span>
9307              <span class="entry_type_visibility"> [public as enumList]</span>
9308
9309
9310
9311
9312                <div class="entry_type_notes">list of enums</div>
9313
9314
9315            </td> <!-- entry_type -->
9316
9317            <td class="entry_description">
9318              <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
9319camera device.<wbr/></p>
9320            </td>
9321
9322            <td class="entry_units">
9323            </td>
9324
9325            <td class="entry_range">
9326              <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
9327            </td>
9328
9329            <td class="entry_tags">
9330              <ul class="entry_tags">
9331                  <li><a href="#tag_V1">V1</a></li>
9332                  <li><a href="#tag_RAW">RAW</a></li>
9333              </ul>
9334            </td>
9335
9336          </tr>
9337          <tr class="entries_header">
9338            <th class="th_details" colspan="5">Details</th>
9339          </tr>
9340          <tr class="entry_cont">
9341            <td class="entry_details" colspan="5">
9342              <p>FULL mode camera devices will always support FAST.<wbr/></p>
9343            </td>
9344          </tr>
9345
9346          <tr class="entries_header">
9347            <th class="th_details" colspan="5">HAL Implementation Details</th>
9348          </tr>
9349          <tr class="entry_cont">
9350            <td class="entry_details" colspan="5">
9351              <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
9352pixels than actual pixels on the camera sensor.<wbr/></p>
9353            </td>
9354          </tr>
9355
9356          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9357           <!-- end of entry -->
9358
9359
9360
9361      <!-- end of kind -->
9362      </tbody>
9363      <tr><td colspan="6" class="kind">dynamic</td></tr>
9364
9365      <thead class="entries_header">
9366        <tr>
9367          <th class="th_name">Property Name</th>
9368          <th class="th_type">Type</th>
9369          <th class="th_description">Description</th>
9370          <th class="th_units">Units</th>
9371          <th class="th_range">Range</th>
9372          <th class="th_tags">Tags</th>
9373        </tr>
9374      </thead>
9375
9376      <tbody>
9377
9378
9379
9380
9381
9382
9383
9384
9385
9386
9387          <tr class="entry" id="dynamic_android.hotPixel.mode">
9388            <td class="entry_name
9389             " rowspan="3">
9390              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
9391            </td>
9392            <td class="entry_type">
9393                <span class="entry_type_name entry_type_name_enum">byte</span>
9394
9395              <span class="entry_type_visibility"> [public]</span>
9396
9397
9398
9399
9400
9401                <ul class="entry_type_enum">
9402                  <li>
9403                    <span class="entry_type_enum_name">OFF</span>
9404                    <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
9405<p>The frame rate must not be reduced relative to sensor raw output
9406for this option.<wbr/></p>
9407<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>
9408                  </li>
9409                  <li>
9410                    <span class="entry_type_enum_name">FAST</span>
9411                    <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
9412rate relative to sensor raw output.<wbr/></p>
9413<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>
9414                  </li>
9415                  <li>
9416                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
9417                    <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
9418of reducing frame rate relative to sensor raw output.<wbr/></p>
9419<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>
9420                  </li>
9421                </ul>
9422
9423            </td> <!-- entry_type -->
9424
9425            <td class="entry_description">
9426              <p>Operational mode for hot pixel correction.<wbr/></p>
9427            </td>
9428
9429            <td class="entry_units">
9430            </td>
9431
9432            <td class="entry_range">
9433              <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
9434            </td>
9435
9436            <td class="entry_tags">
9437              <ul class="entry_tags">
9438                  <li><a href="#tag_V1">V1</a></li>
9439                  <li><a href="#tag_RAW">RAW</a></li>
9440              </ul>
9441            </td>
9442
9443          </tr>
9444          <tr class="entries_header">
9445            <th class="th_details" colspan="5">Details</th>
9446          </tr>
9447          <tr class="entry_cont">
9448            <td class="entry_details" colspan="5">
9449              <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
9450that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
9451are stuck at an arbitrary value or are oversensitive).<wbr/></p>
9452            </td>
9453          </tr>
9454
9455
9456          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9457           <!-- end of entry -->
9458
9459
9460
9461      <!-- end of kind -->
9462      </tbody>
9463
9464  <!-- end of section -->
9465  <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr>
9466
9467
9468      <tr><td colspan="6" class="kind">controls</td></tr>
9469
9470      <thead class="entries_header">
9471        <tr>
9472          <th class="th_name">Property Name</th>
9473          <th class="th_type">Type</th>
9474          <th class="th_description">Description</th>
9475          <th class="th_units">Units</th>
9476          <th class="th_range">Range</th>
9477          <th class="th_tags">Tags</th>
9478        </tr>
9479      </thead>
9480
9481      <tbody>
9482
9483
9484
9485
9486
9487
9488
9489
9490
9491
9492          <tr class="entry" id="controls_android.jpeg.gpsLocation">
9493            <td class="entry_name
9494             " rowspan="3">
9495              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
9496            </td>
9497            <td class="entry_type">
9498                <span class="entry_type_name">byte</span>
9499
9500              <span class="entry_type_visibility"> [public as location]</span>
9501
9502              <span class="entry_type_synthetic">[synthetic] </span>
9503
9504              <span class="entry_type_hwlevel">[legacy] </span>
9505
9506
9507
9508
9509            </td> <!-- entry_type -->
9510
9511            <td class="entry_description">
9512              <p>A location object to use when generating image GPS metadata.<wbr/></p>
9513            </td>
9514
9515            <td class="entry_units">
9516            </td>
9517
9518            <td class="entry_range">
9519            </td>
9520
9521            <td class="entry_tags">
9522            </td>
9523
9524          </tr>
9525          <tr class="entries_header">
9526            <th class="th_details" colspan="5">Details</th>
9527          </tr>
9528          <tr class="entry_cont">
9529            <td class="entry_details" colspan="5">
9530              <p>Setting a location object in a request will include the GPS coordinates of the location
9531into any JPEG images captured based on the request.<wbr/> These coordinates can then be
9532viewed by anyone who receives the JPEG image.<wbr/></p>
9533            </td>
9534          </tr>
9535
9536
9537          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9538           <!-- end of entry -->
9539
9540
9541          <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
9542            <td class="entry_name
9543             " rowspan="1">
9544              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
9545            </td>
9546            <td class="entry_type">
9547                <span class="entry_type_name">double</span>
9548                <span class="entry_type_container">x</span>
9549
9550                <span class="entry_type_array">
9551                  3
9552                </span>
9553              <span class="entry_type_visibility"> [hidden]</span>
9554
9555
9556              <span class="entry_type_hwlevel">[legacy] </span>
9557
9558
9559                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
9560
9561
9562            </td> <!-- entry_type -->
9563
9564            <td class="entry_description">
9565              <p>GPS coordinates to include in output JPEG
9566EXIF.<wbr/></p>
9567            </td>
9568
9569            <td class="entry_units">
9570            </td>
9571
9572            <td class="entry_range">
9573              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
9574            </td>
9575
9576            <td class="entry_tags">
9577              <ul class="entry_tags">
9578                  <li><a href="#tag_BC">BC</a></li>
9579              </ul>
9580            </td>
9581
9582          </tr>
9583
9584
9585          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9586           <!-- end of entry -->
9587
9588
9589          <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
9590            <td class="entry_name
9591             " rowspan="1">
9592              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
9593            </td>
9594            <td class="entry_type">
9595                <span class="entry_type_name">byte</span>
9596
9597              <span class="entry_type_visibility"> [hidden as string]</span>
9598
9599
9600              <span class="entry_type_hwlevel">[legacy] </span>
9601
9602
9603
9604
9605            </td> <!-- entry_type -->
9606
9607            <td class="entry_description">
9608              <p>32 characters describing GPS algorithm to
9609include in EXIF.<wbr/></p>
9610            </td>
9611
9612            <td class="entry_units">
9613              UTF-8 null-terminated string
9614            </td>
9615
9616            <td class="entry_range">
9617            </td>
9618
9619            <td class="entry_tags">
9620              <ul class="entry_tags">
9621                  <li><a href="#tag_BC">BC</a></li>
9622              </ul>
9623            </td>
9624
9625          </tr>
9626
9627
9628          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9629           <!-- end of entry -->
9630
9631
9632          <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
9633            <td class="entry_name
9634             " rowspan="1">
9635              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
9636            </td>
9637            <td class="entry_type">
9638                <span class="entry_type_name">int64</span>
9639
9640              <span class="entry_type_visibility"> [hidden]</span>
9641
9642
9643              <span class="entry_type_hwlevel">[legacy] </span>
9644
9645
9646
9647
9648            </td> <!-- entry_type -->
9649
9650            <td class="entry_description">
9651              <p>Time GPS fix was made to include in
9652EXIF.<wbr/></p>
9653            </td>
9654
9655            <td class="entry_units">
9656              UTC in seconds since January 1,<wbr/> 1970
9657            </td>
9658
9659            <td class="entry_range">
9660            </td>
9661
9662            <td class="entry_tags">
9663              <ul class="entry_tags">
9664                  <li><a href="#tag_BC">BC</a></li>
9665              </ul>
9666            </td>
9667
9668          </tr>
9669
9670
9671          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9672           <!-- end of entry -->
9673
9674
9675          <tr class="entry" id="controls_android.jpeg.orientation">
9676            <td class="entry_name
9677             " rowspan="3">
9678              android.<wbr/>jpeg.<wbr/>orientation
9679            </td>
9680            <td class="entry_type">
9681                <span class="entry_type_name">int32</span>
9682
9683              <span class="entry_type_visibility"> [public]</span>
9684
9685
9686              <span class="entry_type_hwlevel">[legacy] </span>
9687
9688
9689
9690
9691            </td> <!-- entry_type -->
9692
9693            <td class="entry_description">
9694              <p>The orientation for a JPEG image.<wbr/></p>
9695            </td>
9696
9697            <td class="entry_units">
9698              Degrees in multiples of 90
9699            </td>
9700
9701            <td class="entry_range">
9702              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
9703            </td>
9704
9705            <td class="entry_tags">
9706              <ul class="entry_tags">
9707                  <li><a href="#tag_BC">BC</a></li>
9708              </ul>
9709            </td>
9710
9711          </tr>
9712          <tr class="entries_header">
9713            <th class="th_details" colspan="5">Details</th>
9714          </tr>
9715          <tr class="entry_cont">
9716            <td class="entry_details" colspan="5">
9717              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
9718to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
9719upright.<wbr/></p>
9720<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
9721rotate the image data to match this orientation.<wbr/></p>
9722<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
9723by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
9724<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
9725sample code may be used:</p>
9726<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
9727    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
9728    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
9729
9730    //<wbr/> Round device orientation to a multiple of 90
9731    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
9732
9733    //<wbr/> Reverse device orientation for front-facing cameras
9734    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
9735    if (facingFront) deviceOrientation = -deviceOrientation;
9736
9737    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
9738    //<wbr/> the image upright relative to the device orientation
9739    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
9740
9741    return jpegOrientation;
9742}
9743</code></pre>
9744            </td>
9745          </tr>
9746
9747
9748          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9749           <!-- end of entry -->
9750
9751
9752          <tr class="entry" id="controls_android.jpeg.quality">
9753            <td class="entry_name
9754             " rowspan="3">
9755              android.<wbr/>jpeg.<wbr/>quality
9756            </td>
9757            <td class="entry_type">
9758                <span class="entry_type_name">byte</span>
9759
9760              <span class="entry_type_visibility"> [public]</span>
9761
9762
9763              <span class="entry_type_hwlevel">[legacy] </span>
9764
9765
9766
9767
9768            </td> <!-- entry_type -->
9769
9770            <td class="entry_description">
9771              <p>Compression quality of the final JPEG
9772image.<wbr/></p>
9773            </td>
9774
9775            <td class="entry_units">
9776            </td>
9777
9778            <td class="entry_range">
9779              <p>1-100; larger is higher quality</p>
9780            </td>
9781
9782            <td class="entry_tags">
9783              <ul class="entry_tags">
9784                  <li><a href="#tag_BC">BC</a></li>
9785              </ul>
9786            </td>
9787
9788          </tr>
9789          <tr class="entries_header">
9790            <th class="th_details" colspan="5">Details</th>
9791          </tr>
9792          <tr class="entry_cont">
9793            <td class="entry_details" colspan="5">
9794              <p>85-95 is typical usage range.<wbr/></p>
9795            </td>
9796          </tr>
9797
9798
9799          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9800           <!-- end of entry -->
9801
9802
9803          <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
9804            <td class="entry_name
9805             " rowspan="1">
9806              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
9807            </td>
9808            <td class="entry_type">
9809                <span class="entry_type_name">byte</span>
9810
9811              <span class="entry_type_visibility"> [public]</span>
9812
9813
9814              <span class="entry_type_hwlevel">[legacy] </span>
9815
9816
9817
9818
9819            </td> <!-- entry_type -->
9820
9821            <td class="entry_description">
9822              <p>Compression quality of JPEG
9823thumbnail.<wbr/></p>
9824            </td>
9825
9826            <td class="entry_units">
9827            </td>
9828
9829            <td class="entry_range">
9830              <p>1-100; larger is higher quality</p>
9831            </td>
9832
9833            <td class="entry_tags">
9834              <ul class="entry_tags">
9835                  <li><a href="#tag_BC">BC</a></li>
9836              </ul>
9837            </td>
9838
9839          </tr>
9840
9841
9842          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9843           <!-- end of entry -->
9844
9845
9846          <tr class="entry" id="controls_android.jpeg.thumbnailSize">
9847            <td class="entry_name
9848             " rowspan="5">
9849              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
9850            </td>
9851            <td class="entry_type">
9852                <span class="entry_type_name">int32</span>
9853                <span class="entry_type_container">x</span>
9854
9855                <span class="entry_type_array">
9856                  2
9857                </span>
9858              <span class="entry_type_visibility"> [public as size]</span>
9859
9860
9861              <span class="entry_type_hwlevel">[legacy] </span>
9862
9863
9864
9865
9866            </td> <!-- entry_type -->
9867
9868            <td class="entry_description">
9869              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
9870            </td>
9871
9872            <td class="entry_units">
9873            </td>
9874
9875            <td class="entry_range">
9876              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
9877            </td>
9878
9879            <td class="entry_tags">
9880              <ul class="entry_tags">
9881                  <li><a href="#tag_BC">BC</a></li>
9882              </ul>
9883            </td>
9884
9885          </tr>
9886          <tr class="entries_header">
9887            <th class="th_details" colspan="5">Details</th>
9888          </tr>
9889          <tr class="entry_cont">
9890            <td class="entry_details" colspan="5">
9891              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
9892but the captured JPEG will still be a valid image.<wbr/></p>
9893<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
9894should have the same aspect ratio as the main JPEG output.<wbr/></p>
9895<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
9896ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
9897For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
989816:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
9899generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
9900Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
9901            </td>
9902          </tr>
9903
9904          <tr class="entries_header">
9905            <th class="th_details" colspan="5">HAL Implementation Details</th>
9906          </tr>
9907          <tr class="entry_cont">
9908            <td class="entry_details" colspan="5">
9909              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
9910The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
9911The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
9912thumbnail image cropping.<wbr/></p>
9913            </td>
9914          </tr>
9915
9916          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9917           <!-- end of entry -->
9918
9919
9920
9921      <!-- end of kind -->
9922      </tbody>
9923      <tr><td colspan="6" class="kind">static</td></tr>
9924
9925      <thead class="entries_header">
9926        <tr>
9927          <th class="th_name">Property Name</th>
9928          <th class="th_type">Type</th>
9929          <th class="th_description">Description</th>
9930          <th class="th_units">Units</th>
9931          <th class="th_range">Range</th>
9932          <th class="th_tags">Tags</th>
9933        </tr>
9934      </thead>
9935
9936      <tbody>
9937
9938
9939
9940
9941
9942
9943
9944
9945
9946
9947          <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
9948            <td class="entry_name
9949             " rowspan="3">
9950              android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
9951            </td>
9952            <td class="entry_type">
9953                <span class="entry_type_name">int32</span>
9954                <span class="entry_type_container">x</span>
9955
9956                <span class="entry_type_array">
9957                  2 x n
9958                </span>
9959              <span class="entry_type_visibility"> [public as size]</span>
9960
9961
9962              <span class="entry_type_hwlevel">[legacy] </span>
9963
9964
9965
9966
9967            </td> <!-- entry_type -->
9968
9969            <td class="entry_description">
9970              <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
9971camera device.<wbr/></p>
9972            </td>
9973
9974            <td class="entry_units">
9975            </td>
9976
9977            <td class="entry_range">
9978            </td>
9979
9980            <td class="entry_tags">
9981              <ul class="entry_tags">
9982                  <li><a href="#tag_BC">BC</a></li>
9983              </ul>
9984            </td>
9985
9986          </tr>
9987          <tr class="entries_header">
9988            <th class="th_details" colspan="5">Details</th>
9989          </tr>
9990          <tr class="entry_cont">
9991            <td class="entry_details" colspan="5">
9992              <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
9993thumbnail should be generated.<wbr/></p>
9994<p>Below condiditions will be satisfied for this size list:</p>
9995<ul>
9996<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
9997If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
9998<li>The aspect ratio of the largest thumbnail size will be same as the
9999aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
10000The largest size is defined as the size that has the largest pixel area
10001in a given size list.<wbr/></li>
10002<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
10003one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
10004and vice versa.<wbr/></li>
10005<li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
10006</ul>
10007            </td>
10008          </tr>
10009
10010
10011          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10012           <!-- end of entry -->
10013
10014
10015          <tr class="entry" id="static_android.jpeg.maxSize">
10016            <td class="entry_name
10017             " rowspan="3">
10018              android.<wbr/>jpeg.<wbr/>max<wbr/>Size
10019            </td>
10020            <td class="entry_type">
10021                <span class="entry_type_name">int32</span>
10022
10023              <span class="entry_type_visibility"> [system]</span>
10024
10025
10026
10027
10028
10029
10030            </td> <!-- entry_type -->
10031
10032            <td class="entry_description">
10033              <p>Maximum size in bytes for the compressed
10034JPEG buffer</p>
10035            </td>
10036
10037            <td class="entry_units">
10038            </td>
10039
10040            <td class="entry_range">
10041              <p>Must be large enough to fit any JPEG produced by
10042the camera</p>
10043            </td>
10044
10045            <td class="entry_tags">
10046            </td>
10047
10048          </tr>
10049          <tr class="entries_header">
10050            <th class="th_details" colspan="5">Details</th>
10051          </tr>
10052          <tr class="entry_cont">
10053            <td class="entry_details" colspan="5">
10054              <p>This is used for sizing the gralloc buffers for
10055JPEG</p>
10056            </td>
10057          </tr>
10058
10059
10060          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10061           <!-- end of entry -->
10062
10063
10064
10065      <!-- end of kind -->
10066      </tbody>
10067      <tr><td colspan="6" class="kind">dynamic</td></tr>
10068
10069      <thead class="entries_header">
10070        <tr>
10071          <th class="th_name">Property Name</th>
10072          <th class="th_type">Type</th>
10073          <th class="th_description">Description</th>
10074          <th class="th_units">Units</th>
10075          <th class="th_range">Range</th>
10076          <th class="th_tags">Tags</th>
10077        </tr>
10078      </thead>
10079
10080      <tbody>
10081
10082
10083
10084
10085
10086
10087
10088
10089
10090
10091          <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
10092            <td class="entry_name
10093             " rowspan="3">
10094              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
10095            </td>
10096            <td class="entry_type">
10097                <span class="entry_type_name">byte</span>
10098
10099              <span class="entry_type_visibility"> [public as location]</span>
10100
10101              <span class="entry_type_synthetic">[synthetic] </span>
10102
10103              <span class="entry_type_hwlevel">[legacy] </span>
10104
10105
10106
10107
10108            </td> <!-- entry_type -->
10109
10110            <td class="entry_description">
10111              <p>A location object to use when generating image GPS metadata.<wbr/></p>
10112            </td>
10113
10114            <td class="entry_units">
10115            </td>
10116
10117            <td class="entry_range">
10118            </td>
10119
10120            <td class="entry_tags">
10121            </td>
10122
10123          </tr>
10124          <tr class="entries_header">
10125            <th class="th_details" colspan="5">Details</th>
10126          </tr>
10127          <tr class="entry_cont">
10128            <td class="entry_details" colspan="5">
10129              <p>Setting a location object in a request will include the GPS coordinates of the location
10130into any JPEG images captured based on the request.<wbr/> These coordinates can then be
10131viewed by anyone who receives the JPEG image.<wbr/></p>
10132            </td>
10133          </tr>
10134
10135
10136          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10137           <!-- end of entry -->
10138
10139
10140          <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
10141            <td class="entry_name
10142             " rowspan="1">
10143              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
10144            </td>
10145            <td class="entry_type">
10146                <span class="entry_type_name">double</span>
10147                <span class="entry_type_container">x</span>
10148
10149                <span class="entry_type_array">
10150                  3
10151                </span>
10152              <span class="entry_type_visibility"> [hidden]</span>
10153
10154
10155              <span class="entry_type_hwlevel">[legacy] </span>
10156
10157
10158                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
10159
10160
10161            </td> <!-- entry_type -->
10162
10163            <td class="entry_description">
10164              <p>GPS coordinates to include in output JPEG
10165EXIF.<wbr/></p>
10166            </td>
10167
10168            <td class="entry_units">
10169            </td>
10170
10171            <td class="entry_range">
10172              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
10173            </td>
10174
10175            <td class="entry_tags">
10176              <ul class="entry_tags">
10177                  <li><a href="#tag_BC">BC</a></li>
10178              </ul>
10179            </td>
10180
10181          </tr>
10182
10183
10184          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10185           <!-- end of entry -->
10186
10187
10188          <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
10189            <td class="entry_name
10190             " rowspan="1">
10191              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
10192            </td>
10193            <td class="entry_type">
10194                <span class="entry_type_name">byte</span>
10195
10196              <span class="entry_type_visibility"> [hidden as string]</span>
10197
10198
10199              <span class="entry_type_hwlevel">[legacy] </span>
10200
10201
10202
10203
10204            </td> <!-- entry_type -->
10205
10206            <td class="entry_description">
10207              <p>32 characters describing GPS algorithm to
10208include in EXIF.<wbr/></p>
10209            </td>
10210
10211            <td class="entry_units">
10212              UTF-8 null-terminated string
10213            </td>
10214
10215            <td class="entry_range">
10216            </td>
10217
10218            <td class="entry_tags">
10219              <ul class="entry_tags">
10220                  <li><a href="#tag_BC">BC</a></li>
10221              </ul>
10222            </td>
10223
10224          </tr>
10225
10226
10227          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10228           <!-- end of entry -->
10229
10230
10231          <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
10232            <td class="entry_name
10233             " rowspan="1">
10234              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
10235            </td>
10236            <td class="entry_type">
10237                <span class="entry_type_name">int64</span>
10238
10239              <span class="entry_type_visibility"> [hidden]</span>
10240
10241
10242              <span class="entry_type_hwlevel">[legacy] </span>
10243
10244
10245
10246
10247            </td> <!-- entry_type -->
10248
10249            <td class="entry_description">
10250              <p>Time GPS fix was made to include in
10251EXIF.<wbr/></p>
10252            </td>
10253
10254            <td class="entry_units">
10255              UTC in seconds since January 1,<wbr/> 1970
10256            </td>
10257
10258            <td class="entry_range">
10259            </td>
10260
10261            <td class="entry_tags">
10262              <ul class="entry_tags">
10263                  <li><a href="#tag_BC">BC</a></li>
10264              </ul>
10265            </td>
10266
10267          </tr>
10268
10269
10270          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10271           <!-- end of entry -->
10272
10273
10274          <tr class="entry" id="dynamic_android.jpeg.orientation">
10275            <td class="entry_name
10276             " rowspan="3">
10277              android.<wbr/>jpeg.<wbr/>orientation
10278            </td>
10279            <td class="entry_type">
10280                <span class="entry_type_name">int32</span>
10281
10282              <span class="entry_type_visibility"> [public]</span>
10283
10284
10285              <span class="entry_type_hwlevel">[legacy] </span>
10286
10287
10288
10289
10290            </td> <!-- entry_type -->
10291
10292            <td class="entry_description">
10293              <p>The orientation for a JPEG image.<wbr/></p>
10294            </td>
10295
10296            <td class="entry_units">
10297              Degrees in multiples of 90
10298            </td>
10299
10300            <td class="entry_range">
10301              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
10302            </td>
10303
10304            <td class="entry_tags">
10305              <ul class="entry_tags">
10306                  <li><a href="#tag_BC">BC</a></li>
10307              </ul>
10308            </td>
10309
10310          </tr>
10311          <tr class="entries_header">
10312            <th class="th_details" colspan="5">Details</th>
10313          </tr>
10314          <tr class="entry_cont">
10315            <td class="entry_details" colspan="5">
10316              <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
10317to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
10318upright.<wbr/></p>
10319<p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
10320rotate the image data to match this orientation.<wbr/></p>
10321<p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
10322by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
10323<p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
10324sample code may be used:</p>
10325<pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
10326    if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
10327    int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
10328
10329    //<wbr/> Round device orientation to a multiple of 90
10330    deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
10331
10332    //<wbr/> Reverse device orientation for front-facing cameras
10333    boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
10334    if (facingFront) deviceOrientation = -deviceOrientation;
10335
10336    //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
10337    //<wbr/> the image upright relative to the device orientation
10338    int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
10339
10340    return jpegOrientation;
10341}
10342</code></pre>
10343            </td>
10344          </tr>
10345
10346
10347          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10348           <!-- end of entry -->
10349
10350
10351          <tr class="entry" id="dynamic_android.jpeg.quality">
10352            <td class="entry_name
10353             " rowspan="3">
10354              android.<wbr/>jpeg.<wbr/>quality
10355            </td>
10356            <td class="entry_type">
10357                <span class="entry_type_name">byte</span>
10358
10359              <span class="entry_type_visibility"> [public]</span>
10360
10361
10362              <span class="entry_type_hwlevel">[legacy] </span>
10363
10364
10365
10366
10367            </td> <!-- entry_type -->
10368
10369            <td class="entry_description">
10370              <p>Compression quality of the final JPEG
10371image.<wbr/></p>
10372            </td>
10373
10374            <td class="entry_units">
10375            </td>
10376
10377            <td class="entry_range">
10378              <p>1-100; larger is higher quality</p>
10379            </td>
10380
10381            <td class="entry_tags">
10382              <ul class="entry_tags">
10383                  <li><a href="#tag_BC">BC</a></li>
10384              </ul>
10385            </td>
10386
10387          </tr>
10388          <tr class="entries_header">
10389            <th class="th_details" colspan="5">Details</th>
10390          </tr>
10391          <tr class="entry_cont">
10392            <td class="entry_details" colspan="5">
10393              <p>85-95 is typical usage range.<wbr/></p>
10394            </td>
10395          </tr>
10396
10397
10398          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10399           <!-- end of entry -->
10400
10401
10402          <tr class="entry" id="dynamic_android.jpeg.size">
10403            <td class="entry_name
10404             " rowspan="3">
10405              android.<wbr/>jpeg.<wbr/>size
10406            </td>
10407            <td class="entry_type">
10408                <span class="entry_type_name">int32</span>
10409
10410              <span class="entry_type_visibility"> [system]</span>
10411
10412
10413
10414
10415
10416
10417            </td> <!-- entry_type -->
10418
10419            <td class="entry_description">
10420              <p>The size of the compressed JPEG image,<wbr/> in
10421bytes</p>
10422            </td>
10423
10424            <td class="entry_units">
10425            </td>
10426
10427            <td class="entry_range">
10428              <p>&gt;= 0</p>
10429            </td>
10430
10431            <td class="entry_tags">
10432              <ul class="entry_tags">
10433                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10434              </ul>
10435            </td>
10436
10437          </tr>
10438          <tr class="entries_header">
10439            <th class="th_details" colspan="5">Details</th>
10440          </tr>
10441          <tr class="entry_cont">
10442            <td class="entry_details" colspan="5">
10443              <p>If no JPEG output is produced for the request,<wbr/>
10444this must be 0.<wbr/></p>
10445<p>Otherwise,<wbr/> this describes the real size of the compressed
10446JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
10447if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
10448has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
10449the JPEG stream will be 1000000 bytes,<wbr/> of which the first
10450500000 make up the real data.<wbr/></p>
10451            </td>
10452          </tr>
10453
10454
10455          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10456           <!-- end of entry -->
10457
10458
10459          <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
10460            <td class="entry_name
10461             " rowspan="1">
10462              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
10463            </td>
10464            <td class="entry_type">
10465                <span class="entry_type_name">byte</span>
10466
10467              <span class="entry_type_visibility"> [public]</span>
10468
10469
10470              <span class="entry_type_hwlevel">[legacy] </span>
10471
10472
10473
10474
10475            </td> <!-- entry_type -->
10476
10477            <td class="entry_description">
10478              <p>Compression quality of JPEG
10479thumbnail.<wbr/></p>
10480            </td>
10481
10482            <td class="entry_units">
10483            </td>
10484
10485            <td class="entry_range">
10486              <p>1-100; larger is higher quality</p>
10487            </td>
10488
10489            <td class="entry_tags">
10490              <ul class="entry_tags">
10491                  <li><a href="#tag_BC">BC</a></li>
10492              </ul>
10493            </td>
10494
10495          </tr>
10496
10497
10498          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10499           <!-- end of entry -->
10500
10501
10502          <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
10503            <td class="entry_name
10504             " rowspan="5">
10505              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
10506            </td>
10507            <td class="entry_type">
10508                <span class="entry_type_name">int32</span>
10509                <span class="entry_type_container">x</span>
10510
10511                <span class="entry_type_array">
10512                  2
10513                </span>
10514              <span class="entry_type_visibility"> [public as size]</span>
10515
10516
10517              <span class="entry_type_hwlevel">[legacy] </span>
10518
10519
10520
10521
10522            </td> <!-- entry_type -->
10523
10524            <td class="entry_description">
10525              <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
10526            </td>
10527
10528            <td class="entry_units">
10529            </td>
10530
10531            <td class="entry_range">
10532              <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
10533            </td>
10534
10535            <td class="entry_tags">
10536              <ul class="entry_tags">
10537                  <li><a href="#tag_BC">BC</a></li>
10538              </ul>
10539            </td>
10540
10541          </tr>
10542          <tr class="entries_header">
10543            <th class="th_details" colspan="5">Details</th>
10544          </tr>
10545          <tr class="entry_cont">
10546            <td class="entry_details" colspan="5">
10547              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
10548but the captured JPEG will still be a valid image.<wbr/></p>
10549<p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
10550should have the same aspect ratio as the main JPEG output.<wbr/></p>
10551<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
10552ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
10553For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
1055416:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
10555generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
10556Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
10557            </td>
10558          </tr>
10559
10560          <tr class="entries_header">
10561            <th class="th_details" colspan="5">HAL Implementation Details</th>
10562          </tr>
10563          <tr class="entry_cont">
10564            <td class="entry_details" colspan="5">
10565              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
10566The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
10567The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
10568thumbnail image cropping.<wbr/></p>
10569            </td>
10570          </tr>
10571
10572          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10573           <!-- end of entry -->
10574
10575
10576
10577      <!-- end of kind -->
10578      </tbody>
10579
10580  <!-- end of section -->
10581  <tr><td colspan="6" id="section_lens" class="section">lens</td></tr>
10582
10583
10584      <tr><td colspan="6" class="kind">controls</td></tr>
10585
10586      <thead class="entries_header">
10587        <tr>
10588          <th class="th_name">Property Name</th>
10589          <th class="th_type">Type</th>
10590          <th class="th_description">Description</th>
10591          <th class="th_units">Units</th>
10592          <th class="th_range">Range</th>
10593          <th class="th_tags">Tags</th>
10594        </tr>
10595      </thead>
10596
10597      <tbody>
10598
10599
10600
10601
10602
10603
10604
10605
10606
10607
10608          <tr class="entry" id="controls_android.lens.aperture">
10609            <td class="entry_name
10610             " rowspan="3">
10611              android.<wbr/>lens.<wbr/>aperture
10612            </td>
10613            <td class="entry_type">
10614                <span class="entry_type_name">float</span>
10615
10616              <span class="entry_type_visibility"> [public]</span>
10617
10618
10619              <span class="entry_type_hwlevel">[full] </span>
10620
10621
10622
10623
10624            </td> <!-- entry_type -->
10625
10626            <td class="entry_description">
10627              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
10628effective aperture diameter.<wbr/></p>
10629            </td>
10630
10631            <td class="entry_units">
10632              The f-number (f/<wbr/>N)
10633            </td>
10634
10635            <td class="entry_range">
10636              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
10637            </td>
10638
10639            <td class="entry_tags">
10640              <ul class="entry_tags">
10641                  <li><a href="#tag_V1">V1</a></li>
10642              </ul>
10643            </td>
10644
10645          </tr>
10646          <tr class="entries_header">
10647            <th class="th_details" colspan="5">Details</th>
10648          </tr>
10649          <tr class="entry_cont">
10650            <td class="entry_details" colspan="5">
10651              <p>Setting this value is only supported on the camera devices that have a variable
10652aperture lens.<wbr/></p>
10653<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
10654this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
10655<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>
10656to achieve manual exposure control.<wbr/></p>
10657<p>The requested aperture value may take several frames to reach the
10658requested value; the camera device will report the current (intermediate)
10659aperture size in capture result metadata while the aperture is changing.<wbr/>
10660While 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>
10661<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
10662the ON modes,<wbr/> this will be overridden by the camera device
10663auto-exposure algorithm,<wbr/> the overridden values are then provided
10664back to the user in the corresponding result.<wbr/></p>
10665            </td>
10666          </tr>
10667
10668
10669          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10670           <!-- end of entry -->
10671
10672
10673          <tr class="entry" id="controls_android.lens.filterDensity">
10674            <td class="entry_name
10675             " rowspan="3">
10676              android.<wbr/>lens.<wbr/>filter<wbr/>Density
10677            </td>
10678            <td class="entry_type">
10679                <span class="entry_type_name">float</span>
10680
10681              <span class="entry_type_visibility"> [public]</span>
10682
10683
10684              <span class="entry_type_hwlevel">[full] </span>
10685
10686
10687
10688
10689            </td> <!-- entry_type -->
10690
10691            <td class="entry_description">
10692              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
10693            </td>
10694
10695            <td class="entry_units">
10696              Exposure Value (EV)
10697            </td>
10698
10699            <td class="entry_range">
10700              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
10701            </td>
10702
10703            <td class="entry_tags">
10704              <ul class="entry_tags">
10705                  <li><a href="#tag_V1">V1</a></li>
10706              </ul>
10707            </td>
10708
10709          </tr>
10710          <tr class="entries_header">
10711            <th class="th_details" colspan="5">Details</th>
10712          </tr>
10713          <tr class="entry_cont">
10714            <td class="entry_details" colspan="5">
10715              <p>This control will not be supported on most camera devices.<wbr/></p>
10716<p>Lens filters are typically used to lower the amount of light the
10717sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
10718step is the standard logarithmic representation,<wbr/> which are
10719non-negative,<wbr/> and inversely proportional to the amount of light
10720hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
10721in no reduction of the incoming light,<wbr/> and setting this to 2 would
10722mean that the filter is set to reduce incoming light by two stops
10723(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
10724<p>It may take several frames before the lens filter density changes
10725to the requested value.<wbr/> While the filter density is still changing,<wbr/>
10726<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
10727            </td>
10728          </tr>
10729
10730
10731          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10732           <!-- end of entry -->
10733
10734
10735          <tr class="entry" id="controls_android.lens.focalLength">
10736            <td class="entry_name
10737             " rowspan="3">
10738              android.<wbr/>lens.<wbr/>focal<wbr/>Length
10739            </td>
10740            <td class="entry_type">
10741                <span class="entry_type_name">float</span>
10742
10743              <span class="entry_type_visibility"> [public]</span>
10744
10745
10746              <span class="entry_type_hwlevel">[legacy] </span>
10747
10748
10749
10750
10751            </td> <!-- entry_type -->
10752
10753            <td class="entry_description">
10754              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
10755            </td>
10756
10757            <td class="entry_units">
10758              Millimeters
10759            </td>
10760
10761            <td class="entry_range">
10762              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
10763            </td>
10764
10765            <td class="entry_tags">
10766              <ul class="entry_tags">
10767                  <li><a href="#tag_V1">V1</a></li>
10768              </ul>
10769            </td>
10770
10771          </tr>
10772          <tr class="entries_header">
10773            <th class="th_details" colspan="5">Details</th>
10774          </tr>
10775          <tr class="entry_cont">
10776            <td class="entry_details" colspan="5">
10777              <p>This setting controls the physical focal length of the camera
10778device's lens.<wbr/> Changing the focal length changes the field of
10779view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
10780<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
10781setting won't be applied instantaneously,<wbr/> and it may take several
10782frames before the lens can change to the requested focal length.<wbr/>
10783While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
10784be set to MOVING.<wbr/></p>
10785<p>Optical zoom will not be supported on most devices.<wbr/></p>
10786            </td>
10787          </tr>
10788
10789
10790          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10791           <!-- end of entry -->
10792
10793
10794          <tr class="entry" id="controls_android.lens.focusDistance">
10795            <td class="entry_name
10796             " rowspan="3">
10797              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
10798            </td>
10799            <td class="entry_type">
10800                <span class="entry_type_name">float</span>
10801
10802              <span class="entry_type_visibility"> [public]</span>
10803
10804
10805              <span class="entry_type_hwlevel">[full] </span>
10806
10807
10808
10809
10810            </td> <!-- entry_type -->
10811
10812            <td class="entry_description">
10813              <p>Desired distance to plane of sharpest focus,<wbr/>
10814measured from frontmost surface of the lens.<wbr/></p>
10815            </td>
10816
10817            <td class="entry_units">
10818              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
10819            </td>
10820
10821            <td class="entry_range">
10822              <p>&gt;= 0</p>
10823            </td>
10824
10825            <td class="entry_tags">
10826              <ul class="entry_tags">
10827                  <li><a href="#tag_BC">BC</a></li>
10828                  <li><a href="#tag_V1">V1</a></li>
10829              </ul>
10830            </td>
10831
10832          </tr>
10833          <tr class="entries_header">
10834            <th class="th_details" colspan="5">Details</th>
10835          </tr>
10836          <tr class="entry_cont">
10837            <td class="entry_details" colspan="5">
10838              <p>This control can be used for setting manual focus,<wbr/> on devices that support
10839the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
10840<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
10841<p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
10842<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>
10843<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
10844instantaneously,<wbr/> and it may take several frames before the lens
10845can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
10846<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
10847<p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
10848for infinity focus.<wbr/></p>
10849            </td>
10850          </tr>
10851
10852
10853          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10854           <!-- end of entry -->
10855
10856
10857          <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
10858            <td class="entry_name
10859             " rowspan="3">
10860              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
10861            </td>
10862            <td class="entry_type">
10863                <span class="entry_type_name entry_type_name_enum">byte</span>
10864
10865              <span class="entry_type_visibility"> [public]</span>
10866
10867
10868              <span class="entry_type_hwlevel">[limited] </span>
10869
10870
10871
10872                <ul class="entry_type_enum">
10873                  <li>
10874                    <span class="entry_type_enum_name">OFF</span>
10875                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
10876                  </li>
10877                  <li>
10878                    <span class="entry_type_enum_name">ON</span>
10879                    <span class="entry_type_enum_optional">[optional]</span>
10880                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
10881                  </li>
10882                </ul>
10883
10884            </td> <!-- entry_type -->
10885
10886            <td class="entry_description">
10887              <p>Sets whether the camera device uses optical image stabilization (OIS)
10888when capturing images.<wbr/></p>
10889            </td>
10890
10891            <td class="entry_units">
10892            </td>
10893
10894            <td class="entry_range">
10895              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
10896            </td>
10897
10898            <td class="entry_tags">
10899              <ul class="entry_tags">
10900                  <li><a href="#tag_V1">V1</a></li>
10901              </ul>
10902            </td>
10903
10904          </tr>
10905          <tr class="entries_header">
10906            <th class="th_details" colspan="5">Details</th>
10907          </tr>
10908          <tr class="entry_cont">
10909            <td class="entry_details" colspan="5">
10910              <p>OIS is used to compensate for motion blur due to small
10911movements of the camera during capture.<wbr/> Unlike digital image
10912stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
10913makes use of mechanical elements to stabilize the camera
10914sensor,<wbr/> and thus allows for longer exposure times before
10915camera shake becomes apparent.<wbr/></p>
10916<p>Switching between different optical stabilization modes may take several
10917frames to initialize,<wbr/> the camera device will report the current mode in
10918capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
10919optical stabilization modes in the first several capture results may still
10920be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
10921<p>If a camera device supports both OIS and digital image stabilization
10922(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
10923interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
10924<p>Not all devices will support OIS; see
10925<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
10926available controls.<wbr/></p>
10927            </td>
10928          </tr>
10929
10930
10931          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10932           <!-- end of entry -->
10933
10934
10935
10936      <!-- end of kind -->
10937      </tbody>
10938      <tr><td colspan="6" class="kind">static</td></tr>
10939
10940      <thead class="entries_header">
10941        <tr>
10942          <th class="th_name">Property Name</th>
10943          <th class="th_type">Type</th>
10944          <th class="th_description">Description</th>
10945          <th class="th_units">Units</th>
10946          <th class="th_range">Range</th>
10947          <th class="th_tags">Tags</th>
10948        </tr>
10949      </thead>
10950
10951      <tbody>
10952
10953
10954
10955
10956
10957
10958
10959
10960
10961
10962
10963
10964          <tr class="entry" id="static_android.lens.info.availableApertures">
10965            <td class="entry_name
10966             " rowspan="3">
10967              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
10968            </td>
10969            <td class="entry_type">
10970                <span class="entry_type_name">float</span>
10971                <span class="entry_type_container">x</span>
10972
10973                <span class="entry_type_array">
10974                  n
10975                </span>
10976              <span class="entry_type_visibility"> [public]</span>
10977
10978
10979              <span class="entry_type_hwlevel">[full] </span>
10980
10981
10982
10983
10984            </td> <!-- entry_type -->
10985
10986            <td class="entry_description">
10987              <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
10988supported by this camera device.<wbr/></p>
10989            </td>
10990
10991            <td class="entry_units">
10992              The aperture f-number
10993            </td>
10994
10995            <td class="entry_range">
10996            </td>
10997
10998            <td class="entry_tags">
10999              <ul class="entry_tags">
11000                  <li><a href="#tag_V1">V1</a></li>
11001              </ul>
11002            </td>
11003
11004          </tr>
11005          <tr class="entries_header">
11006            <th class="th_details" colspan="5">Details</th>
11007          </tr>
11008          <tr class="entry_cont">
11009            <td class="entry_details" colspan="5">
11010              <p>If the camera device doesn't support a variable lens aperture,<wbr/>
11011this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
11012<p>If the camera device supports a variable aperture,<wbr/> the aperture values
11013in this list will be sorted in ascending order.<wbr/></p>
11014            </td>
11015          </tr>
11016
11017
11018          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11019           <!-- end of entry -->
11020
11021
11022          <tr class="entry" id="static_android.lens.info.availableFilterDensities">
11023            <td class="entry_name
11024             " rowspan="3">
11025              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
11026            </td>
11027            <td class="entry_type">
11028                <span class="entry_type_name">float</span>
11029                <span class="entry_type_container">x</span>
11030
11031                <span class="entry_type_array">
11032                  n
11033                </span>
11034              <span class="entry_type_visibility"> [public]</span>
11035
11036
11037              <span class="entry_type_hwlevel">[full] </span>
11038
11039
11040
11041
11042            </td> <!-- entry_type -->
11043
11044            <td class="entry_description">
11045              <p>List of neutral density filter values for
11046<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
11047            </td>
11048
11049            <td class="entry_units">
11050              Exposure value (EV)
11051            </td>
11052
11053            <td class="entry_range">
11054              <p>Values are &gt;= 0</p>
11055            </td>
11056
11057            <td class="entry_tags">
11058              <ul class="entry_tags">
11059                  <li><a href="#tag_V1">V1</a></li>
11060              </ul>
11061            </td>
11062
11063          </tr>
11064          <tr class="entries_header">
11065            <th class="th_details" colspan="5">Details</th>
11066          </tr>
11067          <tr class="entry_cont">
11068            <td class="entry_details" colspan="5">
11069              <p>If a neutral density filter is not supported by this camera device,<wbr/>
11070this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
11071filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
11072            </td>
11073          </tr>
11074
11075
11076          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11077           <!-- end of entry -->
11078
11079
11080          <tr class="entry" id="static_android.lens.info.availableFocalLengths">
11081            <td class="entry_name
11082             " rowspan="3">
11083              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
11084            </td>
11085            <td class="entry_type">
11086                <span class="entry_type_name">float</span>
11087                <span class="entry_type_container">x</span>
11088
11089                <span class="entry_type_array">
11090                  n
11091                </span>
11092              <span class="entry_type_visibility"> [public]</span>
11093
11094
11095              <span class="entry_type_hwlevel">[legacy] </span>
11096
11097
11098                <div class="entry_type_notes">The list of available focal lengths</div>
11099
11100
11101            </td> <!-- entry_type -->
11102
11103            <td class="entry_description">
11104              <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
11105device.<wbr/></p>
11106            </td>
11107
11108            <td class="entry_units">
11109              Millimeters
11110            </td>
11111
11112            <td class="entry_range">
11113              <p>Values are &gt; 0</p>
11114            </td>
11115
11116            <td class="entry_tags">
11117              <ul class="entry_tags">
11118                  <li><a href="#tag_BC">BC</a></li>
11119                  <li><a href="#tag_V1">V1</a></li>
11120              </ul>
11121            </td>
11122
11123          </tr>
11124          <tr class="entries_header">
11125            <th class="th_details" colspan="5">Details</th>
11126          </tr>
11127          <tr class="entry_cont">
11128            <td class="entry_details" colspan="5">
11129              <p>If optical zoom is not supported,<wbr/> this list will only contain
11130a single value corresponding to the fixed focal length of the
11131device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
11132by the camera device,<wbr/> in ascending order.<wbr/></p>
11133            </td>
11134          </tr>
11135
11136
11137          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11138           <!-- end of entry -->
11139
11140
11141          <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
11142            <td class="entry_name
11143             " rowspan="3">
11144              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
11145            </td>
11146            <td class="entry_type">
11147                <span class="entry_type_name">byte</span>
11148                <span class="entry_type_container">x</span>
11149
11150                <span class="entry_type_array">
11151                  n
11152                </span>
11153              <span class="entry_type_visibility"> [public as enumList]</span>
11154
11155
11156              <span class="entry_type_hwlevel">[limited] </span>
11157
11158
11159                <div class="entry_type_notes">list of enums</div>
11160
11161
11162            </td> <!-- entry_type -->
11163
11164            <td class="entry_description">
11165              <p>List of optical image stabilization (OIS) modes for
11166<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>
11167            </td>
11168
11169            <td class="entry_units">
11170            </td>
11171
11172            <td class="entry_range">
11173              <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
11174            </td>
11175
11176            <td class="entry_tags">
11177              <ul class="entry_tags">
11178                  <li><a href="#tag_V1">V1</a></li>
11179              </ul>
11180            </td>
11181
11182          </tr>
11183          <tr class="entries_header">
11184            <th class="th_details" colspan="5">Details</th>
11185          </tr>
11186          <tr class="entry_cont">
11187            <td class="entry_details" colspan="5">
11188              <p>If OIS is not supported by a given camera device,<wbr/> this list will
11189contain only OFF.<wbr/></p>
11190            </td>
11191          </tr>
11192
11193
11194          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11195           <!-- end of entry -->
11196
11197
11198          <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
11199            <td class="entry_name
11200             " rowspan="3">
11201              android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
11202            </td>
11203            <td class="entry_type">
11204                <span class="entry_type_name">float</span>
11205
11206              <span class="entry_type_visibility"> [public]</span>
11207
11208
11209              <span class="entry_type_hwlevel">[limited] </span>
11210
11211
11212
11213
11214            </td> <!-- entry_type -->
11215
11216            <td class="entry_description">
11217              <p>Hyperfocal distance for this lens.<wbr/></p>
11218            </td>
11219
11220            <td class="entry_units">
11221              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11222            </td>
11223
11224            <td class="entry_range">
11225              <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
11226within <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>
11227            </td>
11228
11229            <td class="entry_tags">
11230            </td>
11231
11232          </tr>
11233          <tr class="entries_header">
11234            <th class="th_details" colspan="5">Details</th>
11235          </tr>
11236          <tr class="entry_cont">
11237            <td class="entry_details" colspan="5">
11238              <p>If the lens is not fixed focus,<wbr/> the camera device will report this
11239field 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>
11240            </td>
11241          </tr>
11242
11243
11244          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11245           <!-- end of entry -->
11246
11247
11248          <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
11249            <td class="entry_name
11250             " rowspan="5">
11251              android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
11252            </td>
11253            <td class="entry_type">
11254                <span class="entry_type_name">float</span>
11255
11256              <span class="entry_type_visibility"> [public]</span>
11257
11258
11259              <span class="entry_type_hwlevel">[limited] </span>
11260
11261
11262
11263
11264            </td> <!-- entry_type -->
11265
11266            <td class="entry_description">
11267              <p>Shortest distance from frontmost surface
11268of the lens that can be brought into sharp focus.<wbr/></p>
11269            </td>
11270
11271            <td class="entry_units">
11272              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11273            </td>
11274
11275            <td class="entry_range">
11276              <p>&gt;= 0</p>
11277            </td>
11278
11279            <td class="entry_tags">
11280              <ul class="entry_tags">
11281                  <li><a href="#tag_V1">V1</a></li>
11282              </ul>
11283            </td>
11284
11285          </tr>
11286          <tr class="entries_header">
11287            <th class="th_details" colspan="5">Details</th>
11288          </tr>
11289          <tr class="entry_cont">
11290            <td class="entry_details" colspan="5">
11291              <p>If the lens is fixed-focus,<wbr/> this will be
112920.<wbr/></p>
11293            </td>
11294          </tr>
11295
11296          <tr class="entries_header">
11297            <th class="th_details" colspan="5">HAL Implementation Details</th>
11298          </tr>
11299          <tr class="entry_cont">
11300            <td class="entry_details" colspan="5">
11301              <p>Mandatory for FULL devices; LIMITED devices
11302must always set this value to 0 for fixed-focus; and may omit
11303the minimum focus distance otherwise.<wbr/></p>
11304<p>This field is also mandatory for all devices advertising
11305the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
11306            </td>
11307          </tr>
11308
11309          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11310           <!-- end of entry -->
11311
11312
11313          <tr class="entry" id="static_android.lens.info.shadingMapSize">
11314            <td class="entry_name
11315             " rowspan="3">
11316              android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
11317            </td>
11318            <td class="entry_type">
11319                <span class="entry_type_name">int32</span>
11320                <span class="entry_type_container">x</span>
11321
11322                <span class="entry_type_array">
11323                  2
11324                </span>
11325              <span class="entry_type_visibility"> [hidden as size]</span>
11326
11327
11328              <span class="entry_type_hwlevel">[full] </span>
11329
11330
11331                <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
11332
11333
11334            </td> <!-- entry_type -->
11335
11336            <td class="entry_description">
11337              <p>Dimensions of lens shading map.<wbr/></p>
11338            </td>
11339
11340            <td class="entry_units">
11341            </td>
11342
11343            <td class="entry_range">
11344              <p>Both values &gt;= 1</p>
11345            </td>
11346
11347            <td class="entry_tags">
11348              <ul class="entry_tags">
11349                  <li><a href="#tag_V1">V1</a></li>
11350              </ul>
11351            </td>
11352
11353          </tr>
11354          <tr class="entries_header">
11355            <th class="th_details" colspan="5">Details</th>
11356          </tr>
11357          <tr class="entry_cont">
11358            <td class="entry_details" colspan="5">
11359              <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
11360must be smaller than 64x64.<wbr/></p>
11361            </td>
11362          </tr>
11363
11364
11365          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11366           <!-- end of entry -->
11367
11368
11369          <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
11370            <td class="entry_name
11371             " rowspan="5">
11372              android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
11373            </td>
11374            <td class="entry_type">
11375                <span class="entry_type_name entry_type_name_enum">byte</span>
11376
11377              <span class="entry_type_visibility"> [public]</span>
11378
11379
11380              <span class="entry_type_hwlevel">[limited] </span>
11381
11382
11383
11384                <ul class="entry_type_enum">
11385                  <li>
11386                    <span class="entry_type_enum_name">UNCALIBRATED</span>
11387                    <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
11388<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
11389<p>Setting the lens to the same focus distance on separate occasions may
11390result in a different real focus distance,<wbr/> depending on factors such
11391as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
11392and the device temperature.<wbr/> The focus distance value will still be
11393in 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
11394represents the farthest focus.<wbr/></p></span>
11395                  </li>
11396                  <li>
11397                    <span class="entry_type_enum_name">APPROXIMATE</span>
11398                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
11399<p>However,<wbr/> setting the lens to the same focus distance
11400on separate occasions may result in a different real
11401focus distance,<wbr/> depending on factors such as the
11402orientation of the device,<wbr/> the age of the focusing
11403mechanism,<wbr/> and the device temperature.<wbr/></p></span>
11404                  </li>
11405                  <li>
11406                    <span class="entry_type_enum_name">CALIBRATED</span>
11407                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
11408is calibrated.<wbr/></p>
11409<p>The lens mechanism is calibrated so that setting the
11410same focus distance is repeatable on multiple
11411occasions with good accuracy,<wbr/> and the focus distance
11412corresponds to the real physical distance to the plane
11413of best focus.<wbr/></p></span>
11414                  </li>
11415                </ul>
11416
11417            </td> <!-- entry_type -->
11418
11419            <td class="entry_description">
11420              <p>The lens focus distance calibration quality.<wbr/></p>
11421            </td>
11422
11423            <td class="entry_units">
11424            </td>
11425
11426            <td class="entry_range">
11427            </td>
11428
11429            <td class="entry_tags">
11430              <ul class="entry_tags">
11431                  <li><a href="#tag_V1">V1</a></li>
11432              </ul>
11433            </td>
11434
11435          </tr>
11436          <tr class="entries_header">
11437            <th class="th_details" colspan="5">Details</th>
11438          </tr>
11439          <tr class="entry_cont">
11440            <td class="entry_details" colspan="5">
11441              <p>The lens focus distance calibration quality determines the reliability of
11442focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
11443<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
11444<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
11445<p>APPROXIMATE and CALIBRATED devices report the focus metadata in
11446units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
11447and increasing positive numbers represent focusing closer and closer
11448to the camera device.<wbr/> The focus distance control also uses diopters
11449on these devices.<wbr/></p>
11450<p>UNCALIBRATED devices do not use units that are directly comparable
11451to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
11452focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
11453nearest focus the device can achieve.<wbr/></p>
11454            </td>
11455          </tr>
11456
11457          <tr class="entries_header">
11458            <th class="th_details" colspan="5">HAL Implementation Details</th>
11459          </tr>
11460          <tr class="entry_cont">
11461            <td class="entry_details" colspan="5">
11462              <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
11463focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
11464and the lens focus distance is set to 0 diopters
11465(<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
11466and is stably focused at infinity even if the device tilts.<wbr/> It may take the
11467lens some time to move; during the move the lens state should be MOVING and
11468the output diopter value should be changing toward 0.<wbr/></p>
11469            </td>
11470          </tr>
11471
11472          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11473           <!-- end of entry -->
11474
11475
11476
11477
11478
11479          <tr class="entry" id="static_android.lens.facing">
11480            <td class="entry_name
11481             " rowspan="1">
11482              android.<wbr/>lens.<wbr/>facing
11483            </td>
11484            <td class="entry_type">
11485                <span class="entry_type_name entry_type_name_enum">byte</span>
11486
11487              <span class="entry_type_visibility"> [public]</span>
11488
11489
11490              <span class="entry_type_hwlevel">[legacy] </span>
11491
11492
11493
11494                <ul class="entry_type_enum">
11495                  <li>
11496                    <span class="entry_type_enum_name">FRONT</span>
11497                    <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
11498                  </li>
11499                  <li>
11500                    <span class="entry_type_enum_name">BACK</span>
11501                    <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
11502                  </li>
11503                </ul>
11504
11505            </td> <!-- entry_type -->
11506
11507            <td class="entry_description">
11508              <p>Direction the camera faces relative to
11509device screen.<wbr/></p>
11510            </td>
11511
11512            <td class="entry_units">
11513            </td>
11514
11515            <td class="entry_range">
11516            </td>
11517
11518            <td class="entry_tags">
11519            </td>
11520
11521          </tr>
11522
11523
11524          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11525           <!-- end of entry -->
11526
11527
11528          <tr class="entry" id="static_android.lens.opticalAxisAngle">
11529            <td class="entry_name
11530             " rowspan="3">
11531              android.<wbr/>lens.<wbr/>optical<wbr/>Axis<wbr/>Angle
11532            </td>
11533            <td class="entry_type">
11534                <span class="entry_type_name">float</span>
11535                <span class="entry_type_container">x</span>
11536
11537                <span class="entry_type_array">
11538                  2
11539                </span>
11540              <span class="entry_type_visibility"> [system]</span>
11541
11542
11543
11544
11545                <div class="entry_type_notes">degrees.<wbr/> First defines the angle of separation between the perpendicular to the screen and the camera optical axis.<wbr/> The second then defines the clockwise rotation of the optical axis from native device up.<wbr/></div>
11546
11547
11548            </td> <!-- entry_type -->
11549
11550            <td class="entry_description">
11551              <p>Relative angle of camera optical axis to the
11552perpendicular axis from the display</p>
11553            </td>
11554
11555            <td class="entry_units">
11556            </td>
11557
11558            <td class="entry_range">
11559              <p>[0-90) for first angle,<wbr/> [0-360) for second</p>
11560            </td>
11561
11562            <td class="entry_tags">
11563              <ul class="entry_tags">
11564                  <li><a href="#tag_FUTURE">FUTURE</a></li>
11565              </ul>
11566            </td>
11567
11568          </tr>
11569          <tr class="entries_header">
11570            <th class="th_details" colspan="5">Details</th>
11571          </tr>
11572          <tr class="entry_cont">
11573            <td class="entry_details" colspan="5">
11574              <p>Examples:</p>
11575<p>(0,<wbr/>0) means that the camera optical axis
11576is perpendicular to the display surface;</p>
11577<p>(45,<wbr/>0) means that the camera points 45 degrees up when
11578device is held upright;</p>
11579<p>(45,<wbr/>90) means the camera points 45 degrees to the right when
11580the device is held upright.<wbr/></p>
11581<p>Use FACING field to determine perpendicular outgoing
11582direction</p>
11583            </td>
11584          </tr>
11585
11586
11587          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11588           <!-- end of entry -->
11589
11590
11591          <tr class="entry" id="static_android.lens.position">
11592            <td class="entry_name
11593             " rowspan="1">
11594              android.<wbr/>lens.<wbr/>position
11595            </td>
11596            <td class="entry_type">
11597                <span class="entry_type_name">float</span>
11598                <span class="entry_type_container">x</span>
11599
11600                <span class="entry_type_array">
11601                  3, location in mm, in the sensor coordinate
11602            system
11603                </span>
11604              <span class="entry_type_visibility"> [system]</span>
11605
11606
11607
11608
11609
11610
11611            </td> <!-- entry_type -->
11612
11613            <td class="entry_description">
11614              <p>Coordinates of camera optical axis on
11615device</p>
11616            </td>
11617
11618            <td class="entry_units">
11619            </td>
11620
11621            <td class="entry_range">
11622            </td>
11623
11624            <td class="entry_tags">
11625              <ul class="entry_tags">
11626                  <li><a href="#tag_FUTURE">FUTURE</a></li>
11627              </ul>
11628            </td>
11629
11630          </tr>
11631
11632
11633          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11634           <!-- end of entry -->
11635
11636
11637
11638      <!-- end of kind -->
11639      </tbody>
11640      <tr><td colspan="6" class="kind">dynamic</td></tr>
11641
11642      <thead class="entries_header">
11643        <tr>
11644          <th class="th_name">Property Name</th>
11645          <th class="th_type">Type</th>
11646          <th class="th_description">Description</th>
11647          <th class="th_units">Units</th>
11648          <th class="th_range">Range</th>
11649          <th class="th_tags">Tags</th>
11650        </tr>
11651      </thead>
11652
11653      <tbody>
11654
11655
11656
11657
11658
11659
11660
11661
11662
11663
11664          <tr class="entry" id="dynamic_android.lens.aperture">
11665            <td class="entry_name
11666             " rowspan="3">
11667              android.<wbr/>lens.<wbr/>aperture
11668            </td>
11669            <td class="entry_type">
11670                <span class="entry_type_name">float</span>
11671
11672              <span class="entry_type_visibility"> [public]</span>
11673
11674
11675              <span class="entry_type_hwlevel">[full] </span>
11676
11677
11678
11679
11680            </td> <!-- entry_type -->
11681
11682            <td class="entry_description">
11683              <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
11684effective aperture diameter.<wbr/></p>
11685            </td>
11686
11687            <td class="entry_units">
11688              The f-number (f/<wbr/>N)
11689            </td>
11690
11691            <td class="entry_range">
11692              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
11693            </td>
11694
11695            <td class="entry_tags">
11696              <ul class="entry_tags">
11697                  <li><a href="#tag_V1">V1</a></li>
11698              </ul>
11699            </td>
11700
11701          </tr>
11702          <tr class="entries_header">
11703            <th class="th_details" colspan="5">Details</th>
11704          </tr>
11705          <tr class="entry_cont">
11706            <td class="entry_details" colspan="5">
11707              <p>Setting this value is only supported on the camera devices that have a variable
11708aperture lens.<wbr/></p>
11709<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
11710this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
11711<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>
11712to achieve manual exposure control.<wbr/></p>
11713<p>The requested aperture value may take several frames to reach the
11714requested value; the camera device will report the current (intermediate)
11715aperture size in capture result metadata while the aperture is changing.<wbr/>
11716While 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>
11717<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
11718the ON modes,<wbr/> this will be overridden by the camera device
11719auto-exposure algorithm,<wbr/> the overridden values are then provided
11720back to the user in the corresponding result.<wbr/></p>
11721            </td>
11722          </tr>
11723
11724
11725          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11726           <!-- end of entry -->
11727
11728
11729          <tr class="entry" id="dynamic_android.lens.filterDensity">
11730            <td class="entry_name
11731             " rowspan="3">
11732              android.<wbr/>lens.<wbr/>filter<wbr/>Density
11733            </td>
11734            <td class="entry_type">
11735                <span class="entry_type_name">float</span>
11736
11737              <span class="entry_type_visibility"> [public]</span>
11738
11739
11740              <span class="entry_type_hwlevel">[full] </span>
11741
11742
11743
11744
11745            </td> <!-- entry_type -->
11746
11747            <td class="entry_description">
11748              <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
11749            </td>
11750
11751            <td class="entry_units">
11752              Exposure Value (EV)
11753            </td>
11754
11755            <td class="entry_range">
11756              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
11757            </td>
11758
11759            <td class="entry_tags">
11760              <ul class="entry_tags">
11761                  <li><a href="#tag_V1">V1</a></li>
11762              </ul>
11763            </td>
11764
11765          </tr>
11766          <tr class="entries_header">
11767            <th class="th_details" colspan="5">Details</th>
11768          </tr>
11769          <tr class="entry_cont">
11770            <td class="entry_details" colspan="5">
11771              <p>This control will not be supported on most camera devices.<wbr/></p>
11772<p>Lens filters are typically used to lower the amount of light the
11773sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
11774step is the standard logarithmic representation,<wbr/> which are
11775non-negative,<wbr/> and inversely proportional to the amount of light
11776hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
11777in no reduction of the incoming light,<wbr/> and setting this to 2 would
11778mean that the filter is set to reduce incoming light by two stops
11779(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
11780<p>It may take several frames before the lens filter density changes
11781to the requested value.<wbr/> While the filter density is still changing,<wbr/>
11782<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11783            </td>
11784          </tr>
11785
11786
11787          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11788           <!-- end of entry -->
11789
11790
11791          <tr class="entry" id="dynamic_android.lens.focalLength">
11792            <td class="entry_name
11793             " rowspan="3">
11794              android.<wbr/>lens.<wbr/>focal<wbr/>Length
11795            </td>
11796            <td class="entry_type">
11797                <span class="entry_type_name">float</span>
11798
11799              <span class="entry_type_visibility"> [public]</span>
11800
11801
11802              <span class="entry_type_hwlevel">[legacy] </span>
11803
11804
11805
11806
11807            </td> <!-- entry_type -->
11808
11809            <td class="entry_description">
11810              <p>The desired lens focal length; used for optical zoom.<wbr/></p>
11811            </td>
11812
11813            <td class="entry_units">
11814              Millimeters
11815            </td>
11816
11817            <td class="entry_range">
11818              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
11819            </td>
11820
11821            <td class="entry_tags">
11822              <ul class="entry_tags">
11823                  <li><a href="#tag_BC">BC</a></li>
11824              </ul>
11825            </td>
11826
11827          </tr>
11828          <tr class="entries_header">
11829            <th class="th_details" colspan="5">Details</th>
11830          </tr>
11831          <tr class="entry_cont">
11832            <td class="entry_details" colspan="5">
11833              <p>This setting controls the physical focal length of the camera
11834device's lens.<wbr/> Changing the focal length changes the field of
11835view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
11836<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
11837setting won't be applied instantaneously,<wbr/> and it may take several
11838frames before the lens can change to the requested focal length.<wbr/>
11839While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
11840be set to MOVING.<wbr/></p>
11841<p>Optical zoom will not be supported on most devices.<wbr/></p>
11842            </td>
11843          </tr>
11844
11845
11846          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11847           <!-- end of entry -->
11848
11849
11850          <tr class="entry" id="dynamic_android.lens.focusDistance">
11851            <td class="entry_name
11852             " rowspan="3">
11853              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
11854            </td>
11855            <td class="entry_type">
11856                <span class="entry_type_name">float</span>
11857
11858              <span class="entry_type_visibility"> [public]</span>
11859
11860
11861              <span class="entry_type_hwlevel">[full] </span>
11862
11863
11864
11865
11866            </td> <!-- entry_type -->
11867
11868            <td class="entry_description">
11869              <p>Desired distance to plane of sharpest focus,<wbr/>
11870measured from frontmost surface of the lens.<wbr/></p>
11871            </td>
11872
11873            <td class="entry_units">
11874              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11875            </td>
11876
11877            <td class="entry_range">
11878              <p>&gt;= 0</p>
11879            </td>
11880
11881            <td class="entry_tags">
11882              <ul class="entry_tags">
11883                  <li><a href="#tag_BC">BC</a></li>
11884              </ul>
11885            </td>
11886
11887          </tr>
11888          <tr class="entries_header">
11889            <th class="th_details" colspan="5">Details</th>
11890          </tr>
11891          <tr class="entry_cont">
11892            <td class="entry_details" colspan="5">
11893              <p>Should be zero for fixed-focus cameras</p>
11894            </td>
11895          </tr>
11896
11897
11898          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11899           <!-- end of entry -->
11900
11901
11902          <tr class="entry" id="dynamic_android.lens.focusRange">
11903            <td class="entry_name
11904             " rowspan="3">
11905              android.<wbr/>lens.<wbr/>focus<wbr/>Range
11906            </td>
11907            <td class="entry_type">
11908                <span class="entry_type_name">float</span>
11909                <span class="entry_type_container">x</span>
11910
11911                <span class="entry_type_array">
11912                  2
11913                </span>
11914              <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
11915
11916
11917              <span class="entry_type_hwlevel">[limited] </span>
11918
11919
11920                <div class="entry_type_notes">Range of scene distances that are in focus</div>
11921
11922
11923            </td> <!-- entry_type -->
11924
11925            <td class="entry_description">
11926              <p>The range of scene distances that are in
11927sharp focus (depth of field).<wbr/></p>
11928            </td>
11929
11930            <td class="entry_units">
11931              A pair of focus distances in diopters: (near,<wbr/>
11932          far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
11933            </td>
11934
11935            <td class="entry_range">
11936              <p>&gt;=0</p>
11937            </td>
11938
11939            <td class="entry_tags">
11940              <ul class="entry_tags">
11941                  <li><a href="#tag_BC">BC</a></li>
11942              </ul>
11943            </td>
11944
11945          </tr>
11946          <tr class="entries_header">
11947            <th class="th_details" colspan="5">Details</th>
11948          </tr>
11949          <tr class="entry_cont">
11950            <td class="entry_details" colspan="5">
11951              <p>If variable focus not supported,<wbr/> can still report
11952fixed depth of field range</p>
11953            </td>
11954          </tr>
11955
11956
11957          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11958           <!-- end of entry -->
11959
11960
11961          <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
11962            <td class="entry_name
11963             " rowspan="3">
11964              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
11965            </td>
11966            <td class="entry_type">
11967                <span class="entry_type_name entry_type_name_enum">byte</span>
11968
11969              <span class="entry_type_visibility"> [public]</span>
11970
11971
11972              <span class="entry_type_hwlevel">[limited] </span>
11973
11974
11975
11976                <ul class="entry_type_enum">
11977                  <li>
11978                    <span class="entry_type_enum_name">OFF</span>
11979                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
11980                  </li>
11981                  <li>
11982                    <span class="entry_type_enum_name">ON</span>
11983                    <span class="entry_type_enum_optional">[optional]</span>
11984                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
11985                  </li>
11986                </ul>
11987
11988            </td> <!-- entry_type -->
11989
11990            <td class="entry_description">
11991              <p>Sets whether the camera device uses optical image stabilization (OIS)
11992when capturing images.<wbr/></p>
11993            </td>
11994
11995            <td class="entry_units">
11996            </td>
11997
11998            <td class="entry_range">
11999              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></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>OIS is used to compensate for motion blur due to small
12015movements of the camera during capture.<wbr/> Unlike digital image
12016stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12017makes use of mechanical elements to stabilize the camera
12018sensor,<wbr/> and thus allows for longer exposure times before
12019camera shake becomes apparent.<wbr/></p>
12020<p>Switching between different optical stabilization modes may take several
12021frames to initialize,<wbr/> the camera device will report the current mode in
12022capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12023optical stabilization modes in the first several capture results may still
12024be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12025<p>If a camera device supports both OIS and digital image stabilization
12026(<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12027interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12028<p>Not all devices will support OIS; see
12029<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12030available controls.<wbr/></p>
12031            </td>
12032          </tr>
12033
12034
12035          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12036           <!-- end of entry -->
12037
12038
12039          <tr class="entry" id="dynamic_android.lens.state">
12040            <td class="entry_name
12041             " rowspan="3">
12042              android.<wbr/>lens.<wbr/>state
12043            </td>
12044            <td class="entry_type">
12045                <span class="entry_type_name entry_type_name_enum">byte</span>
12046
12047              <span class="entry_type_visibility"> [public]</span>
12048
12049
12050              <span class="entry_type_hwlevel">[limited] </span>
12051
12052
12053
12054                <ul class="entry_type_enum">
12055                  <li>
12056                    <span class="entry_type_enum_name">STATIONARY</span>
12057                    <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/>
12058<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>
12059                  </li>
12060                  <li>
12061                    <span class="entry_type_enum_name">MOVING</span>
12062                    <span class="entry_type_enum_notes"><p>One or several of the lens parameters
12063(<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/>
12064<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
12065currently changing.<wbr/></p></span>
12066                  </li>
12067                </ul>
12068
12069            </td> <!-- entry_type -->
12070
12071            <td class="entry_description">
12072              <p>Current lens status.<wbr/></p>
12073            </td>
12074
12075            <td class="entry_units">
12076            </td>
12077
12078            <td class="entry_range">
12079            </td>
12080
12081            <td class="entry_tags">
12082              <ul class="entry_tags">
12083                  <li><a href="#tag_V1">V1</a></li>
12084              </ul>
12085            </td>
12086
12087          </tr>
12088          <tr class="entries_header">
12089            <th class="th_details" colspan="5">Details</th>
12090          </tr>
12091          <tr class="entry_cont">
12092            <td class="entry_details" colspan="5">
12093              <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/>
12094<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/>
12095they may take several frames to reach the requested values.<wbr/> This state indicates
12096the current status of the lens parameters.<wbr/></p>
12097<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
12098either because the parameters are all fixed,<wbr/> or because the lens has had enough
12099time to reach the most recently-requested values.<wbr/>
12100If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
12101<ul>
12102<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
12103<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
12104<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/>
12105which means the optical zoom is not supported.<wbr/></li>
12106<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>
12107<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>
12108</ul>
12109<p>Then this state will always be STATIONARY.<wbr/></p>
12110<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
12111is changing.<wbr/></p>
12112            </td>
12113          </tr>
12114
12115
12116          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12117           <!-- end of entry -->
12118
12119
12120
12121      <!-- end of kind -->
12122      </tbody>
12123
12124  <!-- end of section -->
12125  <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr>
12126
12127
12128      <tr><td colspan="6" class="kind">controls</td></tr>
12129
12130      <thead class="entries_header">
12131        <tr>
12132          <th class="th_name">Property Name</th>
12133          <th class="th_type">Type</th>
12134          <th class="th_description">Description</th>
12135          <th class="th_units">Units</th>
12136          <th class="th_range">Range</th>
12137          <th class="th_tags">Tags</th>
12138        </tr>
12139      </thead>
12140
12141      <tbody>
12142
12143
12144
12145
12146
12147
12148
12149
12150
12151
12152          <tr class="entry" id="controls_android.noiseReduction.mode">
12153            <td class="entry_name
12154             " rowspan="3">
12155              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
12156            </td>
12157            <td class="entry_type">
12158                <span class="entry_type_name entry_type_name_enum">byte</span>
12159
12160              <span class="entry_type_visibility"> [public]</span>
12161
12162
12163              <span class="entry_type_hwlevel">[full] </span>
12164
12165
12166
12167                <ul class="entry_type_enum">
12168                  <li>
12169                    <span class="entry_type_enum_name">OFF</span>
12170                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
12171                  </li>
12172                  <li>
12173                    <span class="entry_type_enum_name">FAST</span>
12174                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
12175output.<wbr/></p></span>
12176                  </li>
12177                  <li>
12178                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
12179                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of reducing frame rate
12180relative to sensor output.<wbr/></p></span>
12181                  </li>
12182                </ul>
12183
12184            </td> <!-- entry_type -->
12185
12186            <td class="entry_description">
12187              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
12188            </td>
12189
12190            <td class="entry_units">
12191            </td>
12192
12193            <td class="entry_range">
12194              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
12195            </td>
12196
12197            <td class="entry_tags">
12198              <ul class="entry_tags">
12199                  <li><a href="#tag_V1">V1</a></li>
12200              </ul>
12201            </td>
12202
12203          </tr>
12204          <tr class="entries_header">
12205            <th class="th_details" colspan="5">Details</th>
12206          </tr>
12207          <tr class="entry_cont">
12208            <td class="entry_details" colspan="5">
12209              <p>The noise reduction algorithm attempts to improve image quality by removing
12210excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/>
12211OFF means no noise reduction will be applied by the camera device.<wbr/></p>
12212<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
12213will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
12214will use the highest-quality noise filtering algorithms,<wbr/>
12215even if it slows down capture rate.<wbr/> FAST means the camera device will not
12216slow down capture rate when applying noise filtering.<wbr/></p>
12217            </td>
12218          </tr>
12219
12220
12221          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12222           <!-- end of entry -->
12223
12224
12225          <tr class="entry" id="controls_android.noiseReduction.strength">
12226            <td class="entry_name
12227             " rowspan="1">
12228              android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
12229            </td>
12230            <td class="entry_type">
12231                <span class="entry_type_name">byte</span>
12232
12233              <span class="entry_type_visibility"> [system]</span>
12234
12235
12236
12237
12238
12239
12240            </td> <!-- entry_type -->
12241
12242            <td class="entry_description">
12243              <p>Control the amount of noise reduction
12244applied to the images</p>
12245            </td>
12246
12247            <td class="entry_units">
12248              1-10; 10 is max noise reduction
12249            </td>
12250
12251            <td class="entry_range">
12252              <p>1 - 10</p>
12253            </td>
12254
12255            <td class="entry_tags">
12256              <ul class="entry_tags">
12257                  <li><a href="#tag_FUTURE">FUTURE</a></li>
12258              </ul>
12259            </td>
12260
12261          </tr>
12262
12263
12264          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12265           <!-- end of entry -->
12266
12267
12268
12269      <!-- end of kind -->
12270      </tbody>
12271      <tr><td colspan="6" class="kind">static</td></tr>
12272
12273      <thead class="entries_header">
12274        <tr>
12275          <th class="th_name">Property Name</th>
12276          <th class="th_type">Type</th>
12277          <th class="th_description">Description</th>
12278          <th class="th_units">Units</th>
12279          <th class="th_range">Range</th>
12280          <th class="th_tags">Tags</th>
12281        </tr>
12282      </thead>
12283
12284      <tbody>
12285
12286
12287
12288
12289
12290
12291
12292
12293
12294
12295          <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
12296            <td class="entry_name
12297             " rowspan="3">
12298              android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
12299            </td>
12300            <td class="entry_type">
12301                <span class="entry_type_name">byte</span>
12302                <span class="entry_type_container">x</span>
12303
12304                <span class="entry_type_array">
12305                  n
12306                </span>
12307              <span class="entry_type_visibility"> [public as enumList]</span>
12308
12309
12310              <span class="entry_type_hwlevel">[limited] </span>
12311
12312
12313                <div class="entry_type_notes">list of enums</div>
12314
12315
12316            </td> <!-- entry_type -->
12317
12318            <td class="entry_description">
12319              <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
12320by this camera device.<wbr/></p>
12321            </td>
12322
12323            <td class="entry_units">
12324            </td>
12325
12326            <td class="entry_range">
12327              <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
12328            </td>
12329
12330            <td class="entry_tags">
12331              <ul class="entry_tags">
12332                  <li><a href="#tag_V1">V1</a></li>
12333              </ul>
12334            </td>
12335
12336          </tr>
12337          <tr class="entries_header">
12338            <th class="th_details" colspan="5">Details</th>
12339          </tr>
12340          <tr class="entry_cont">
12341            <td class="entry_details" colspan="5">
12342              <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
12343<p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
12344            </td>
12345          </tr>
12346
12347
12348          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12349           <!-- end of entry -->
12350
12351
12352
12353      <!-- end of kind -->
12354      </tbody>
12355      <tr><td colspan="6" class="kind">dynamic</td></tr>
12356
12357      <thead class="entries_header">
12358        <tr>
12359          <th class="th_name">Property Name</th>
12360          <th class="th_type">Type</th>
12361          <th class="th_description">Description</th>
12362          <th class="th_units">Units</th>
12363          <th class="th_range">Range</th>
12364          <th class="th_tags">Tags</th>
12365        </tr>
12366      </thead>
12367
12368      <tbody>
12369
12370
12371
12372
12373
12374
12375
12376
12377
12378
12379          <tr class="entry" id="dynamic_android.noiseReduction.mode">
12380            <td class="entry_name
12381             " rowspan="3">
12382              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
12383            </td>
12384            <td class="entry_type">
12385                <span class="entry_type_name entry_type_name_enum">byte</span>
12386
12387              <span class="entry_type_visibility"> [public]</span>
12388
12389
12390              <span class="entry_type_hwlevel">[full] </span>
12391
12392
12393
12394                <ul class="entry_type_enum">
12395                  <li>
12396                    <span class="entry_type_enum_name">OFF</span>
12397                    <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
12398                  </li>
12399                  <li>
12400                    <span class="entry_type_enum_name">FAST</span>
12401                    <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
12402output.<wbr/></p></span>
12403                  </li>
12404                  <li>
12405                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
12406                    <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of reducing frame rate
12407relative to sensor output.<wbr/></p></span>
12408                  </li>
12409                </ul>
12410
12411            </td> <!-- entry_type -->
12412
12413            <td class="entry_description">
12414              <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
12415            </td>
12416
12417            <td class="entry_units">
12418            </td>
12419
12420            <td class="entry_range">
12421              <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
12422            </td>
12423
12424            <td class="entry_tags">
12425              <ul class="entry_tags">
12426                  <li><a href="#tag_V1">V1</a></li>
12427              </ul>
12428            </td>
12429
12430          </tr>
12431          <tr class="entries_header">
12432            <th class="th_details" colspan="5">Details</th>
12433          </tr>
12434          <tr class="entry_cont">
12435            <td class="entry_details" colspan="5">
12436              <p>The noise reduction algorithm attempts to improve image quality by removing
12437excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/>
12438OFF means no noise reduction will be applied by the camera device.<wbr/></p>
12439<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
12440will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
12441will use the highest-quality noise filtering algorithms,<wbr/>
12442even if it slows down capture rate.<wbr/> FAST means the camera device will not
12443slow down capture rate when applying noise filtering.<wbr/></p>
12444            </td>
12445          </tr>
12446
12447
12448          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12449           <!-- end of entry -->
12450
12451
12452
12453      <!-- end of kind -->
12454      </tbody>
12455
12456  <!-- end of section -->
12457  <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr>
12458
12459
12460      <tr><td colspan="6" class="kind">static</td></tr>
12461
12462      <thead class="entries_header">
12463        <tr>
12464          <th class="th_name">Property Name</th>
12465          <th class="th_type">Type</th>
12466          <th class="th_description">Description</th>
12467          <th class="th_units">Units</th>
12468          <th class="th_range">Range</th>
12469          <th class="th_tags">Tags</th>
12470        </tr>
12471      </thead>
12472
12473      <tbody>
12474
12475
12476
12477
12478
12479
12480
12481
12482
12483
12484          <tr class="entry" id="static_android.quirks.meteringCropRegion">
12485            <td class="entry_name
12486                entry_name_deprecated
12487             " rowspan="3">
12488              android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
12489            </td>
12490            <td class="entry_type">
12491                <span class="entry_type_name">byte</span>
12492
12493              <span class="entry_type_visibility"> [system]</span>
12494
12495
12496
12497              <span class="entry_type_deprecated">[deprecated] </span>
12498
12499
12500
12501            </td> <!-- entry_type -->
12502
12503            <td class="entry_description">
12504              <p>If set to 1,<wbr/> the camera service does not
12505scale 'normalized' coordinates with respect to the crop
12506region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
12507and output (face rectangles).<wbr/></p>
12508            </td>
12509
12510            <td class="entry_units">
12511            </td>
12512
12513            <td class="entry_range">
12514              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
12515            </td>
12516
12517            <td class="entry_tags">
12518            </td>
12519
12520          </tr>
12521          <tr class="entries_header">
12522            <th class="th_details" colspan="5">Details</th>
12523          </tr>
12524          <tr class="entry_cont">
12525            <td class="entry_details" colspan="5">
12526              <p>Normalized coordinates refer to those in the
12527(-1000,<wbr/>1000) range mentioned in the
12528android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
12529<p>HAL implementations should instead always use and emit
12530sensor array-relative coordinates for all region data.<wbr/> Does
12531not need to be listed in static metadata.<wbr/> Support will be
12532removed in future versions of camera service.<wbr/></p>
12533            </td>
12534          </tr>
12535
12536
12537          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12538           <!-- end of entry -->
12539
12540
12541          <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
12542            <td class="entry_name
12543                entry_name_deprecated
12544             " rowspan="3">
12545              android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
12546            </td>
12547            <td class="entry_type">
12548                <span class="entry_type_name">byte</span>
12549
12550              <span class="entry_type_visibility"> [system]</span>
12551
12552
12553
12554              <span class="entry_type_deprecated">[deprecated] </span>
12555
12556
12557
12558            </td> <!-- entry_type -->
12559
12560            <td class="entry_description">
12561              <p>If set to 1,<wbr/> then the camera service always
12562switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
12563trigger.<wbr/></p>
12564            </td>
12565
12566            <td class="entry_units">
12567            </td>
12568
12569            <td class="entry_range">
12570              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
12571            </td>
12572
12573            <td class="entry_tags">
12574            </td>
12575
12576          </tr>
12577          <tr class="entries_header">
12578            <th class="th_details" colspan="5">Details</th>
12579          </tr>
12580          <tr class="entry_cont">
12581            <td class="entry_details" colspan="5">
12582              <p>HAL implementations should implement AF trigger
12583modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
12584CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
12585not need to be listed in static metadata.<wbr/> Support will be
12586removed in future versions of camera service</p>
12587            </td>
12588          </tr>
12589
12590
12591          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12592           <!-- end of entry -->
12593
12594
12595          <tr class="entry" id="static_android.quirks.useZslFormat">
12596            <td class="entry_name
12597                entry_name_deprecated
12598             " rowspan="3">
12599              android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
12600            </td>
12601            <td class="entry_type">
12602                <span class="entry_type_name">byte</span>
12603
12604              <span class="entry_type_visibility"> [system]</span>
12605
12606
12607
12608              <span class="entry_type_deprecated">[deprecated] </span>
12609
12610
12611
12612            </td> <!-- entry_type -->
12613
12614            <td class="entry_description">
12615              <p>If set to 1,<wbr/> the camera service uses
12616CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
12617HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
12618shutter lag stream</p>
12619            </td>
12620
12621            <td class="entry_units">
12622            </td>
12623
12624            <td class="entry_range">
12625              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
12626            </td>
12627
12628            <td class="entry_tags">
12629            </td>
12630
12631          </tr>
12632          <tr class="entries_header">
12633            <th class="th_details" colspan="5">Details</th>
12634          </tr>
12635          <tr class="entry_cont">
12636            <td class="entry_details" colspan="5">
12637              <p>HAL implementations should use gralloc usage flags
12638to determine that a stream will be used for
12639zero-shutter-lag,<wbr/> instead of relying on an explicit
12640format setting.<wbr/> Does not need to be listed in static
12641metadata.<wbr/> Support will be removed in future versions of
12642camera service.<wbr/></p>
12643            </td>
12644          </tr>
12645
12646
12647          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12648           <!-- end of entry -->
12649
12650
12651          <tr class="entry" id="static_android.quirks.usePartialResult">
12652            <td class="entry_name
12653                entry_name_deprecated
12654             " rowspan="5">
12655              android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
12656            </td>
12657            <td class="entry_type">
12658                <span class="entry_type_name">byte</span>
12659
12660              <span class="entry_type_visibility"> [hidden]</span>
12661
12662
12663
12664              <span class="entry_type_deprecated">[deprecated] </span>
12665
12666
12667
12668            </td> <!-- entry_type -->
12669
12670            <td class="entry_description">
12671              <p>If set to 1,<wbr/> the HAL will always split result
12672metadata for a single capture into multiple buffers,<wbr/>
12673returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
12674            </td>
12675
12676            <td class="entry_units">
12677            </td>
12678
12679            <td class="entry_range">
12680              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
12681            </td>
12682
12683            <td class="entry_tags">
12684            </td>
12685
12686          </tr>
12687          <tr class="entries_header">
12688            <th class="th_details" colspan="5">Details</th>
12689          </tr>
12690          <tr class="entry_cont">
12691            <td class="entry_details" colspan="5">
12692              <p>Does not need to be listed in static
12693metadata.<wbr/> Support for partial results will be reworked in
12694future versions of camera service.<wbr/> This quirk will stop
12695working at that point; DO NOT USE without careful
12696consideration of future support.<wbr/></p>
12697            </td>
12698          </tr>
12699
12700          <tr class="entries_header">
12701            <th class="th_details" colspan="5">HAL Implementation Details</th>
12702          </tr>
12703          <tr class="entry_cont">
12704            <td class="entry_details" colspan="5">
12705              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
12706for information on how to implement partial results.<wbr/></p>
12707            </td>
12708          </tr>
12709
12710          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12711           <!-- end of entry -->
12712
12713
12714
12715      <!-- end of kind -->
12716      </tbody>
12717      <tr><td colspan="6" class="kind">dynamic</td></tr>
12718
12719      <thead class="entries_header">
12720        <tr>
12721          <th class="th_name">Property Name</th>
12722          <th class="th_type">Type</th>
12723          <th class="th_description">Description</th>
12724          <th class="th_units">Units</th>
12725          <th class="th_range">Range</th>
12726          <th class="th_tags">Tags</th>
12727        </tr>
12728      </thead>
12729
12730      <tbody>
12731
12732
12733
12734
12735
12736
12737
12738
12739
12740
12741          <tr class="entry" id="dynamic_android.quirks.partialResult">
12742            <td class="entry_name
12743                entry_name_deprecated
12744             " rowspan="5">
12745              android.<wbr/>quirks.<wbr/>partial<wbr/>Result
12746            </td>
12747            <td class="entry_type">
12748                <span class="entry_type_name entry_type_name_enum">byte</span>
12749
12750              <span class="entry_type_visibility"> [hidden as boolean]</span>
12751
12752
12753
12754              <span class="entry_type_deprecated">[deprecated] </span>
12755
12756
12757                <ul class="entry_type_enum">
12758                  <li>
12759                    <span class="entry_type_enum_name">FINAL</span>
12760                    <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
12761for this capture.<wbr/></p></span>
12762                  </li>
12763                  <li>
12764                    <span class="entry_type_enum_name">PARTIAL</span>
12765                    <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
12766capture.<wbr/> More result buffers for this capture will be sent
12767by the camera device,<wbr/> the last of which will be marked
12768FINAL.<wbr/></p></span>
12769                  </li>
12770                </ul>
12771
12772            </td> <!-- entry_type -->
12773
12774            <td class="entry_description">
12775              <p>Whether a result given to the framework is the
12776final one for the capture,<wbr/> or only a partial that contains a
12777subset of the full set of dynamic metadata
12778values.<wbr/></p>
12779            </td>
12780
12781            <td class="entry_units">
12782            </td>
12783
12784            <td class="entry_range">
12785              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
12786              <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
12787            </td>
12788
12789            <td class="entry_tags">
12790            </td>
12791
12792          </tr>
12793          <tr class="entries_header">
12794            <th class="th_details" colspan="5">Details</th>
12795          </tr>
12796          <tr class="entry_cont">
12797            <td class="entry_details" colspan="5">
12798              <p>The entries in the result metadata buffers for a
12799single capture may not overlap,<wbr/> except for this entry.<wbr/> The
12800FINAL buffers must retain FIFO ordering relative to the
12801requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
12802always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
12803before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
12804in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
12805capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
12806only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
12807            </td>
12808          </tr>
12809
12810          <tr class="entries_header">
12811            <th class="th_details" colspan="5">HAL Implementation Details</th>
12812          </tr>
12813          <tr class="entry_cont">
12814            <td class="entry_details" colspan="5">
12815              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
12816for information on how to implement partial results.<wbr/></p>
12817            </td>
12818          </tr>
12819
12820          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12821           <!-- end of entry -->
12822
12823
12824
12825      <!-- end of kind -->
12826      </tbody>
12827
12828  <!-- end of section -->
12829  <tr><td colspan="6" id="section_request" class="section">request</td></tr>
12830
12831
12832      <tr><td colspan="6" class="kind">controls</td></tr>
12833
12834      <thead class="entries_header">
12835        <tr>
12836          <th class="th_name">Property Name</th>
12837          <th class="th_type">Type</th>
12838          <th class="th_description">Description</th>
12839          <th class="th_units">Units</th>
12840          <th class="th_range">Range</th>
12841          <th class="th_tags">Tags</th>
12842        </tr>
12843      </thead>
12844
12845      <tbody>
12846
12847
12848
12849
12850
12851
12852
12853
12854
12855
12856          <tr class="entry" id="controls_android.request.frameCount">
12857            <td class="entry_name
12858                entry_name_deprecated
12859             " rowspan="1">
12860              android.<wbr/>request.<wbr/>frame<wbr/>Count
12861            </td>
12862            <td class="entry_type">
12863                <span class="entry_type_name">int32</span>
12864
12865              <span class="entry_type_visibility"> [system]</span>
12866
12867
12868
12869              <span class="entry_type_deprecated">[deprecated] </span>
12870
12871
12872
12873            </td> <!-- entry_type -->
12874
12875            <td class="entry_description">
12876              <p>A frame counter set by the framework.<wbr/> Must
12877be maintained unchanged in output frame.<wbr/> This value monotonically
12878increases with every new result (that is,<wbr/> each new result has a unique
12879frameCount value).<wbr/></p>
12880            </td>
12881
12882            <td class="entry_units">
12883              incrementing integer
12884            </td>
12885
12886            <td class="entry_range">
12887              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
12888              <p>Any int.<wbr/></p>
12889            </td>
12890
12891            <td class="entry_tags">
12892            </td>
12893
12894          </tr>
12895
12896
12897          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12898           <!-- end of entry -->
12899
12900
12901          <tr class="entry" id="controls_android.request.id">
12902            <td class="entry_name
12903             " rowspan="1">
12904              android.<wbr/>request.<wbr/>id
12905            </td>
12906            <td class="entry_type">
12907                <span class="entry_type_name">int32</span>
12908
12909              <span class="entry_type_visibility"> [hidden]</span>
12910
12911
12912
12913
12914
12915
12916            </td> <!-- entry_type -->
12917
12918            <td class="entry_description">
12919              <p>An application-specified ID for the current
12920request.<wbr/> Must be maintained unchanged in output
12921frame</p>
12922            </td>
12923
12924            <td class="entry_units">
12925              arbitrary integer assigned by application
12926            </td>
12927
12928            <td class="entry_range">
12929              <p>Any int</p>
12930            </td>
12931
12932            <td class="entry_tags">
12933              <ul class="entry_tags">
12934                  <li><a href="#tag_V1">V1</a></li>
12935              </ul>
12936            </td>
12937
12938          </tr>
12939
12940
12941          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12942           <!-- end of entry -->
12943
12944
12945          <tr class="entry" id="controls_android.request.inputStreams">
12946            <td class="entry_name
12947                entry_name_deprecated
12948             " rowspan="3">
12949              android.<wbr/>request.<wbr/>input<wbr/>Streams
12950            </td>
12951            <td class="entry_type">
12952                <span class="entry_type_name">int32</span>
12953                <span class="entry_type_container">x</span>
12954
12955                <span class="entry_type_array">
12956                  n
12957                </span>
12958              <span class="entry_type_visibility"> [system]</span>
12959
12960
12961
12962              <span class="entry_type_deprecated">[deprecated] </span>
12963
12964
12965
12966            </td> <!-- entry_type -->
12967
12968            <td class="entry_description">
12969              <p>List which camera reprocess stream is used
12970for the source of reprocessing data.<wbr/></p>
12971            </td>
12972
12973            <td class="entry_units">
12974              List of camera reprocess stream IDs
12975            </td>
12976
12977            <td class="entry_range">
12978              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
12979              <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
12980            </td>
12981
12982            <td class="entry_tags">
12983              <ul class="entry_tags">
12984                  <li><a href="#tag_HAL2">HAL2</a></li>
12985              </ul>
12986            </td>
12987
12988          </tr>
12989          <tr class="entries_header">
12990            <th class="th_details" colspan="5">Details</th>
12991          </tr>
12992          <tr class="entry_cont">
12993            <td class="entry_details" colspan="5">
12994              <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
12995REPROCESS.<wbr/> Ignored otherwise</p>
12996            </td>
12997          </tr>
12998
12999
13000          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13001           <!-- end of entry -->
13002
13003
13004          <tr class="entry" id="controls_android.request.metadataMode">
13005            <td class="entry_name
13006             " rowspan="1">
13007              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
13008            </td>
13009            <td class="entry_type">
13010                <span class="entry_type_name entry_type_name_enum">byte</span>
13011
13012              <span class="entry_type_visibility"> [system]</span>
13013
13014
13015
13016
13017
13018                <ul class="entry_type_enum">
13019                  <li>
13020                    <span class="entry_type_enum_name">NONE</span>
13021                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
13022for application-bound buffer data.<wbr/> If no
13023application-bound streams exist,<wbr/> no frame should be
13024placed in the output frame queue.<wbr/> If such streams
13025exist,<wbr/> a frame should be placed on the output queue
13026with null metadata but with the necessary output buffer
13027information.<wbr/> Timestamp information should still be
13028included with any output stream buffers</p></span>
13029                  </li>
13030                  <li>
13031                    <span class="entry_type_enum_name">FULL</span>
13032                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
13033only be produced if they are separately
13034enabled</p></span>
13035                  </li>
13036                </ul>
13037
13038            </td> <!-- entry_type -->
13039
13040            <td class="entry_description">
13041              <p>How much metadata to produce on
13042output</p>
13043            </td>
13044
13045            <td class="entry_units">
13046            </td>
13047
13048            <td class="entry_range">
13049            </td>
13050
13051            <td class="entry_tags">
13052              <ul class="entry_tags">
13053                  <li><a href="#tag_FUTURE">FUTURE</a></li>
13054              </ul>
13055            </td>
13056
13057          </tr>
13058
13059
13060          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13061           <!-- end of entry -->
13062
13063
13064          <tr class="entry" id="controls_android.request.outputStreams">
13065            <td class="entry_name
13066                entry_name_deprecated
13067             " rowspan="3">
13068              android.<wbr/>request.<wbr/>output<wbr/>Streams
13069            </td>
13070            <td class="entry_type">
13071                <span class="entry_type_name">int32</span>
13072                <span class="entry_type_container">x</span>
13073
13074                <span class="entry_type_array">
13075                  n
13076                </span>
13077              <span class="entry_type_visibility"> [system]</span>
13078
13079
13080
13081              <span class="entry_type_deprecated">[deprecated] </span>
13082
13083
13084
13085            </td> <!-- entry_type -->
13086
13087            <td class="entry_description">
13088              <p>Lists which camera output streams image data
13089from this capture must be sent to</p>
13090            </td>
13091
13092            <td class="entry_units">
13093              List of camera stream IDs
13094            </td>
13095
13096            <td class="entry_range">
13097              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13098              <p>List must only include streams that have been
13099created</p>
13100            </td>
13101
13102            <td class="entry_tags">
13103              <ul class="entry_tags">
13104                  <li><a href="#tag_HAL2">HAL2</a></li>
13105              </ul>
13106            </td>
13107
13108          </tr>
13109          <tr class="entries_header">
13110            <th class="th_details" colspan="5">Details</th>
13111          </tr>
13112          <tr class="entry_cont">
13113            <td class="entry_details" colspan="5">
13114              <p>If no output streams are listed,<wbr/> then the image
13115data should simply be discarded.<wbr/> The image data must
13116still be captured for metadata and statistics production,<wbr/>
13117and the lens and flash must operate as requested.<wbr/></p>
13118            </td>
13119          </tr>
13120
13121
13122          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13123           <!-- end of entry -->
13124
13125
13126          <tr class="entry" id="controls_android.request.type">
13127            <td class="entry_name
13128                entry_name_deprecated
13129             " rowspan="1">
13130              android.<wbr/>request.<wbr/>type
13131            </td>
13132            <td class="entry_type">
13133                <span class="entry_type_name entry_type_name_enum">byte</span>
13134
13135              <span class="entry_type_visibility"> [system]</span>
13136
13137
13138
13139              <span class="entry_type_deprecated">[deprecated] </span>
13140
13141
13142                <ul class="entry_type_enum">
13143                  <li>
13144                    <span class="entry_type_enum_name">CAPTURE</span>
13145                    <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
13146and process it according to the
13147settings</p></span>
13148                  </li>
13149                  <li>
13150                    <span class="entry_type_enum_name">REPROCESS</span>
13151                    <span class="entry_type_enum_notes"><p>Process previously captured data; the
13152<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
13153source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
13154needed for reprocessing with [RP]</p></span>
13155                  </li>
13156                </ul>
13157
13158            </td> <!-- entry_type -->
13159
13160            <td class="entry_description">
13161              <p>The type of the request; either CAPTURE or
13162REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p>
13163            </td>
13164
13165            <td class="entry_units">
13166            </td>
13167
13168            <td class="entry_range">
13169              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13170            </td>
13171
13172            <td class="entry_tags">
13173              <ul class="entry_tags">
13174                  <li><a href="#tag_HAL2">HAL2</a></li>
13175              </ul>
13176            </td>
13177
13178          </tr>
13179
13180
13181          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13182           <!-- end of entry -->
13183
13184
13185
13186      <!-- end of kind -->
13187      </tbody>
13188      <tr><td colspan="6" class="kind">static</td></tr>
13189
13190      <thead class="entries_header">
13191        <tr>
13192          <th class="th_name">Property Name</th>
13193          <th class="th_type">Type</th>
13194          <th class="th_description">Description</th>
13195          <th class="th_units">Units</th>
13196          <th class="th_range">Range</th>
13197          <th class="th_tags">Tags</th>
13198        </tr>
13199      </thead>
13200
13201      <tbody>
13202
13203
13204
13205
13206
13207
13208
13209
13210
13211
13212          <tr class="entry" id="static_android.request.maxNumOutputStreams">
13213            <td class="entry_name
13214             " rowspan="3">
13215              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
13216            </td>
13217            <td class="entry_type">
13218                <span class="entry_type_name">int32</span>
13219                <span class="entry_type_container">x</span>
13220
13221                <span class="entry_type_array">
13222                  3
13223                </span>
13224              <span class="entry_type_visibility"> [hidden]</span>
13225
13226
13227              <span class="entry_type_hwlevel">[legacy] </span>
13228
13229
13230
13231
13232            </td> <!-- entry_type -->
13233
13234            <td class="entry_description">
13235              <p>The maximum numbers of different types of output streams
13236that can be configured and used simultaneously by a camera device.<wbr/></p>
13237            </td>
13238
13239            <td class="entry_units">
13240            </td>
13241
13242            <td class="entry_range">
13243              <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
13244<p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
13245<p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
13246for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
13247&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>
13248            </td>
13249
13250            <td class="entry_tags">
13251              <ul class="entry_tags">
13252                  <li><a href="#tag_BC">BC</a></li>
13253              </ul>
13254            </td>
13255
13256          </tr>
13257          <tr class="entries_header">
13258            <th class="th_details" colspan="5">Details</th>
13259          </tr>
13260          <tr class="entry_cont">
13261            <td class="entry_details" colspan="5">
13262              <p>This is a 3 element tuple that contains the max number of output simultaneous
13263streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
13264formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
13265stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
13266number 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>
13267<p>This lists the upper bound of the number of output streams supported by
13268the camera device.<wbr/> Using more streams simultaneously may require more hardware and
13269CPU resources that will consume more power.<wbr/> The image format for an output stream can
13270be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
13271The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
13272into the 3 stream types as below:</p>
13273<ul>
13274<li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
13275Typically JPEG format (ImageFormat#JPEG).<wbr/></li>
13276<li>Raw formats: ImageFormat#RAW_<wbr/>SENSOR,<wbr/> ImageFormat#RAW10 and ImageFormat#RAW_<wbr/>OPAQUE.<wbr/></li>
13277<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>
13278Typically Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888,<wbr/> ImageFormat#NV21,<wbr/> ImageFormat#YV12.<wbr/></li>
13279</ul>
13280            </td>
13281          </tr>
13282
13283
13284          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13285           <!-- end of entry -->
13286
13287
13288          <tr class="entry" id="static_android.request.maxNumOutputRaw">
13289            <td class="entry_name
13290             " rowspan="3">
13291              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
13292            </td>
13293            <td class="entry_type">
13294                <span class="entry_type_name">int32</span>
13295
13296              <span class="entry_type_visibility"> [public]</span>
13297
13298              <span class="entry_type_synthetic">[synthetic] </span>
13299
13300              <span class="entry_type_hwlevel">[legacy] </span>
13301
13302
13303
13304
13305            </td> <!-- entry_type -->
13306
13307            <td class="entry_description">
13308              <p>The maximum numbers of different types of output streams
13309that can be configured and used simultaneously by a camera device
13310for any <code>RAW</code> formats.<wbr/></p>
13311            </td>
13312
13313            <td class="entry_units">
13314            </td>
13315
13316            <td class="entry_range">
13317              <p>&gt;= 0</p>
13318            </td>
13319
13320            <td class="entry_tags">
13321            </td>
13322
13323          </tr>
13324          <tr class="entries_header">
13325            <th class="th_details" colspan="5">Details</th>
13326          </tr>
13327          <tr class="entry_cont">
13328            <td class="entry_details" colspan="5">
13329              <p>This value contains the max number of output simultaneous
13330streams from the raw sensor.<wbr/></p>
13331<p>This lists the upper bound of the number of output streams supported by
13332the camera device.<wbr/> Using more streams simultaneously may require more hardware and
13333CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
13334be 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>
13335<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
13336<ul>
13337<li>ImageFormat#RAW_<wbr/>SENSOR</li>
13338<li>ImageFormat#RAW10</li>
13339<li>Opaque <code>RAW</code></li>
13340</ul>
13341<p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
13342never support raw streams.<wbr/></p>
13343            </td>
13344          </tr>
13345
13346
13347          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13348           <!-- end of entry -->
13349
13350
13351          <tr class="entry" id="static_android.request.maxNumOutputProc">
13352            <td class="entry_name
13353             " rowspan="3">
13354              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
13355            </td>
13356            <td class="entry_type">
13357                <span class="entry_type_name">int32</span>
13358
13359              <span class="entry_type_visibility"> [public]</span>
13360
13361              <span class="entry_type_synthetic">[synthetic] </span>
13362
13363              <span class="entry_type_hwlevel">[legacy] </span>
13364
13365
13366
13367
13368            </td> <!-- entry_type -->
13369
13370            <td class="entry_description">
13371              <p>The maximum numbers of different types of output streams
13372that can be configured and used simultaneously by a camera device
13373for any processed (but not-stalling) formats.<wbr/></p>
13374            </td>
13375
13376            <td class="entry_units">
13377            </td>
13378
13379            <td class="entry_range">
13380              <p>&gt;= 3
13381for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
13382&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>
13383            </td>
13384
13385            <td class="entry_tags">
13386            </td>
13387
13388          </tr>
13389          <tr class="entries_header">
13390            <th class="th_details" colspan="5">Details</th>
13391          </tr>
13392          <tr class="entry_cont">
13393            <td class="entry_details" colspan="5">
13394              <p>This value contains the max number of output simultaneous
13395streams for any processed (but not-stalling) formats.<wbr/></p>
13396<p>This lists the upper bound of the number of output streams supported by
13397the camera device.<wbr/> Using more streams simultaneously may require more hardware and
13398CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
13399be 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>
13400<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
13401Typically:</p>
13402<ul>
13403<li>Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</li>
13404<li>ImageFormat#NV21</li>
13405<li>ImageFormat#YV12</li>
13406<li>Implementation-defined formats,<wbr/> i.<wbr/>e.<wbr/> StreamConfiguration#isOutputSupportedFor(Class)</li>
13407</ul>
13408<p>For full guarantees,<wbr/> query StreamConfigurationMap#getOutputStallDuration with
13409a processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
13410<p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
13411            </td>
13412          </tr>
13413
13414
13415          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13416           <!-- end of entry -->
13417
13418
13419          <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
13420            <td class="entry_name
13421             " rowspan="3">
13422              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
13423            </td>
13424            <td class="entry_type">
13425                <span class="entry_type_name">int32</span>
13426
13427              <span class="entry_type_visibility"> [public]</span>
13428
13429              <span class="entry_type_synthetic">[synthetic] </span>
13430
13431              <span class="entry_type_hwlevel">[legacy] </span>
13432
13433
13434
13435
13436            </td> <!-- entry_type -->
13437
13438            <td class="entry_description">
13439              <p>The maximum numbers of different types of output streams
13440that can be configured and used simultaneously by a camera device
13441for any processed (and stalling) formats.<wbr/></p>
13442            </td>
13443
13444            <td class="entry_units">
13445            </td>
13446
13447            <td class="entry_range">
13448              <p>&gt;= 1</p>
13449            </td>
13450
13451            <td class="entry_tags">
13452            </td>
13453
13454          </tr>
13455          <tr class="entries_header">
13456            <th class="th_details" colspan="5">Details</th>
13457          </tr>
13458          <tr class="entry_cont">
13459            <td class="entry_details" colspan="5">
13460              <p>This value contains the max number of output simultaneous
13461streams for any processed (but not-stalling) formats.<wbr/></p>
13462<p>This lists the upper bound of the number of output streams supported by
13463the camera device.<wbr/> Using more streams simultaneously may require more hardware and
13464CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
13465be 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>
13466<p>A processed and stalling format is defined as any non-RAW format with a stallDurations &gt; 0.<wbr/>
13467Typically only the <code>JPEG</code> format (ImageFormat#JPEG) is a stalling format.<wbr/></p>
13468<p>For full guarantees,<wbr/> query StreamConfigurationMap#getOutputStallDuration with
13469a processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
13470<p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
13471            </td>
13472          </tr>
13473
13474
13475          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13476           <!-- end of entry -->
13477
13478
13479          <tr class="entry" id="static_android.request.maxNumReprocessStreams">
13480            <td class="entry_name
13481                entry_name_deprecated
13482             " rowspan="3">
13483              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
13484            </td>
13485            <td class="entry_type">
13486                <span class="entry_type_name">int32</span>
13487                <span class="entry_type_container">x</span>
13488
13489                <span class="entry_type_array">
13490                  1
13491                </span>
13492              <span class="entry_type_visibility"> [system]</span>
13493
13494
13495
13496              <span class="entry_type_deprecated">[deprecated] </span>
13497
13498
13499
13500            </td> <!-- entry_type -->
13501
13502            <td class="entry_description">
13503              <p>How many reprocessing streams of any type
13504can be allocated at the same time.<wbr/></p>
13505            </td>
13506
13507            <td class="entry_units">
13508            </td>
13509
13510            <td class="entry_range">
13511              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13512              <p>&gt;= 0</p>
13513            </td>
13514
13515            <td class="entry_tags">
13516              <ul class="entry_tags">
13517                  <li><a href="#tag_HAL2">HAL2</a></li>
13518              </ul>
13519            </td>
13520
13521          </tr>
13522          <tr class="entries_header">
13523            <th class="th_details" colspan="5">Details</th>
13524          </tr>
13525          <tr class="entry_cont">
13526            <td class="entry_details" colspan="5">
13527              <p>Only used by HAL2.<wbr/>x.<wbr/></p>
13528<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
13529            </td>
13530          </tr>
13531
13532
13533          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13534           <!-- end of entry -->
13535
13536
13537          <tr class="entry" id="static_android.request.maxNumInputStreams">
13538            <td class="entry_name
13539             " rowspan="3">
13540              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
13541            </td>
13542            <td class="entry_type">
13543                <span class="entry_type_name">int32</span>
13544
13545              <span class="entry_type_visibility"> [hidden]</span>
13546
13547
13548              <span class="entry_type_hwlevel">[full] </span>
13549
13550
13551
13552
13553            </td> <!-- entry_type -->
13554
13555            <td class="entry_description">
13556              <p>The maximum numbers of any type of input streams
13557that can be configured and used simultaneously by a camera device.<wbr/></p>
13558            </td>
13559
13560            <td class="entry_units">
13561            </td>
13562
13563            <td class="entry_range">
13564              <p>0 or 1.<wbr/></p>
13565            </td>
13566
13567            <td class="entry_tags">
13568            </td>
13569
13570          </tr>
13571          <tr class="entries_header">
13572            <th class="th_details" colspan="5">Details</th>
13573          </tr>
13574          <tr class="entry_cont">
13575            <td class="entry_details" colspan="5">
13576              <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
13577<p>The image format for a input stream can be any supported
13578format provided by
13579<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/> When using an
13580input stream,<wbr/> there must be at least one output stream
13581configured to to receive the reprocessed images.<wbr/></p>
13582<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
13583stream image format will be RAW_<wbr/>OPAQUE,<wbr/> the associated output stream image format
13584should be JPEG.<wbr/></p>
13585            </td>
13586          </tr>
13587
13588
13589          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13590           <!-- end of entry -->
13591
13592
13593          <tr class="entry" id="static_android.request.pipelineMaxDepth">
13594            <td class="entry_name
13595             " rowspan="5">
13596              android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
13597            </td>
13598            <td class="entry_type">
13599                <span class="entry_type_name">byte</span>
13600
13601              <span class="entry_type_visibility"> [public]</span>
13602
13603
13604              <span class="entry_type_hwlevel">[legacy] </span>
13605
13606
13607
13608
13609            </td> <!-- entry_type -->
13610
13611            <td class="entry_description">
13612              <p>Specifies the number of maximum pipeline stages a frame
13613has to go through from when it's exposed to when it's available
13614to the framework.<wbr/></p>
13615            </td>
13616
13617            <td class="entry_units">
13618            </td>
13619
13620            <td class="entry_range">
13621            </td>
13622
13623            <td class="entry_tags">
13624            </td>
13625
13626          </tr>
13627          <tr class="entries_header">
13628            <th class="th_details" colspan="5">Details</th>
13629          </tr>
13630          <tr class="entry_cont">
13631            <td class="entry_details" colspan="5">
13632              <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
13633one stage to readout) from the sensor.<wbr/> The ISP then usually adds
13634its own stages to do custom HW processing.<wbr/> Further stages may be
13635added by SW processing.<wbr/></p>
13636<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
13637processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
13638depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
13639the max pipeline depth.<wbr/></p>
13640<p>A pipeline depth of X stages is equivalent to a pipeline latency of
13641X frame intervals.<wbr/></p>
13642<p>This value will be 8 or less.<wbr/></p>
13643            </td>
13644          </tr>
13645
13646          <tr class="entries_header">
13647            <th class="th_details" colspan="5">HAL Implementation Details</th>
13648          </tr>
13649          <tr class="entry_cont">
13650            <td class="entry_details" colspan="5">
13651              <p>This value should be 4 or less.<wbr/></p>
13652            </td>
13653          </tr>
13654
13655          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13656           <!-- end of entry -->
13657
13658
13659          <tr class="entry" id="static_android.request.partialResultCount">
13660            <td class="entry_name
13661             " rowspan="3">
13662              android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
13663            </td>
13664            <td class="entry_type">
13665                <span class="entry_type_name">int32</span>
13666
13667              <span class="entry_type_visibility"> [public]</span>
13668
13669
13670
13671
13672
13673
13674            </td> <!-- entry_type -->
13675
13676            <td class="entry_description">
13677              <p>Defines how many sub-components
13678a result will be composed of.<wbr/></p>
13679            </td>
13680
13681            <td class="entry_units">
13682            </td>
13683
13684            <td class="entry_range">
13685              <p>&gt;= 1</p>
13686            </td>
13687
13688            <td class="entry_tags">
13689            </td>
13690
13691          </tr>
13692          <tr class="entries_header">
13693            <th class="th_details" colspan="5">Details</th>
13694          </tr>
13695          <tr class="entry_cont">
13696            <td class="entry_details" colspan="5">
13697              <p>In order to combat the pipeline latency,<wbr/> partial results
13698may be delivered to the application layer from the camera device as
13699soon as they are available.<wbr/></p>
13700<p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
13701results are not supported,<wbr/> and only the final TotalCaptureResult will
13702be produced by the camera device.<wbr/></p>
13703<p>A typical use case for this might be: after requesting an
13704auto-focus (AF) lock the new AF state might be available 50%
13705of the way through the pipeline.<wbr/>  The camera device could
13706then immediately dispatch this state via a partial result to
13707the application,<wbr/> and the rest of the metadata via later
13708partial results.<wbr/></p>
13709            </td>
13710          </tr>
13711
13712
13713          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13714           <!-- end of entry -->
13715
13716
13717          <tr class="entry" id="static_android.request.availableCapabilities">
13718            <td class="entry_name
13719             " rowspan="5">
13720              android.<wbr/>request.<wbr/>available<wbr/>Capabilities
13721            </td>
13722            <td class="entry_type">
13723                <span class="entry_type_name entry_type_name_enum">byte</span>
13724                <span class="entry_type_container">x</span>
13725
13726                <span class="entry_type_array">
13727                  n
13728                </span>
13729              <span class="entry_type_visibility"> [public]</span>
13730
13731
13732              <span class="entry_type_hwlevel">[legacy] </span>
13733
13734
13735
13736                <ul class="entry_type_enum">
13737                  <li>
13738                    <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span>
13739                    <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
13740device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
13741supports.<wbr/></p>
13742<p>This capability is listed by all devices,<wbr/> and
13743indicates that the camera device has a feature set
13744that's comparable to the baseline requirements for the
13745older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p></span>
13746                  </li>
13747                  <li>
13748                    <span class="entry_type_enum_name">MANUAL_SENSOR</span>
13749                    <span class="entry_type_enum_optional">[optional]</span>
13750                    <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
13751as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
13752The camera device supports basic manual control of the sensor image
13753acquisition related stages.<wbr/> This means the following controls are
13754guaranteed to be supported:</p>
13755<ul>
13756<li>Manual frame duration control<ul>
13757<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
13758<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
13759</ul>
13760</li>
13761<li>Manual exposure control<ul>
13762<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
13763<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
13764</ul>
13765</li>
13766<li>Manual sensitivity control<ul>
13767<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
13768<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
13769</ul>
13770</li>
13771<li>Manual lens control (if the lens is adjustable)<ul>
13772<li>android.<wbr/>lens.<wbr/>*</li>
13773</ul>
13774</li>
13775<li>Manual flash control (if a flash unit is present)<ul>
13776<li>android.<wbr/>flash.<wbr/>*</li>
13777</ul>
13778</li>
13779<li>Manual black level locking<ul>
13780<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
13781</ul>
13782</li>
13783</ul>
13784<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
13785device will accurately report the values applied by 3A in the
13786result.<wbr/></p>
13787<p>A given camera device may also support additional manual sensor controls,<wbr/>
13788but this capability only covers the above list of controls.<wbr/></p>
13789<p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
13790additionally return a min frame duration that is greater than
13791zero for each supported size-format combination.<wbr/></p></span>
13792                  </li>
13793                  <li>
13794                    <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span>
13795                    <span class="entry_type_enum_optional">[optional]</span>
13796                    <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
13797The camera device supports basic manual control of the image post-processing
13798stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
13799<ul>
13800<li>Manual tonemap control<ul>
13801<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
13802<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
13803<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
13804</ul>
13805</li>
13806<li>Manual white balance control<ul>
13807<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
13808<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
13809</ul>
13810</li>
13811<li>Manual lens shading map control<ul>
13812<li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
13813<li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
13814<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
13815<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
13816</ul>
13817</li>
13818<li>Manual aberration correction control (if aberration correction is supported)<ul>
13819<li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
13820<li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
13821</ul>
13822</li>
13823</ul>
13824<p>If auto white balance is enabled,<wbr/> then the camera device
13825will accurately report the values applied by AWB in the result.<wbr/></p>
13826<p>A given camera device may also support additional post-processing
13827controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
13828                  </li>
13829                  <li>
13830                    <span class="entry_type_enum_name">RAW</span>
13831                    <span class="entry_type_enum_optional">[optional]</span>
13832                    <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
13833metadata for interpreting them.<wbr/></p>
13834<p>Devices supporting the RAW capability allow both for
13835saving DNG files,<wbr/> and for direct application processing of
13836raw sensor images.<wbr/></p>
13837<ul>
13838<li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
13839<li>The maximum available resolution for RAW_<wbr/>SENSOR streams
13840  will match either the value in
13841  <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
13842  <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
13843<li>All DNG-related optional metadata entries are provided
13844  by the camera device.<wbr/></li>
13845</ul></span>
13846                  </li>
13847                  <li>
13848                    <span class="entry_type_enum_name">ZSL</span>
13849                    <span class="entry_type_enum_optional">[optional]</span>
13850                    <span class="entry_type_enum_optional">[hidden]</span>
13851                    <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag use case.<wbr/></p>
13852<ul>
13853<li>At least one input stream can be used.<wbr/></li>
13854<li>RAW_<wbr/>OPAQUE is supported as an output/<wbr/>input format</li>
13855<li>Using RAW_<wbr/>OPAQUE does not cause a frame rate drop
13856  relative to the sensor's maximum capture rate (at that
13857  resolution).<wbr/></li>
13858<li>RAW_<wbr/>OPAQUE will be reprocessable into both YUV_<wbr/>420_<wbr/>888
13859  and JPEG formats.<wbr/></li>
13860<li>The maximum available resolution for RAW_<wbr/>OPAQUE streams
13861  (both input/<wbr/>output) will match the maximum available
13862  resolution of JPEG streams.<wbr/></li>
13863</ul></span>
13864                  </li>
13865                  <li>
13866                    <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span>
13867                    <span class="entry_type_enum_optional">[optional]</span>
13868                    <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
13869the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
13870reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
13871<p>The values reported for the following controls are guaranteed to be available
13872in the CaptureResult,<wbr/> including when 3A is enabled:</p>
13873<ul>
13874<li>Exposure control<ul>
13875<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
13876</ul>
13877</li>
13878<li>Sensitivity control<ul>
13879<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
13880</ul>
13881</li>
13882<li>Lens controls (if the lens is adjustable)<ul>
13883<li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
13884<li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
13885</ul>
13886</li>
13887</ul>
13888<p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
13889always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
13890                  </li>
13891                  <li>
13892                    <span class="entry_type_enum_name">BURST_CAPTURE</span>
13893                    <span class="entry_type_enum_optional">[optional]</span>
13894                    <span class="entry_type_enum_notes"><p>The camera device supports capturing maximum-resolution
13895images at &gt;= 20 frames per second,<wbr/> in at least the
13896uncompressed YUV format,<wbr/> when post-processing settings
13897are set to FAST.<wbr/></p>
13898<p>More specifically,<wbr/> this means that a size matching the
13899camera device's active array size is listed as a
13900supported size for the YUV_<wbr/>420_<wbr/>888 format in
13901<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>,<wbr/> the minimum frame
13902duration for that format and size is &lt;= 1/<wbr/>20 s,<wbr/> and
13903the <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> entry
13904lists at least one FPS range where the minimum FPS is</p>
13905<blockquote>
13906<p>= 1 /<wbr/> minimumFrameDuration for the maximum-size
13907YUV_<wbr/>420_<wbr/>888 format.<wbr/></p>
13908</blockquote>
13909<p>In addition,<wbr/> the <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> field is
13910guaranted to have a value between 0 and 4,<wbr/> inclusive.<wbr/></p></span>
13911                  </li>
13912                </ul>
13913
13914            </td> <!-- entry_type -->
13915
13916            <td class="entry_description">
13917              <p>List of capabilities that this camera device
13918advertises as fully supporting.<wbr/></p>
13919            </td>
13920
13921            <td class="entry_units">
13922            </td>
13923
13924            <td class="entry_range">
13925            </td>
13926
13927            <td class="entry_tags">
13928            </td>
13929
13930          </tr>
13931          <tr class="entries_header">
13932            <th class="th_details" colspan="5">Details</th>
13933          </tr>
13934          <tr class="entry_cont">
13935            <td class="entry_details" colspan="5">
13936              <p>A capability is a contract that the camera device makes in order
13937to be able to satisfy one or more use cases.<wbr/></p>
13938<p>Listing a capability guarantees that the whole set of features
13939required to support a common use will all be available.<wbr/></p>
13940<p>Using a subset of the functionality provided by an unsupported
13941capability may be possible on a specific camera device implementation;
13942to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
13943<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
13944<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
13945<p>The following capabilities are guaranteed to be available on
13946<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
13947<ul>
13948<li>MANUAL_<wbr/>SENSOR</li>
13949<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
13950</ul>
13951<p>Other capabilities may be available on either FULL or LIMITED
13952devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
13953            </td>
13954          </tr>
13955
13956          <tr class="entries_header">
13957            <th class="th_details" colspan="5">HAL Implementation Details</th>
13958          </tr>
13959          <tr class="entry_cont">
13960            <td class="entry_details" colspan="5">
13961              <p>Additional constraint details per-capability will be available
13962in the Compatibility Test Suite.<wbr/></p>
13963<p>Minimum baseline requirements required for the
13964BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
13965Instead refer to "BC" tags and the camera CTS tests in the
13966android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
13967<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
13968<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
13969request and the result in order to be considered to be
13970capability-compliant.<wbr/></p>
13971<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
13972then exposure time must be configurable via the request <em>and</em>
13973the actual exposure applied must be available via
13974the result.<wbr/></p>
13975<p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
13976<a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
13977            </td>
13978          </tr>
13979
13980          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13981           <!-- end of entry -->
13982
13983
13984          <tr class="entry" id="static_android.request.availableRequestKeys">
13985            <td class="entry_name
13986             " rowspan="5">
13987              android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
13988            </td>
13989            <td class="entry_type">
13990                <span class="entry_type_name">int32</span>
13991                <span class="entry_type_container">x</span>
13992
13993                <span class="entry_type_array">
13994                  n
13995                </span>
13996              <span class="entry_type_visibility"> [hidden]</span>
13997
13998
13999              <span class="entry_type_hwlevel">[legacy] </span>
14000
14001
14002
14003
14004            </td> <!-- entry_type -->
14005
14006            <td class="entry_description">
14007              <p>A list of all keys that the camera device has available
14008to use with CaptureRequest.<wbr/></p>
14009            </td>
14010
14011            <td class="entry_units">
14012            </td>
14013
14014            <td class="entry_range">
14015            </td>
14016
14017            <td class="entry_tags">
14018            </td>
14019
14020          </tr>
14021          <tr class="entries_header">
14022            <th class="th_details" colspan="5">Details</th>
14023          </tr>
14024          <tr class="entry_cont">
14025            <td class="entry_details" colspan="5">
14026              <p>Attempting to set a key into a CaptureRequest that is not
14027listed here will result in an invalid request and will be rejected
14028by the camera device.<wbr/></p>
14029<p>This field can be used to query the feature set of a camera device
14030at a more granular level than capabilities.<wbr/> This is especially
14031important for optional keys that are not listed under any capability
14032in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
14033            </td>
14034          </tr>
14035
14036          <tr class="entries_header">
14037            <th class="th_details" colspan="5">HAL Implementation Details</th>
14038          </tr>
14039          <tr class="entry_cont">
14040            <td class="entry_details" colspan="5">
14041              <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
14042extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
14043<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
14044vendor extensions API and not against this field.<wbr/></p>
14045<p>The HAL must not consume any request tags that are not listed either
14046here or in the vendor tag list.<wbr/></p>
14047<p>The public camera2 API will always make the vendor tags visible
14048via CameraCharacteristics#getAvailableCaptureRequestKeys.<wbr/></p>
14049            </td>
14050          </tr>
14051
14052          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14053           <!-- end of entry -->
14054
14055
14056          <tr class="entry" id="static_android.request.availableResultKeys">
14057            <td class="entry_name
14058             " rowspan="5">
14059              android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
14060            </td>
14061            <td class="entry_type">
14062                <span class="entry_type_name">int32</span>
14063                <span class="entry_type_container">x</span>
14064
14065                <span class="entry_type_array">
14066                  n
14067                </span>
14068              <span class="entry_type_visibility"> [hidden]</span>
14069
14070
14071              <span class="entry_type_hwlevel">[legacy] </span>
14072
14073
14074
14075
14076            </td> <!-- entry_type -->
14077
14078            <td class="entry_description">
14079              <p>A list of all keys that the camera device has available
14080to use with CaptureResult.<wbr/></p>
14081            </td>
14082
14083            <td class="entry_units">
14084            </td>
14085
14086            <td class="entry_range">
14087            </td>
14088
14089            <td class="entry_tags">
14090            </td>
14091
14092          </tr>
14093          <tr class="entries_header">
14094            <th class="th_details" colspan="5">Details</th>
14095          </tr>
14096          <tr class="entry_cont">
14097            <td class="entry_details" colspan="5">
14098              <p>Attempting to get a key from a CaptureResult that is not
14099listed here will always return a <code>null</code> value.<wbr/> Getting a key from
14100a CaptureResult that is listed here will generally never return a <code>null</code>
14101value.<wbr/></p>
14102<p>The following keys may return <code>null</code> unless they are enabled:</p>
14103<ul>
14104<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>
14105</ul>
14106<p>(Those sometimes-null keys will nevertheless be listed here
14107if they are available.<wbr/>)</p>
14108<p>This field can be used to query the feature set of a camera device
14109at a more granular level than capabilities.<wbr/> This is especially
14110important for optional keys that are not listed under any capability
14111in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
14112            </td>
14113          </tr>
14114
14115          <tr class="entries_header">
14116            <th class="th_details" colspan="5">HAL Implementation Details</th>
14117          </tr>
14118          <tr class="entry_cont">
14119            <td class="entry_details" colspan="5">
14120              <p>Tags listed here must always have an entry in the result metadata,<wbr/>
14121even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
14122matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
14123<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
14124extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
14125<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
14126vendor extensions API and not against this field.<wbr/></p>
14127<p>The HAL must not produce any result tags that are not listed either
14128here or in the vendor tag list.<wbr/></p>
14129<p>The public camera2 API will always make the vendor tags visible
14130via CameraCharacteristics#getAvailableCaptureResultKeys.<wbr/></p>
14131            </td>
14132          </tr>
14133
14134          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14135           <!-- end of entry -->
14136
14137
14138          <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
14139            <td class="entry_name
14140             " rowspan="5">
14141              android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
14142            </td>
14143            <td class="entry_type">
14144                <span class="entry_type_name">int32</span>
14145                <span class="entry_type_container">x</span>
14146
14147                <span class="entry_type_array">
14148                  n
14149                </span>
14150              <span class="entry_type_visibility"> [hidden]</span>
14151
14152
14153              <span class="entry_type_hwlevel">[legacy] </span>
14154
14155
14156
14157
14158            </td> <!-- entry_type -->
14159
14160            <td class="entry_description">
14161              <p>A list of all keys that the camera device has available
14162to use with CameraCharacteristics.<wbr/></p>
14163            </td>
14164
14165            <td class="entry_units">
14166            </td>
14167
14168            <td class="entry_range">
14169            </td>
14170
14171            <td class="entry_tags">
14172            </td>
14173
14174          </tr>
14175          <tr class="entries_header">
14176            <th class="th_details" colspan="5">Details</th>
14177          </tr>
14178          <tr class="entry_cont">
14179            <td class="entry_details" colspan="5">
14180              <p>This entry follows the same rules as
14181<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
14182CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
14183details.<wbr/></p>
14184            </td>
14185          </tr>
14186
14187          <tr class="entries_header">
14188            <th class="th_details" colspan="5">HAL Implementation Details</th>
14189          </tr>
14190          <tr class="entry_cont">
14191            <td class="entry_details" colspan="5">
14192              <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
14193even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
14194matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
14195<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
14196extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
14197<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
14198vendor extensions API and not against this field.<wbr/></p>
14199<p>The HAL must not have any tags in its static info that are not listed
14200either here or in the vendor tag list.<wbr/></p>
14201<p>The public camera2 API will always make the vendor tags visible
14202via CameraCharacteristics#getKeys.<wbr/></p>
14203            </td>
14204          </tr>
14205
14206          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14207           <!-- end of entry -->
14208
14209
14210
14211      <!-- end of kind -->
14212      </tbody>
14213      <tr><td colspan="6" class="kind">dynamic</td></tr>
14214
14215      <thead class="entries_header">
14216        <tr>
14217          <th class="th_name">Property Name</th>
14218          <th class="th_type">Type</th>
14219          <th class="th_description">Description</th>
14220          <th class="th_units">Units</th>
14221          <th class="th_range">Range</th>
14222          <th class="th_tags">Tags</th>
14223        </tr>
14224      </thead>
14225
14226      <tbody>
14227
14228
14229
14230
14231
14232
14233
14234
14235
14236
14237          <tr class="entry" id="dynamic_android.request.frameCount">
14238            <td class="entry_name
14239                entry_name_deprecated
14240             " rowspan="3">
14241              android.<wbr/>request.<wbr/>frame<wbr/>Count
14242            </td>
14243            <td class="entry_type">
14244                <span class="entry_type_name">int32</span>
14245
14246              <span class="entry_type_visibility"> [hidden]</span>
14247
14248
14249
14250              <span class="entry_type_deprecated">[deprecated] </span>
14251
14252
14253
14254            </td> <!-- entry_type -->
14255
14256            <td class="entry_description">
14257              <p>A frame counter set by the framework.<wbr/> This value monotonically
14258increases with every new result (that is,<wbr/> each new result has a unique
14259frameCount value).<wbr/></p>
14260            </td>
14261
14262            <td class="entry_units">
14263              count of frames
14264            </td>
14265
14266            <td class="entry_range">
14267              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14268              <p>&gt; 0</p>
14269            </td>
14270
14271            <td class="entry_tags">
14272            </td>
14273
14274          </tr>
14275          <tr class="entries_header">
14276            <th class="th_details" colspan="5">Details</th>
14277          </tr>
14278          <tr class="entry_cont">
14279            <td class="entry_details" colspan="5">
14280              <p>Reset on release()</p>
14281            </td>
14282          </tr>
14283
14284
14285          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14286           <!-- end of entry -->
14287
14288
14289          <tr class="entry" id="dynamic_android.request.id">
14290            <td class="entry_name
14291             " rowspan="1">
14292              android.<wbr/>request.<wbr/>id
14293            </td>
14294            <td class="entry_type">
14295                <span class="entry_type_name">int32</span>
14296
14297              <span class="entry_type_visibility"> [hidden]</span>
14298
14299
14300
14301
14302
14303
14304            </td> <!-- entry_type -->
14305
14306            <td class="entry_description">
14307              <p>An application-specified ID for the current
14308request.<wbr/> Must be maintained unchanged in output
14309frame</p>
14310            </td>
14311
14312            <td class="entry_units">
14313              arbitrary integer assigned by application
14314            </td>
14315
14316            <td class="entry_range">
14317              <p>Any int</p>
14318            </td>
14319
14320            <td class="entry_tags">
14321              <ul class="entry_tags">
14322                  <li><a href="#tag_V1">V1</a></li>
14323              </ul>
14324            </td>
14325
14326          </tr>
14327
14328
14329          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14330           <!-- end of entry -->
14331
14332
14333          <tr class="entry" id="dynamic_android.request.metadataMode">
14334            <td class="entry_name
14335             " rowspan="1">
14336              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
14337            </td>
14338            <td class="entry_type">
14339                <span class="entry_type_name entry_type_name_enum">byte</span>
14340
14341              <span class="entry_type_visibility"> [system]</span>
14342
14343
14344
14345
14346
14347                <ul class="entry_type_enum">
14348                  <li>
14349                    <span class="entry_type_enum_name">NONE</span>
14350                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
14351for application-bound buffer data.<wbr/> If no
14352application-bound streams exist,<wbr/> no frame should be
14353placed in the output frame queue.<wbr/> If such streams
14354exist,<wbr/> a frame should be placed on the output queue
14355with null metadata but with the necessary output buffer
14356information.<wbr/> Timestamp information should still be
14357included with any output stream buffers</p></span>
14358                  </li>
14359                  <li>
14360                    <span class="entry_type_enum_name">FULL</span>
14361                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
14362only be produced if they are separately
14363enabled</p></span>
14364                  </li>
14365                </ul>
14366
14367            </td> <!-- entry_type -->
14368
14369            <td class="entry_description">
14370              <p>How much metadata to produce on
14371output</p>
14372            </td>
14373
14374            <td class="entry_units">
14375            </td>
14376
14377            <td class="entry_range">
14378            </td>
14379
14380            <td class="entry_tags">
14381              <ul class="entry_tags">
14382                  <li><a href="#tag_FUTURE">FUTURE</a></li>
14383              </ul>
14384            </td>
14385
14386          </tr>
14387
14388
14389          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14390           <!-- end of entry -->
14391
14392
14393          <tr class="entry" id="dynamic_android.request.outputStreams">
14394            <td class="entry_name
14395                entry_name_deprecated
14396             " rowspan="3">
14397              android.<wbr/>request.<wbr/>output<wbr/>Streams
14398            </td>
14399            <td class="entry_type">
14400                <span class="entry_type_name">int32</span>
14401                <span class="entry_type_container">x</span>
14402
14403                <span class="entry_type_array">
14404                  n
14405                </span>
14406              <span class="entry_type_visibility"> [system]</span>
14407
14408
14409
14410              <span class="entry_type_deprecated">[deprecated] </span>
14411
14412
14413
14414            </td> <!-- entry_type -->
14415
14416            <td class="entry_description">
14417              <p>Lists which camera output streams image data
14418from this capture must be sent to</p>
14419            </td>
14420
14421            <td class="entry_units">
14422              List of camera stream IDs
14423            </td>
14424
14425            <td class="entry_range">
14426              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14427              <p>List must only include streams that have been
14428created</p>
14429            </td>
14430
14431            <td class="entry_tags">
14432              <ul class="entry_tags">
14433                  <li><a href="#tag_HAL2">HAL2</a></li>
14434              </ul>
14435            </td>
14436
14437          </tr>
14438          <tr class="entries_header">
14439            <th class="th_details" colspan="5">Details</th>
14440          </tr>
14441          <tr class="entry_cont">
14442            <td class="entry_details" colspan="5">
14443              <p>If no output streams are listed,<wbr/> then the image
14444data should simply be discarded.<wbr/> The image data must
14445still be captured for metadata and statistics production,<wbr/>
14446and the lens and flash must operate as requested.<wbr/></p>
14447            </td>
14448          </tr>
14449
14450
14451          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14452           <!-- end of entry -->
14453
14454
14455          <tr class="entry" id="dynamic_android.request.pipelineDepth">
14456            <td class="entry_name
14457             " rowspan="5">
14458              android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
14459            </td>
14460            <td class="entry_type">
14461                <span class="entry_type_name">byte</span>
14462
14463              <span class="entry_type_visibility"> [public]</span>
14464
14465
14466              <span class="entry_type_hwlevel">[legacy] </span>
14467
14468
14469
14470
14471            </td> <!-- entry_type -->
14472
14473            <td class="entry_description">
14474              <p>Specifies the number of pipeline stages the frame went
14475through from when it was exposed to when the final completed result
14476was available to the framework.<wbr/></p>
14477            </td>
14478
14479            <td class="entry_units">
14480            </td>
14481
14482            <td class="entry_range">
14483              <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
14484            </td>
14485
14486            <td class="entry_tags">
14487            </td>
14488
14489          </tr>
14490          <tr class="entries_header">
14491            <th class="th_details" colspan="5">Details</th>
14492          </tr>
14493          <tr class="entry_cont">
14494            <td class="entry_details" colspan="5">
14495              <p>Depending on what settings are used in the request,<wbr/> and
14496what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
14497and some pipeline stages skipped.<wbr/></p>
14498<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
14499            </td>
14500          </tr>
14501
14502          <tr class="entries_header">
14503            <th class="th_details" colspan="5">HAL Implementation Details</th>
14504          </tr>
14505          <tr class="entry_cont">
14506            <td class="entry_details" colspan="5">
14507              <p>This value must always represent the accurate count of how many
14508pipeline stages were actually used.<wbr/></p>
14509            </td>
14510          </tr>
14511
14512          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14513           <!-- end of entry -->
14514
14515
14516
14517      <!-- end of kind -->
14518      </tbody>
14519
14520  <!-- end of section -->
14521  <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr>
14522
14523
14524      <tr><td colspan="6" class="kind">controls</td></tr>
14525
14526      <thead class="entries_header">
14527        <tr>
14528          <th class="th_name">Property Name</th>
14529          <th class="th_type">Type</th>
14530          <th class="th_description">Description</th>
14531          <th class="th_units">Units</th>
14532          <th class="th_range">Range</th>
14533          <th class="th_tags">Tags</th>
14534        </tr>
14535      </thead>
14536
14537      <tbody>
14538
14539
14540
14541
14542
14543
14544
14545
14546
14547
14548          <tr class="entry" id="controls_android.scaler.cropRegion">
14549            <td class="entry_name
14550             " rowspan="5">
14551              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
14552            </td>
14553            <td class="entry_type">
14554                <span class="entry_type_name">int32</span>
14555                <span class="entry_type_container">x</span>
14556
14557                <span class="entry_type_array">
14558                  4
14559                </span>
14560              <span class="entry_type_visibility"> [public as rectangle]</span>
14561
14562
14563              <span class="entry_type_hwlevel">[legacy] </span>
14564
14565
14566
14567
14568            </td> <!-- entry_type -->
14569
14570            <td class="entry_description">
14571              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
14572            </td>
14573
14574            <td class="entry_units">
14575              Pixel coordinates relative to
14576          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
14577            </td>
14578
14579            <td class="entry_range">
14580            </td>
14581
14582            <td class="entry_tags">
14583              <ul class="entry_tags">
14584                  <li><a href="#tag_BC">BC</a></li>
14585              </ul>
14586            </td>
14587
14588          </tr>
14589          <tr class="entries_header">
14590            <th class="th_details" colspan="5">Details</th>
14591          </tr>
14592          <tr class="entry_cont">
14593            <td class="entry_details" colspan="5">
14594              <p>This control can be used to implement digital zoom.<wbr/></p>
14595<p>The crop region coordinate system is based off
14596<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
14597top-left corner of the sensor active array.<wbr/></p>
14598<p>Output streams use this rectangle to produce their output,<wbr/>
14599cropping to a smaller region if necessary to maintain the
14600stream's aspect ratio,<wbr/> then scaling the sensor input to
14601match the output's configured resolution.<wbr/></p>
14602<p>The crop region is applied after the RAW to other color
14603space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
14604(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
14605croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
14606<p>For non-raw streams,<wbr/> any additional per-stream cropping will
14607be done to maximize the final pixel area of the stream.<wbr/></p>
14608<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
14609ratio,<wbr/> then 4:3 streams will use the exact crop
14610region.<wbr/> 16:9 streams will further crop vertically
14611(letterbox).<wbr/></p>
14612<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
14613outputs will crop horizontally (pillarbox),<wbr/> and 16:9
14614streams will match exactly.<wbr/> These additional crops will
14615be centered within the crop region.<wbr/></p>
14616<p>The width and height of the crop region cannot
14617be set to be smaller than
14618<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
14619<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>
14620<p>The camera device may adjust the crop region to account
14621for rounding and other hardware requirements; the final
14622crop region used will be included in the output capture
14623result.<wbr/></p>
14624            </td>
14625          </tr>
14626
14627          <tr class="entries_header">
14628            <th class="th_details" colspan="5">HAL Implementation Details</th>
14629          </tr>
14630          <tr class="entry_cont">
14631            <td class="entry_details" colspan="5">
14632              <p>The output streams must maintain square pixels at all
14633times,<wbr/> no matter what the relative aspect ratios of the
14634crop region and the stream are.<wbr/>  Negative values for
14635corner are allowed for raw output if full pixel array is
14636larger than active pixel array.<wbr/> Width and height may be
14637rounded to nearest larger supportable width,<wbr/> especially
14638for raw output,<wbr/> where only a few fixed scales may be
14639possible.<wbr/></p>
14640<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
14641            </td>
14642          </tr>
14643
14644          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14645           <!-- end of entry -->
14646
14647
14648
14649      <!-- end of kind -->
14650      </tbody>
14651      <tr><td colspan="6" class="kind">static</td></tr>
14652
14653      <thead class="entries_header">
14654        <tr>
14655          <th class="th_name">Property Name</th>
14656          <th class="th_type">Type</th>
14657          <th class="th_description">Description</th>
14658          <th class="th_units">Units</th>
14659          <th class="th_range">Range</th>
14660          <th class="th_tags">Tags</th>
14661        </tr>
14662      </thead>
14663
14664      <tbody>
14665
14666
14667
14668
14669
14670
14671
14672
14673
14674
14675          <tr class="entry" id="static_android.scaler.availableFormats">
14676            <td class="entry_name
14677                entry_name_deprecated
14678             " rowspan="5">
14679              android.<wbr/>scaler.<wbr/>available<wbr/>Formats
14680            </td>
14681            <td class="entry_type">
14682                <span class="entry_type_name entry_type_name_enum">int32</span>
14683                <span class="entry_type_container">x</span>
14684
14685                <span class="entry_type_array">
14686                  n
14687                </span>
14688              <span class="entry_type_visibility"> [hidden as imageFormat]</span>
14689
14690
14691
14692              <span class="entry_type_deprecated">[deprecated] </span>
14693
14694
14695                <ul class="entry_type_enum">
14696                  <li>
14697                    <span class="entry_type_enum_name">RAW16</span>
14698                    <span class="entry_type_enum_optional">[optional]</span>
14699                    <span class="entry_type_enum_value">0x20</span>
14700                    <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
14701buffers with 16-bit pixels.<wbr/></p>
14702<p>Buffers of this format are typically expected to have a
14703Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
14704<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
14705CFAs that are not representable by a format in
14706<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
14707use this format.<wbr/></p>
14708<p>Buffers of this format will also follow the constraints given for
14709RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
14710<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
14711the full set of performance guarantees.<wbr/></p></span>
14712                  </li>
14713                  <li>
14714                    <span class="entry_type_enum_name">RAW_OPAQUE</span>
14715                    <span class="entry_type_enum_optional">[optional]</span>
14716                    <span class="entry_type_enum_value">0x24</span>
14717                    <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE is a format for raw image buffers coming from an
14718image sensor.<wbr/></p>
14719<p>The actual structure of buffers of this format is
14720platform-specific,<wbr/> but must follow several constraints:</p>
14721<ol>
14722<li>No image post-processing operations may have been applied to
14723buffers of this type.<wbr/> These buffers contain raw image data coming
14724directly from the image sensor.<wbr/></li>
14725<li>If a buffer of this format is passed to the camera device for
14726reprocessing,<wbr/> the resulting images will be identical to the images
14727produced if the buffer had come directly from the sensor and was
14728processed with the same settings.<wbr/></li>
14729</ol>
14730<p>The intended use for this format is to allow access to the native
14731raw format buffers coming directly from the camera sensor without
14732any additional conversions or decrease in framerate.<wbr/></p>
14733<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
14734performance guarantees.<wbr/></p></span>
14735                  </li>
14736                  <li>
14737                    <span class="entry_type_enum_name">YV12</span>
14738                    <span class="entry_type_enum_optional">[optional]</span>
14739                    <span class="entry_type_enum_value">0x32315659</span>
14740                    <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
14741                  </li>
14742                  <li>
14743                    <span class="entry_type_enum_name">YCrCb_420_SP</span>
14744                    <span class="entry_type_enum_optional">[optional]</span>
14745                    <span class="entry_type_enum_value">0x11</span>
14746                    <span class="entry_type_enum_notes"><p>NV21</p></span>
14747                  </li>
14748                  <li>
14749                    <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span>
14750                    <span class="entry_type_enum_value">0x22</span>
14751                    <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
14752                  </li>
14753                  <li>
14754                    <span class="entry_type_enum_name">YCbCr_420_888</span>
14755                    <span class="entry_type_enum_value">0x23</span>
14756                    <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
14757                  </li>
14758                  <li>
14759                    <span class="entry_type_enum_name">BLOB</span>
14760                    <span class="entry_type_enum_value">0x21</span>
14761                    <span class="entry_type_enum_notes"><p>JPEG format</p></span>
14762                  </li>
14763                </ul>
14764
14765            </td> <!-- entry_type -->
14766
14767            <td class="entry_description">
14768              <p>The list of image formats that are supported by this
14769camera device for output streams.<wbr/></p>
14770            </td>
14771
14772            <td class="entry_units">
14773            </td>
14774
14775            <td class="entry_range">
14776              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14777            </td>
14778
14779            <td class="entry_tags">
14780              <ul class="entry_tags">
14781                  <li><a href="#tag_BC">BC</a></li>
14782              </ul>
14783            </td>
14784
14785          </tr>
14786          <tr class="entries_header">
14787            <th class="th_details" colspan="5">Details</th>
14788          </tr>
14789          <tr class="entry_cont">
14790            <td class="entry_details" colspan="5">
14791              <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
14792<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
14793            </td>
14794          </tr>
14795
14796          <tr class="entries_header">
14797            <th class="th_details" colspan="5">HAL Implementation Details</th>
14798          </tr>
14799          <tr class="entry_cont">
14800            <td class="entry_details" colspan="5">
14801              <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
14802system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
14803<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
14804gralloc module will select a format based on the usage flags provided
14805by the camera HAL device and the other endpoint of the stream.<wbr/> It is
14806usually used by preview and recording streams,<wbr/> where the application doesn't
14807need access the image data.<wbr/></p>
14808<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
14809needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
14810<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
14811<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
14812recommended that any information used by the camera device when
14813processing images is fully expressed by the result metadata
14814for that image buffer.<wbr/></p>
14815            </td>
14816          </tr>
14817
14818          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14819           <!-- end of entry -->
14820
14821
14822          <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
14823            <td class="entry_name
14824                entry_name_deprecated
14825             " rowspan="3">
14826              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
14827            </td>
14828            <td class="entry_type">
14829                <span class="entry_type_name">int64</span>
14830                <span class="entry_type_container">x</span>
14831
14832                <span class="entry_type_array">
14833                  n
14834                </span>
14835              <span class="entry_type_visibility"> [hidden]</span>
14836
14837
14838
14839              <span class="entry_type_deprecated">[deprecated] </span>
14840
14841
14842
14843            </td> <!-- entry_type -->
14844
14845            <td class="entry_description">
14846              <p>The minimum frame duration that is supported
14847for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
14848            </td>
14849
14850            <td class="entry_units">
14851              Nanoseconds
14852            </td>
14853
14854            <td class="entry_range">
14855              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14856              <p>TODO: Remove property.<wbr/></p>
14857            </td>
14858
14859            <td class="entry_tags">
14860              <ul class="entry_tags">
14861                  <li><a href="#tag_BC">BC</a></li>
14862              </ul>
14863            </td>
14864
14865          </tr>
14866          <tr class="entries_header">
14867            <th class="th_details" colspan="5">Details</th>
14868          </tr>
14869          <tr class="entry_cont">
14870            <td class="entry_details" colspan="5">
14871              <p>This corresponds to the minimum steady-state frame duration when only
14872that JPEG stream is active and captured in a burst,<wbr/> with all
14873processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
14874<p>When multiple streams are configured,<wbr/> the minimum
14875frame duration will be &gt;= max(individual stream min
14876durations)</p>
14877            </td>
14878          </tr>
14879
14880
14881          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14882           <!-- end of entry -->
14883
14884
14885          <tr class="entry" id="static_android.scaler.availableJpegSizes">
14886            <td class="entry_name
14887                entry_name_deprecated
14888             " rowspan="5">
14889              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
14890            </td>
14891            <td class="entry_type">
14892                <span class="entry_type_name">int32</span>
14893                <span class="entry_type_container">x</span>
14894
14895                <span class="entry_type_array">
14896                  n x 2
14897                </span>
14898              <span class="entry_type_visibility"> [hidden as size]</span>
14899
14900
14901
14902              <span class="entry_type_deprecated">[deprecated] </span>
14903
14904
14905
14906            </td> <!-- entry_type -->
14907
14908            <td class="entry_description">
14909              <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
14910            </td>
14911
14912            <td class="entry_units">
14913            </td>
14914
14915            <td class="entry_range">
14916              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14917              <p>TODO: Remove property.<wbr/></p>
14918            </td>
14919
14920            <td class="entry_tags">
14921              <ul class="entry_tags">
14922                  <li><a href="#tag_BC">BC</a></li>
14923              </ul>
14924            </td>
14925
14926          </tr>
14927          <tr class="entries_header">
14928            <th class="th_details" colspan="5">Details</th>
14929          </tr>
14930          <tr class="entry_cont">
14931            <td class="entry_details" colspan="5">
14932              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
14933sensor 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>
14934            </td>
14935          </tr>
14936
14937          <tr class="entries_header">
14938            <th class="th_details" colspan="5">HAL Implementation Details</th>
14939          </tr>
14940          <tr class="entry_cont">
14941            <td class="entry_details" colspan="5">
14942              <p>The HAL must include sensor maximum resolution
14943(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
14944and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
14945            </td>
14946          </tr>
14947
14948          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14949           <!-- end of entry -->
14950
14951
14952          <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
14953            <td class="entry_name
14954             " rowspan="3">
14955              android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
14956            </td>
14957            <td class="entry_type">
14958                <span class="entry_type_name">float</span>
14959
14960              <span class="entry_type_visibility"> [public]</span>
14961
14962
14963              <span class="entry_type_hwlevel">[legacy] </span>
14964
14965
14966
14967
14968            </td> <!-- entry_type -->
14969
14970            <td class="entry_description">
14971              <p>The maximum ratio between both active area width
14972and crop region width,<wbr/> and active area height and
14973crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
14974            </td>
14975
14976            <td class="entry_units">
14977              Zoom scale factor
14978            </td>
14979
14980            <td class="entry_range">
14981              <p>&gt;=1</p>
14982            </td>
14983
14984            <td class="entry_tags">
14985              <ul class="entry_tags">
14986                  <li><a href="#tag_BC">BC</a></li>
14987              </ul>
14988            </td>
14989
14990          </tr>
14991          <tr class="entries_header">
14992            <th class="th_details" colspan="5">Details</th>
14993          </tr>
14994          <tr class="entry_cont">
14995            <td class="entry_details" colspan="5">
14996              <p>This represents the maximum amount of zooming possible by
14997the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
14998window size.<wbr/></p>
14999<p>Crop regions that have a width or height that is smaller
15000than this ratio allows will be rounded up to the minimum
15001allowed size by the camera device.<wbr/></p>
15002            </td>
15003          </tr>
15004
15005
15006          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15007           <!-- end of entry -->
15008
15009
15010          <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
15011            <td class="entry_name
15012                entry_name_deprecated
15013             " rowspan="3">
15014              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
15015            </td>
15016            <td class="entry_type">
15017                <span class="entry_type_name">int64</span>
15018                <span class="entry_type_container">x</span>
15019
15020                <span class="entry_type_array">
15021                  n
15022                </span>
15023              <span class="entry_type_visibility"> [hidden]</span>
15024
15025
15026
15027              <span class="entry_type_deprecated">[deprecated] </span>
15028
15029
15030
15031            </td> <!-- entry_type -->
15032
15033            <td class="entry_description">
15034              <p>For each available processed output size (defined in
15035<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
15036minimum supportable frame duration for that size.<wbr/></p>
15037            </td>
15038
15039            <td class="entry_units">
15040              Nanoseconds
15041            </td>
15042
15043            <td class="entry_range">
15044              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15045            </td>
15046
15047            <td class="entry_tags">
15048              <ul class="entry_tags">
15049                  <li><a href="#tag_BC">BC</a></li>
15050              </ul>
15051            </td>
15052
15053          </tr>
15054          <tr class="entries_header">
15055            <th class="th_details" colspan="5">Details</th>
15056          </tr>
15057          <tr class="entry_cont">
15058            <td class="entry_details" colspan="5">
15059              <p>This should correspond to the frame duration when only that processed
15060stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
15061set to FAST.<wbr/></p>
15062<p>When multiple streams are configured,<wbr/> the minimum frame duration will
15063be &gt;= max(individual stream min durations).<wbr/></p>
15064            </td>
15065          </tr>
15066
15067
15068          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15069           <!-- end of entry -->
15070
15071
15072          <tr class="entry" id="static_android.scaler.availableProcessedSizes">
15073            <td class="entry_name
15074                entry_name_deprecated
15075             " rowspan="5">
15076              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
15077            </td>
15078            <td class="entry_type">
15079                <span class="entry_type_name">int32</span>
15080                <span class="entry_type_container">x</span>
15081
15082                <span class="entry_type_array">
15083                  n x 2
15084                </span>
15085              <span class="entry_type_visibility"> [hidden as size]</span>
15086
15087
15088
15089              <span class="entry_type_deprecated">[deprecated] </span>
15090
15091
15092
15093            </td> <!-- entry_type -->
15094
15095            <td class="entry_description">
15096              <p>The resolutions available for use with
15097processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
15098platform opaque YUV/<wbr/>RGB streams to the GPU or video
15099encoders.<wbr/></p>
15100            </td>
15101
15102            <td class="entry_units">
15103            </td>
15104
15105            <td class="entry_range">
15106              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15107            </td>
15108
15109            <td class="entry_tags">
15110              <ul class="entry_tags">
15111                  <li><a href="#tag_BC">BC</a></li>
15112              </ul>
15113            </td>
15114
15115          </tr>
15116          <tr class="entries_header">
15117            <th class="th_details" colspan="5">Details</th>
15118          </tr>
15119          <tr class="entry_cont">
15120            <td class="entry_details" colspan="5">
15121              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
15122<p>For a given use case,<wbr/> the actual maximum supported resolution
15123may be lower than what is listed here,<wbr/> depending on the destination
15124Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
15125the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
15126smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
15127can provide.<wbr/></p>
15128<p>Please reference the documentation for the image data destination to
15129check if it limits the maximum size for image data.<wbr/></p>
15130            </td>
15131          </tr>
15132
15133          <tr class="entries_header">
15134            <th class="th_details" colspan="5">HAL Implementation Details</th>
15135          </tr>
15136          <tr class="entry_cont">
15137            <td class="entry_details" colspan="5">
15138              <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/>
15139the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>
15140and each below resolution if it is smaller than or equal to the sensor
15141maximum resolution (if they are not listed in JPEG sizes already):</p>
15142<ul>
15143<li>240p (320 x 240)</li>
15144<li>480p (640 x 480)</li>
15145<li>720p (1280 x 720)</li>
15146<li>1080p (1920 x 1080)</li>
15147</ul>
15148<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/>
15149the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
15150            </td>
15151          </tr>
15152
15153          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15154           <!-- end of entry -->
15155
15156
15157          <tr class="entry" id="static_android.scaler.availableRawMinDurations">
15158            <td class="entry_name
15159                entry_name_deprecated
15160             " rowspan="3">
15161              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
15162            </td>
15163            <td class="entry_type">
15164                <span class="entry_type_name">int64</span>
15165                <span class="entry_type_container">x</span>
15166
15167                <span class="entry_type_array">
15168                  n
15169                </span>
15170              <span class="entry_type_visibility"> [system]</span>
15171
15172
15173
15174              <span class="entry_type_deprecated">[deprecated] </span>
15175
15176
15177
15178            </td> <!-- entry_type -->
15179
15180            <td class="entry_description">
15181              <p>For each available raw output size (defined in
15182<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
15183supportable frame duration for that size.<wbr/></p>
15184            </td>
15185
15186            <td class="entry_units">
15187              Nanoseconds
15188            </td>
15189
15190            <td class="entry_range">
15191              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15192            </td>
15193
15194            <td class="entry_tags">
15195              <ul class="entry_tags">
15196                  <li><a href="#tag_BC">BC</a></li>
15197              </ul>
15198            </td>
15199
15200          </tr>
15201          <tr class="entries_header">
15202            <th class="th_details" colspan="5">Details</th>
15203          </tr>
15204          <tr class="entry_cont">
15205            <td class="entry_details" colspan="5">
15206              <p>Should correspond to the frame duration when only the raw stream is
15207active.<wbr/></p>
15208<p>When multiple streams are configured,<wbr/> the minimum
15209frame duration will be &gt;= max(individual stream min
15210durations)</p>
15211            </td>
15212          </tr>
15213
15214
15215          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15216           <!-- end of entry -->
15217
15218
15219          <tr class="entry" id="static_android.scaler.availableRawSizes">
15220            <td class="entry_name
15221                entry_name_deprecated
15222             " rowspan="1">
15223              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
15224            </td>
15225            <td class="entry_type">
15226                <span class="entry_type_name">int32</span>
15227                <span class="entry_type_container">x</span>
15228
15229                <span class="entry_type_array">
15230                  n x 2
15231                </span>
15232              <span class="entry_type_visibility"> [system as size]</span>
15233
15234
15235
15236              <span class="entry_type_deprecated">[deprecated] </span>
15237
15238
15239
15240            </td> <!-- entry_type -->
15241
15242            <td class="entry_description">
15243              <p>The resolutions available for use with raw
15244sensor output streams,<wbr/> listed as width,<wbr/>
15245height</p>
15246            </td>
15247
15248            <td class="entry_units">
15249            </td>
15250
15251            <td class="entry_range">
15252              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15253            </td>
15254
15255            <td class="entry_tags">
15256            </td>
15257
15258          </tr>
15259
15260
15261          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15262           <!-- end of entry -->
15263
15264
15265          <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
15266            <td class="entry_name
15267             " rowspan="5">
15268              android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
15269            </td>
15270            <td class="entry_type">
15271                <span class="entry_type_name">int32</span>
15272                <span class="entry_type_container">x</span>
15273
15274                <span class="entry_type_array">
15275                  n
15276                </span>
15277              <span class="entry_type_visibility"> [hidden as imageFormat]</span>
15278
15279
15280              <span class="entry_type_hwlevel">[full] </span>
15281
15282
15283
15284
15285            </td> <!-- entry_type -->
15286
15287            <td class="entry_description">
15288              <p>The mapping of image formats that are supported by this
15289camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
15290            </td>
15291
15292            <td class="entry_units">
15293            </td>
15294
15295            <td class="entry_range">
15296            </td>
15297
15298            <td class="entry_tags">
15299            </td>
15300
15301          </tr>
15302          <tr class="entries_header">
15303            <th class="th_details" colspan="5">Details</th>
15304          </tr>
15305          <tr class="entry_cont">
15306            <td class="entry_details" colspan="5">
15307              <p>All camera devices with at least 1
15308<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
15309available input format.<wbr/></p>
15310<p>The camera device will support the following map of formats,<wbr/>
15311if its dependent capability is supported:</p>
15312<table>
15313<thead>
15314<tr>
15315<th align="left">Input Format</th>
15316<th align="left">Output Format</th>
15317<th align="left">Capability</th>
15318</tr>
15319</thead>
15320<tbody>
15321<tr>
15322<td align="left">RAW_<wbr/>OPAQUE</td>
15323<td align="left">JPEG</td>
15324<td align="left">ZSL</td>
15325</tr>
15326<tr>
15327<td align="left">RAW_<wbr/>OPAQUE</td>
15328<td align="left">YUV_<wbr/>420_<wbr/>888</td>
15329<td align="left">ZSL</td>
15330</tr>
15331<tr>
15332<td align="left">RAW_<wbr/>OPAQUE</td>
15333<td align="left">RAW16</td>
15334<td align="left">RAW</td>
15335</tr>
15336<tr>
15337<td align="left">RAW16</td>
15338<td align="left">YUV_<wbr/>420_<wbr/>888</td>
15339<td align="left">RAW</td>
15340</tr>
15341<tr>
15342<td align="left">RAW16</td>
15343<td align="left">JPEG</td>
15344<td align="left">RAW</td>
15345</tr>
15346</tbody>
15347</table>
15348<p>For ZSL-capable camera devices,<wbr/> using the RAW_<wbr/>OPAQUE format
15349as either input or output will never hurt maximum frame rate (i.<wbr/>e.<wbr/>
15350Stream<wbr/>Configuration<wbr/>Map#get<wbr/>Output<wbr/>Stall<wbr/>Duration(int,<wbr/>Size)
15351for a <code>format =</code> RAW_<wbr/>OPAQUE is always 0).<wbr/></p>
15352<p>Attempting to configure an input stream with output streams not
15353listed as available in this map is not valid.<wbr/></p>
15354<p>TODO: typedef to ReprocessFormatMap</p>
15355            </td>
15356          </tr>
15357
15358          <tr class="entries_header">
15359            <th class="th_details" colspan="5">HAL Implementation Details</th>
15360          </tr>
15361          <tr class="entry_cont">
15362            <td class="entry_details" colspan="5">
15363              <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
15364of the image format enumerations.<wbr/></p>
15365<p>This value is encoded as a variable-size array-of-arrays.<wbr/>
15366The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
15367<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
15368inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
15369<p>A code sample to read/<wbr/>write this encoding (with a device that
15370supports reprocessing RAW_<wbr/>OPAQUE to RAW16,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
15371and reprocessing RAW16 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
15372<pre><code>//<wbr/> reading
15373int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
15374for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
15375    int32_<wbr/>t format = contents[i++];
15376    int32_<wbr/>t length = contents[i++];
15377    int32_<wbr/>t output_<wbr/>formats[length];
15378    memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
15379           length * sizeof(int32_<wbr/>t));
15380    i += length;
15381}
15382
15383//<wbr/> writing (static example,<wbr/> RAW+ZSL)
15384int32_<wbr/>t[] contents = {
15385  RAW_<wbr/>OPAQUE,<wbr/> 3,<wbr/> RAW16,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
15386  RAW16,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
15387};
15388update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
15389      sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
15390</code></pre>
15391<p>If the HAL claims to support any of the capabilities listed in the
15392above details,<wbr/> then it must also support all the input-output
15393combinations listed for that capability.<wbr/> It can optionally support
15394additional formats if it so chooses.<wbr/></p>
15395<p>Refer to <a href="#static_android.scaler.availableFormats">android.<wbr/>scaler.<wbr/>available<wbr/>Formats</a> for the enum values
15396which correspond to HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
15397system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
15398            </td>
15399          </tr>
15400
15401          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15402           <!-- end of entry -->
15403
15404
15405          <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
15406            <td class="entry_name
15407             " rowspan="5">
15408              android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
15409            </td>
15410            <td class="entry_type">
15411                <span class="entry_type_name entry_type_name_enum">int32</span>
15412                <span class="entry_type_container">x</span>
15413
15414                <span class="entry_type_array">
15415                  n x 4
15416                </span>
15417              <span class="entry_type_visibility"> [hidden as streamConfiguration]</span>
15418
15419
15420              <span class="entry_type_hwlevel">[legacy] </span>
15421
15422
15423
15424                <ul class="entry_type_enum">
15425                  <li>
15426                    <span class="entry_type_enum_name">OUTPUT</span>
15427                  </li>
15428                  <li>
15429                    <span class="entry_type_enum_name">INPUT</span>
15430                  </li>
15431                </ul>
15432
15433            </td> <!-- entry_type -->
15434
15435            <td class="entry_description">
15436              <p>The available stream configurations that this
15437camera device supports
15438(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
15439            </td>
15440
15441            <td class="entry_units">
15442            </td>
15443
15444            <td class="entry_range">
15445            </td>
15446
15447            <td class="entry_tags">
15448            </td>
15449
15450          </tr>
15451          <tr class="entries_header">
15452            <th class="th_details" colspan="5">Details</th>
15453          </tr>
15454          <tr class="entry_cont">
15455            <td class="entry_details" colspan="5">
15456              <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
15457tuples.<wbr/></p>
15458<p>For a given use case,<wbr/> the actual maximum supported resolution
15459may be lower than what is listed here,<wbr/> depending on the destination
15460Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
15461the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
15462smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
15463can provide.<wbr/></p>
15464<p>Please reference the documentation for the image data destination to
15465check if it limits the maximum size for image data.<wbr/></p>
15466<p>Not all output formats may be supported in a configuration with
15467an input stream of a particular format.<wbr/> For more details,<wbr/> see
15468<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
15469<p>The following table describes the minimum required output stream
15470configurations based on the hardware level
15471(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
15472<table>
15473<thead>
15474<tr>
15475<th align="center">Format</th>
15476<th align="center">Size</th>
15477<th align="center">Hardware Level</th>
15478<th align="center">Notes</th>
15479</tr>
15480</thead>
15481<tbody>
15482<tr>
15483<td align="center">JPEG</td>
15484<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
15485<td align="center">Any</td>
15486<td align="center"></td>
15487</tr>
15488<tr>
15489<td align="center">JPEG</td>
15490<td align="center">1920x1080 (1080p)</td>
15491<td align="center">Any</td>
15492<td align="center">if 1080p &lt;= activeArraySize</td>
15493</tr>
15494<tr>
15495<td align="center">JPEG</td>
15496<td align="center">1280x720 (720)</td>
15497<td align="center">Any</td>
15498<td align="center">if 720p &lt;= activeArraySize</td>
15499</tr>
15500<tr>
15501<td align="center">JPEG</td>
15502<td align="center">640x480 (480p)</td>
15503<td align="center">Any</td>
15504<td align="center">if 480p &lt;= activeArraySize</td>
15505</tr>
15506<tr>
15507<td align="center">JPEG</td>
15508<td align="center">320x240 (240p)</td>
15509<td align="center">Any</td>
15510<td align="center">if 240p &lt;= activeArraySize</td>
15511</tr>
15512<tr>
15513<td align="center">YUV_<wbr/>420_<wbr/>888</td>
15514<td align="center">all output sizes available for JPEG</td>
15515<td align="center">FULL</td>
15516<td align="center"></td>
15517</tr>
15518<tr>
15519<td align="center">YUV_<wbr/>420_<wbr/>888</td>
15520<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
15521<td align="center">LIMITED</td>
15522<td align="center"></td>
15523</tr>
15524<tr>
15525<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
15526<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
15527<td align="center">Any</td>
15528<td align="center"></td>
15529</tr>
15530</tbody>
15531</table>
15532<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
15533mandatory stream configurations on a per-capability basis.<wbr/></p>
15534            </td>
15535          </tr>
15536
15537          <tr class="entries_header">
15538            <th class="th_details" colspan="5">HAL Implementation Details</th>
15539          </tr>
15540          <tr class="entry_cont">
15541            <td class="entry_details" colspan="5">
15542              <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
15543of sensor maximum resolution for JPEG formats (regardless of hardware
15544level).<wbr/></p>
15545<p>(The following is a rewording of the above required table):</p>
15546<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
15547<ul>
15548<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
15549(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
15550(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/>
15551it does not have to be included in the supported JPEG sizes.<wbr/></li>
15552<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
15553the dimensions being a multiple of 16.<wbr/></li>
15554</ul>
15555<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
15556However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
15557resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
15558additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
15559if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
15560ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
155613264x2448.<wbr/></p>
15562<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/>
15563the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
15564here as output streams.<wbr/></p>
15565<p>It must also include each below resolution if it is smaller than or
15566equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
15567formats),<wbr/> as output streams:</p>
15568<ul>
15569<li>240p (320 x 240)</li>
15570<li>480p (640 x 480)</li>
15571<li>720p (1280 x 720)</li>
15572<li>1080p (1920 x 1080)</li>
15573</ul>
15574<p>For LIMITED capability devices
15575(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
15576the HAL only has to list up to the maximum video size
15577supported by the device.<wbr/></p>
15578<p>Regardless of hardware level,<wbr/> every output resolution available for
15579YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
15580<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
15581<ul>
15582<li>availableFormats</li>
15583<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
15584</ul>
15585            </td>
15586          </tr>
15587
15588          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15589           <!-- end of entry -->
15590
15591
15592          <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
15593            <td class="entry_name
15594             " rowspan="3">
15595              android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
15596            </td>
15597            <td class="entry_type">
15598                <span class="entry_type_name">int64</span>
15599                <span class="entry_type_container">x</span>
15600
15601                <span class="entry_type_array">
15602                  4 x n
15603                </span>
15604              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
15605
15606
15607              <span class="entry_type_hwlevel">[legacy] </span>
15608
15609
15610
15611
15612            </td> <!-- entry_type -->
15613
15614            <td class="entry_description">
15615              <p>This lists the minimum frame duration for each
15616format/<wbr/>size combination.<wbr/></p>
15617            </td>
15618
15619            <td class="entry_units">
15620              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
15621            </td>
15622
15623            <td class="entry_range">
15624            </td>
15625
15626            <td class="entry_tags">
15627              <ul class="entry_tags">
15628                  <li><a href="#tag_V1">V1</a></li>
15629              </ul>
15630            </td>
15631
15632          </tr>
15633          <tr class="entries_header">
15634            <th class="th_details" colspan="5">Details</th>
15635          </tr>
15636          <tr class="entry_cont">
15637            <td class="entry_details" colspan="5">
15638              <p>This should correspond to the frame duration when only that
15639stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
15640set to either OFF or FAST.<wbr/></p>
15641<p>When multiple streams are used in a request,<wbr/> the minimum frame
15642duration will be max(individual stream min durations).<wbr/></p>
15643<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
15644is the same regardless of whether the stream is input or output.<wbr/></p>
15645<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
15646<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
15647calculating the max frame rate.<wbr/></p>
15648<p>(Keep in sync with
15649StreamConfigurationMap#getOutputMinFrameDuration)</p>
15650            </td>
15651          </tr>
15652
15653
15654          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15655           <!-- end of entry -->
15656
15657
15658          <tr class="entry" id="static_android.scaler.availableStallDurations">
15659            <td class="entry_name
15660             " rowspan="5">
15661              android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
15662            </td>
15663            <td class="entry_type">
15664                <span class="entry_type_name">int64</span>
15665                <span class="entry_type_container">x</span>
15666
15667                <span class="entry_type_array">
15668                  4 x n
15669                </span>
15670              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
15671
15672
15673              <span class="entry_type_hwlevel">[legacy] </span>
15674
15675
15676
15677
15678            </td> <!-- entry_type -->
15679
15680            <td class="entry_description">
15681              <p>This lists the maximum stall duration for each
15682format/<wbr/>size combination.<wbr/></p>
15683            </td>
15684
15685            <td class="entry_units">
15686              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
15687            </td>
15688
15689            <td class="entry_range">
15690            </td>
15691
15692            <td class="entry_tags">
15693              <ul class="entry_tags">
15694                  <li><a href="#tag_V1">V1</a></li>
15695              </ul>
15696            </td>
15697
15698          </tr>
15699          <tr class="entries_header">
15700            <th class="th_details" colspan="5">Details</th>
15701          </tr>
15702          <tr class="entry_cont">
15703            <td class="entry_details" colspan="5">
15704              <p>A stall duration is how much extra time would get added
15705to the normal minimum frame duration for a repeating request
15706that has streams with non-zero stall.<wbr/></p>
15707<p>For example,<wbr/> consider JPEG captures which have the following
15708characteristics:</p>
15709<ul>
15710<li>JPEG streams act like processed YUV streams in requests for which
15711they are not included; in requests in which they are directly
15712referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
15713JPEG stream requires the underlying YUV data to always be ready for
15714use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
15715frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
15716<li>The JPEG processor can run concurrently to the rest of the camera
15717pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
15718</ul>
15719<p>In other words,<wbr/> using a repeating YUV request would result
15720in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
15721JPEG request is submitted periodically,<wbr/> the frame rate will stay
15722at 30 FPS (as long as we wait for the previous JPEG to return each
15723time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
15724the frame rate will drop from 30 FPS.<wbr/></p>
15725<p>In general,<wbr/> submitting a new request with a non-0 stall time
15726stream will <em>not</em> cause a frame rate drop unless there are still
15727outstanding buffers for that stream from previous requests.<wbr/></p>
15728<p>Submitting a repeating request with streams (call this <code>S</code>)
15729is the same as setting the minimum frame duration from
15730the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
15731the maximum stall duration for <code>S</code>.<wbr/></p>
15732<p>If interleaving requests with and without a stall duration,<wbr/>
15733a request will stall by the maximum of the remaining times
15734for each can-stall stream with outstanding buffers.<wbr/></p>
15735<p>This means that a stalling request will not have an exposure start
15736until the stall has completed.<wbr/></p>
15737<p>This should correspond to the stall duration when only that stream is
15738active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
15739or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
15740effectively results in an indeterminate stall duration for all
15741streams in a request (the regular stall calculation rules are
15742ignored).<wbr/></p>
15743<p>The following formats may always have a stall duration:</p>
15744<ul>
15745<li>ImageFormat#JPEG</li>
15746<li>ImageFormat#RAW_<wbr/>SENSOR</li>
15747</ul>
15748<p>The following formats will never have a stall duration:</p>
15749<ul>
15750<li>Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</li>
15751</ul>
15752<p>All other formats may or may not have an allowed stall duration on
15753a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
15754for more details.<wbr/></p>
15755<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
15756calculating the max frame rate (absent stalls).<wbr/></p>
15757<p>(Keep up to date with
15758StreamConfigurationMap#getOutputStallDuration(int,<wbr/> Size) )</p>
15759            </td>
15760          </tr>
15761
15762          <tr class="entries_header">
15763            <th class="th_details" colspan="5">HAL Implementation Details</th>
15764          </tr>
15765          <tr class="entry_cont">
15766            <td class="entry_details" colspan="5">
15767              <p>If possible,<wbr/> it is recommended that all non-JPEG formats
15768(such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW_<wbr/>OPAQUE and
15769IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
15770            </td>
15771          </tr>
15772
15773          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15774           <!-- end of entry -->
15775
15776
15777          <tr class="entry" id="static_android.scaler.streamConfigurationMap">
15778            <td class="entry_name
15779             " rowspan="5">
15780              android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
15781            </td>
15782            <td class="entry_type">
15783                <span class="entry_type_name">int32</span>
15784
15785              <span class="entry_type_visibility"> [public as streamConfigurationMap]</span>
15786
15787              <span class="entry_type_synthetic">[synthetic] </span>
15788
15789              <span class="entry_type_hwlevel">[legacy] </span>
15790
15791
15792
15793
15794            </td> <!-- entry_type -->
15795
15796            <td class="entry_description">
15797              <p>The available stream configurations that this
15798camera device supports; also includes the minimum frame durations
15799and the stall durations for each format/<wbr/>size combination.<wbr/></p>
15800            </td>
15801
15802            <td class="entry_units">
15803            </td>
15804
15805            <td class="entry_range">
15806            </td>
15807
15808            <td class="entry_tags">
15809            </td>
15810
15811          </tr>
15812          <tr class="entries_header">
15813            <th class="th_details" colspan="5">Details</th>
15814          </tr>
15815          <tr class="entry_cont">
15816            <td class="entry_details" colspan="5">
15817              <p>All camera devices will support sensor maximum resolution (defined by
15818<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>
15819<p>For a given use case,<wbr/> the actual maximum supported resolution
15820may be lower than what is listed here,<wbr/> depending on the destination
15821Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
15822the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
15823smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
15824can provide.<wbr/></p>
15825<p>Please reference the documentation for the image data destination to
15826check if it limits the maximum size for image data.<wbr/></p>
15827<p>The following table describes the minimum required output stream
15828configurations based on the hardware level
15829(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
15830<table>
15831<thead>
15832<tr>
15833<th align="center">Format</th>
15834<th align="center">Size</th>
15835<th align="center">Hardware Level</th>
15836<th align="center">Notes</th>
15837</tr>
15838</thead>
15839<tbody>
15840<tr>
15841<td align="center">JPEG</td>
15842<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
15843<td align="center">Any</td>
15844<td align="center"></td>
15845</tr>
15846<tr>
15847<td align="center">JPEG</td>
15848<td align="center">1920x1080 (1080p)</td>
15849<td align="center">Any</td>
15850<td align="center">if 1080p &lt;= activeArraySize</td>
15851</tr>
15852<tr>
15853<td align="center">JPEG</td>
15854<td align="center">1280x720 (720)</td>
15855<td align="center">Any</td>
15856<td align="center">if 720p &lt;= activeArraySize</td>
15857</tr>
15858<tr>
15859<td align="center">JPEG</td>
15860<td align="center">640x480 (480p)</td>
15861<td align="center">Any</td>
15862<td align="center">if 480p &lt;= activeArraySize</td>
15863</tr>
15864<tr>
15865<td align="center">JPEG</td>
15866<td align="center">320x240 (240p)</td>
15867<td align="center">Any</td>
15868<td align="center">if 240p &lt;= activeArraySize</td>
15869</tr>
15870<tr>
15871<td align="center">YUV_<wbr/>420_<wbr/>888</td>
15872<td align="center">all output sizes available for JPEG</td>
15873<td align="center">FULL</td>
15874<td align="center"></td>
15875</tr>
15876<tr>
15877<td align="center">YUV_<wbr/>420_<wbr/>888</td>
15878<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
15879<td align="center">LIMITED</td>
15880<td align="center"></td>
15881</tr>
15882<tr>
15883<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
15884<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
15885<td align="center">Any</td>
15886<td align="center"></td>
15887</tr>
15888</tbody>
15889</table>
15890<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
15891mandatory stream configurations on a per-capability basis.<wbr/></p>
15892            </td>
15893          </tr>
15894
15895          <tr class="entries_header">
15896            <th class="th_details" colspan="5">HAL Implementation Details</th>
15897          </tr>
15898          <tr class="entry_cont">
15899            <td class="entry_details" colspan="5">
15900              <p>Do not set this property directly
15901(it is synthetic and will not be available at the HAL layer);
15902set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
15903<p>Not all output formats may be supported in a configuration with
15904an input stream of a particular format.<wbr/> For more details,<wbr/> see
15905<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
15906<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
15907of sensor maximum resolution for JPEG formats (regardless of hardware
15908level).<wbr/></p>
15909<p>(The following is a rewording of the above required table):</p>
15910<p>The HAL must include sensor maximum resolution (defined by
15911<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
15912<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/>
15913the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
15914here as output streams.<wbr/></p>
15915<p>It must also include each below resolution if it is smaller than or
15916equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
15917formats),<wbr/> as output streams:</p>
15918<ul>
15919<li>240p (320 x 240)</li>
15920<li>480p (640 x 480)</li>
15921<li>720p (1280 x 720)</li>
15922<li>1080p (1920 x 1080)</li>
15923</ul>
15924<p>For LIMITED capability devices
15925(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
15926the HAL only has to list up to the maximum video size
15927supported by the device.<wbr/></p>
15928<p>Regardless of hardware level,<wbr/> every output resolution available for
15929YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
15930<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
15931<ul>
15932<li>availableFormats</li>
15933<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
15934</ul>
15935            </td>
15936          </tr>
15937
15938          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15939           <!-- end of entry -->
15940
15941
15942          <tr class="entry" id="static_android.scaler.croppingType">
15943            <td class="entry_name
15944             " rowspan="3">
15945              android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
15946            </td>
15947            <td class="entry_type">
15948                <span class="entry_type_name entry_type_name_enum">byte</span>
15949
15950              <span class="entry_type_visibility"> [public]</span>
15951
15952
15953              <span class="entry_type_hwlevel">[legacy] </span>
15954
15955
15956
15957                <ul class="entry_type_enum">
15958                  <li>
15959                    <span class="entry_type_enum_name">CENTER_ONLY</span>
15960                    <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
15961                  </li>
15962                  <li>
15963                    <span class="entry_type_enum_name">FREEFORM</span>
15964                    <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
15965                  </li>
15966                </ul>
15967
15968            </td> <!-- entry_type -->
15969
15970            <td class="entry_description">
15971              <p>The crop type that this camera device supports.<wbr/></p>
15972            </td>
15973
15974            <td class="entry_units">
15975            </td>
15976
15977            <td class="entry_range">
15978            </td>
15979
15980            <td class="entry_tags">
15981            </td>
15982
15983          </tr>
15984          <tr class="entries_header">
15985            <th class="th_details" colspan="5">Details</th>
15986          </tr>
15987          <tr class="entry_cont">
15988            <td class="entry_details" colspan="5">
15989              <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
15990device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
15991crop 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>)
15992and keep the crop region width and height unchanged.<wbr/> The camera device will return the
15993final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
15994<p>Camera devices that support FREEFORM cropping will support any crop region that
15995is inside of the active array.<wbr/> The camera device will apply the same crop region and
15996return 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>
15997<p>FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL) will support
15998FREEFORM cropping.<wbr/> LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
15999            </td>
16000          </tr>
16001
16002
16003          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16004           <!-- end of entry -->
16005
16006
16007
16008      <!-- end of kind -->
16009      </tbody>
16010      <tr><td colspan="6" class="kind">dynamic</td></tr>
16011
16012      <thead class="entries_header">
16013        <tr>
16014          <th class="th_name">Property Name</th>
16015          <th class="th_type">Type</th>
16016          <th class="th_description">Description</th>
16017          <th class="th_units">Units</th>
16018          <th class="th_range">Range</th>
16019          <th class="th_tags">Tags</th>
16020        </tr>
16021      </thead>
16022
16023      <tbody>
16024
16025
16026
16027
16028
16029
16030
16031
16032
16033
16034          <tr class="entry" id="dynamic_android.scaler.cropRegion">
16035            <td class="entry_name
16036             " rowspan="5">
16037              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
16038            </td>
16039            <td class="entry_type">
16040                <span class="entry_type_name">int32</span>
16041                <span class="entry_type_container">x</span>
16042
16043                <span class="entry_type_array">
16044                  4
16045                </span>
16046              <span class="entry_type_visibility"> [public as rectangle]</span>
16047
16048
16049              <span class="entry_type_hwlevel">[legacy] </span>
16050
16051
16052
16053
16054            </td> <!-- entry_type -->
16055
16056            <td class="entry_description">
16057              <p>The desired region of the sensor to read out for this capture.<wbr/></p>
16058            </td>
16059
16060            <td class="entry_units">
16061              Pixel coordinates relative to
16062          android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
16063            </td>
16064
16065            <td class="entry_range">
16066            </td>
16067
16068            <td class="entry_tags">
16069              <ul class="entry_tags">
16070                  <li><a href="#tag_BC">BC</a></li>
16071              </ul>
16072            </td>
16073
16074          </tr>
16075          <tr class="entries_header">
16076            <th class="th_details" colspan="5">Details</th>
16077          </tr>
16078          <tr class="entry_cont">
16079            <td class="entry_details" colspan="5">
16080              <p>This control can be used to implement digital zoom.<wbr/></p>
16081<p>The crop region coordinate system is based off
16082<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
16083top-left corner of the sensor active array.<wbr/></p>
16084<p>Output streams use this rectangle to produce their output,<wbr/>
16085cropping to a smaller region if necessary to maintain the
16086stream's aspect ratio,<wbr/> then scaling the sensor input to
16087match the output's configured resolution.<wbr/></p>
16088<p>The crop region is applied after the RAW to other color
16089space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
16090(e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
16091croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
16092<p>For non-raw streams,<wbr/> any additional per-stream cropping will
16093be done to maximize the final pixel area of the stream.<wbr/></p>
16094<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
16095ratio,<wbr/> then 4:3 streams will use the exact crop
16096region.<wbr/> 16:9 streams will further crop vertically
16097(letterbox).<wbr/></p>
16098<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
16099outputs will crop horizontally (pillarbox),<wbr/> and 16:9
16100streams will match exactly.<wbr/> These additional crops will
16101be centered within the crop region.<wbr/></p>
16102<p>The width and height of the crop region cannot
16103be set to be smaller than
16104<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
16105<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>
16106<p>The camera device may adjust the crop region to account
16107for rounding and other hardware requirements; the final
16108crop region used will be included in the output capture
16109result.<wbr/></p>
16110            </td>
16111          </tr>
16112
16113          <tr class="entries_header">
16114            <th class="th_details" colspan="5">HAL Implementation Details</th>
16115          </tr>
16116          <tr class="entry_cont">
16117            <td class="entry_details" colspan="5">
16118              <p>The output streams must maintain square pixels at all
16119times,<wbr/> no matter what the relative aspect ratios of the
16120crop region and the stream are.<wbr/>  Negative values for
16121corner are allowed for raw output if full pixel array is
16122larger than active pixel array.<wbr/> Width and height may be
16123rounded to nearest larger supportable width,<wbr/> especially
16124for raw output,<wbr/> where only a few fixed scales may be
16125possible.<wbr/></p>
16126<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
16127            </td>
16128          </tr>
16129
16130          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16131           <!-- end of entry -->
16132
16133
16134
16135      <!-- end of kind -->
16136      </tbody>
16137
16138  <!-- end of section -->
16139  <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr>
16140
16141
16142      <tr><td colspan="6" class="kind">controls</td></tr>
16143
16144      <thead class="entries_header">
16145        <tr>
16146          <th class="th_name">Property Name</th>
16147          <th class="th_type">Type</th>
16148          <th class="th_description">Description</th>
16149          <th class="th_units">Units</th>
16150          <th class="th_range">Range</th>
16151          <th class="th_tags">Tags</th>
16152        </tr>
16153      </thead>
16154
16155      <tbody>
16156
16157
16158
16159
16160
16161
16162
16163
16164
16165
16166          <tr class="entry" id="controls_android.sensor.exposureTime">
16167            <td class="entry_name
16168             " rowspan="3">
16169              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
16170            </td>
16171            <td class="entry_type">
16172                <span class="entry_type_name">int64</span>
16173
16174              <span class="entry_type_visibility"> [public]</span>
16175
16176
16177              <span class="entry_type_hwlevel">[full] </span>
16178
16179
16180
16181
16182            </td> <!-- entry_type -->
16183
16184            <td class="entry_description">
16185              <p>Duration each pixel is exposed to
16186light.<wbr/></p>
16187            </td>
16188
16189            <td class="entry_units">
16190              Nanoseconds
16191            </td>
16192
16193            <td class="entry_range">
16194              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
16195            </td>
16196
16197            <td class="entry_tags">
16198              <ul class="entry_tags">
16199                  <li><a href="#tag_V1">V1</a></li>
16200              </ul>
16201            </td>
16202
16203          </tr>
16204          <tr class="entries_header">
16205            <th class="th_details" colspan="5">Details</th>
16206          </tr>
16207          <tr class="entry_cont">
16208            <td class="entry_details" colspan="5">
16209              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
16210duration exposed to the nearest possible value (rather than expose longer).<wbr/>
16211The final exposure time used will be available in the output capture result.<wbr/></p>
16212<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
16213OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
16214            </td>
16215          </tr>
16216
16217
16218          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16219           <!-- end of entry -->
16220
16221
16222          <tr class="entry" id="controls_android.sensor.frameDuration">
16223            <td class="entry_name
16224             " rowspan="5">
16225              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
16226            </td>
16227            <td class="entry_type">
16228                <span class="entry_type_name">int64</span>
16229
16230              <span class="entry_type_visibility"> [public]</span>
16231
16232
16233              <span class="entry_type_hwlevel">[full] </span>
16234
16235
16236
16237
16238            </td> <!-- entry_type -->
16239
16240            <td class="entry_description">
16241              <p>Duration from start of frame exposure to
16242start of next frame exposure.<wbr/></p>
16243            </td>
16244
16245            <td class="entry_units">
16246              Nanoseconds
16247            </td>
16248
16249            <td class="entry_range">
16250              <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
16251<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
16252is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
16253            </td>
16254
16255            <td class="entry_tags">
16256              <ul class="entry_tags">
16257                  <li><a href="#tag_V1">V1</a></li>
16258              </ul>
16259            </td>
16260
16261          </tr>
16262          <tr class="entries_header">
16263            <th class="th_details" colspan="5">Details</th>
16264          </tr>
16265          <tr class="entry_cont">
16266            <td class="entry_details" colspan="5">
16267              <p>The maximum frame rate that can be supported by a camera subsystem is
16268a function of many factors:</p>
16269<ul>
16270<li>Requested resolutions of output image streams</li>
16271<li>Availability of binning /<wbr/> skipping modes on the imager</li>
16272<li>The bandwidth of the imager interface</li>
16273<li>The bandwidth of the various ISP processing blocks</li>
16274</ul>
16275<p>Since these factors can vary greatly between different ISPs and
16276sensors,<wbr/> the camera abstraction tries to represent the bandwidth
16277restrictions with as simple a model as possible.<wbr/></p>
16278<p>The model presented has the following characteristics:</p>
16279<ul>
16280<li>The image sensor is always configured to output the smallest
16281resolution possible given the application's requested output stream
16282sizes.<wbr/>  The smallest resolution is defined as being at least as large
16283as the largest requested output stream size; the camera pipeline must
16284never digitally upsample sensor data when the crop region covers the
16285whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
16286resolutions are configured,<wbr/> the sensor can provide a higher frame
16287rate.<wbr/></li>
16288<li>Since any request may use any or all the currently configured
16289output streams,<wbr/> the sensor and ISP must be configured to support
16290scaling a single capture to all the streams at the same time.<wbr/>  This
16291means the camera pipeline must be ready to produce the largest
16292requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
16293frame rate of a given configured stream set is governed only by the
16294largest requested stream resolution.<wbr/></li>
16295<li>Using more than one output stream in a request does not affect the
16296frame duration.<wbr/></li>
16297<li>Certain format-streams may need to do additional background processing
16298before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
16299can run concurrently to the rest of the camera pipeline,<wbr/> but
16300cannot process more than 1 capture at a time.<wbr/></li>
16301</ul>
16302<p>The necessary information for the application,<wbr/> given the model above,<wbr/>
16303is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field
16304using StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size).<wbr/>
16305These are used to determine the maximum frame rate /<wbr/> minimum frame
16306duration that is possible for a given stream configuration.<wbr/></p>
16307<p>Specifically,<wbr/> the application can use the following rules to
16308determine the minimum frame duration it can request from the camera
16309device:</p>
16310<ol>
16311<li>Let the set of currently configured input/<wbr/>output streams
16312be called <code>S</code>.<wbr/></li>
16313<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by
16314looking it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using
16315StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size) (with
16316its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called
16317<code>F</code>.<wbr/></li>
16318<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
16319for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
16320used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
16321</ol>
16322<p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in
16323StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size) using its
16324respective size/<wbr/>format),<wbr/> then the frame duration in
16325<code>F</code> determines the steady state frame rate that the application will
16326get if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind
16327of request be called <code>Rsimple</code>.<wbr/></p>
16328<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
16329by a single capture of a new request <code>Rstall</code> (which has at least
16330one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
16331same minimum frame duration this will not cause a frame rate loss
16332if all buffers from the previous <code>Rstall</code> have already been
16333delivered.<wbr/></p>
16334<p>For more details about stalling,<wbr/> see
16335StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size).<wbr/></p>
16336<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
16337OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
16338            </td>
16339          </tr>
16340
16341          <tr class="entries_header">
16342            <th class="th_details" colspan="5">HAL Implementation Details</th>
16343          </tr>
16344          <tr class="entry_cont">
16345            <td class="entry_details" colspan="5">
16346              <p>For more details about stalling,<wbr/> see
16347<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
16348            </td>
16349          </tr>
16350
16351          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16352           <!-- end of entry -->
16353
16354
16355          <tr class="entry" id="controls_android.sensor.sensitivity">
16356            <td class="entry_name
16357             " rowspan="5">
16358              android.<wbr/>sensor.<wbr/>sensitivity
16359            </td>
16360            <td class="entry_type">
16361                <span class="entry_type_name">int32</span>
16362
16363              <span class="entry_type_visibility"> [public]</span>
16364
16365
16366              <span class="entry_type_hwlevel">[full] </span>
16367
16368
16369
16370
16371            </td> <!-- entry_type -->
16372
16373            <td class="entry_description">
16374              <p>The amount of gain applied to sensor data
16375before processing.<wbr/></p>
16376            </td>
16377
16378            <td class="entry_units">
16379              ISO arithmetic units
16380            </td>
16381
16382            <td class="entry_range">
16383              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
16384            </td>
16385
16386            <td class="entry_tags">
16387              <ul class="entry_tags">
16388                  <li><a href="#tag_V1">V1</a></li>
16389              </ul>
16390            </td>
16391
16392          </tr>
16393          <tr class="entries_header">
16394            <th class="th_details" colspan="5">Details</th>
16395          </tr>
16396          <tr class="entry_cont">
16397            <td class="entry_details" colspan="5">
16398              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
16399as defined in ISO 12232:2006.<wbr/></p>
16400<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
16401if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
16402is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
16403<p>If the camera device cannot apply the exact sensitivity
16404requested,<wbr/> it will reduce the gain to the nearest supported
16405value.<wbr/> The final sensitivity used will be available in the
16406output capture result.<wbr/></p>
16407            </td>
16408          </tr>
16409
16410          <tr class="entries_header">
16411            <th class="th_details" colspan="5">HAL Implementation Details</th>
16412          </tr>
16413          <tr class="entry_cont">
16414            <td class="entry_details" colspan="5">
16415              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
16416            </td>
16417          </tr>
16418
16419          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16420           <!-- end of entry -->
16421
16422
16423          <tr class="entry" id="controls_android.sensor.testPatternData">
16424            <td class="entry_name
16425             " rowspan="5">
16426              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
16427            </td>
16428            <td class="entry_type">
16429                <span class="entry_type_name">int32</span>
16430                <span class="entry_type_container">x</span>
16431
16432                <span class="entry_type_array">
16433                  4
16434                </span>
16435              <span class="entry_type_visibility"> [public]</span>
16436
16437
16438
16439
16440
16441
16442            </td> <!-- entry_type -->
16443
16444            <td class="entry_description">
16445              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
16446when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
16447            </td>
16448
16449            <td class="entry_units">
16450            </td>
16451
16452            <td class="entry_range">
16453            </td>
16454
16455            <td class="entry_tags">
16456            </td>
16457
16458          </tr>
16459          <tr class="entries_header">
16460            <th class="th_details" colspan="5">Details</th>
16461          </tr>
16462          <tr class="entry_cont">
16463            <td class="entry_details" colspan="5">
16464              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
16465The camera device then uses the most significant X bits
16466that correspond to how many bits are in its Bayer raw sensor
16467output.<wbr/></p>
16468<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
1646910 most significant bits from each color channel.<wbr/></p>
16470            </td>
16471          </tr>
16472
16473          <tr class="entries_header">
16474            <th class="th_details" colspan="5">HAL Implementation Details</th>
16475          </tr>
16476          <tr class="entry_cont">
16477            <td class="entry_details" colspan="5">
16478
16479            </td>
16480          </tr>
16481
16482          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16483           <!-- end of entry -->
16484
16485
16486          <tr class="entry" id="controls_android.sensor.testPatternMode">
16487            <td class="entry_name
16488             " rowspan="5">
16489              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
16490            </td>
16491            <td class="entry_type">
16492                <span class="entry_type_name entry_type_name_enum">int32</span>
16493
16494              <span class="entry_type_visibility"> [public]</span>
16495
16496
16497
16498
16499
16500                <ul class="entry_type_enum">
16501                  <li>
16502                    <span class="entry_type_enum_name">OFF</span>
16503                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
16504device returns captures from the image sensor.<wbr/></p>
16505<p>This is the default if the key is not set.<wbr/></p></span>
16506                  </li>
16507                  <li>
16508                    <span class="entry_type_enum_name">SOLID_COLOR</span>
16509                    <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
16510respective color channel provided in
16511<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
16512<p>For example:</p>
16513<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
16514</code></pre>
16515<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
16516<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
16517</code></pre>
16518<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
16519are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
16520                  </li>
16521                  <li>
16522                    <span class="entry_type_enum_name">COLOR_BARS</span>
16523                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
16524<p>The vertical bars (left-to-right) are as follows:</p>
16525<ul>
16526<li>100% white</li>
16527<li>yellow</li>
16528<li>cyan</li>
16529<li>green</li>
16530<li>magenta</li>
16531<li>red</li>
16532<li>blue</li>
16533<li>black</li>
16534</ul>
16535<p>In general the image would look like the following:</p>
16536<pre><code>W Y C G M R B K
16537W Y C G M R B K
16538W Y C G M R B K
16539W Y C G M R B K
16540W Y C G M R B K
16541.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
16542.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
16543.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
16544
16545(B = Blue,<wbr/> K = Black)
16546</code></pre>
16547<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
16548When this is not possible,<wbr/> the bar size should be rounded
16549down to the nearest integer and the pattern can repeat
16550on the right side.<wbr/></p>
16551<p>Each bar's height must always take up the full sensor
16552pixel array height.<wbr/></p>
16553<p>Each pixel in this test pattern must be set to either
165540% intensity or 100% intensity.<wbr/></p></span>
16555                  </li>
16556                  <li>
16557                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
16558                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
16559each bar should start at its specified color at the top,<wbr/>
16560and fade to gray at the bottom.<wbr/></p>
16561<p>Furthermore each bar is further subdivided into a left and
16562right half.<wbr/> The left half should have a smooth gradient,<wbr/>
16563and the right half should have a quantized gradient.<wbr/></p>
16564<p>In particular,<wbr/> the right half's should consist of blocks of the
16565same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
16566<p>The least significant bits in the quantized gradient should
16567be copied from the most significant bits of the smooth gradient.<wbr/></p>
16568<p>The height of each bar should always be a multiple of 128.<wbr/>
16569When this is not the case,<wbr/> the pattern should repeat at the bottom
16570of the image.<wbr/></p></span>
16571                  </li>
16572                  <li>
16573                    <span class="entry_type_enum_name">PN9</span>
16574                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
16575generated from a PN9 512-bit sequence (typically implemented
16576in hardware with a linear feedback shift register).<wbr/></p>
16577<p>The generator should be reset at the beginning of each frame,<wbr/>
16578and thus each subsequent raw frame with this test pattern should
16579be exactly the same as the last.<wbr/></p></span>
16580                  </li>
16581                  <li>
16582                    <span class="entry_type_enum_name">CUSTOM1</span>
16583                    <span class="entry_type_enum_value">256</span>
16584                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
16585available only on this camera device are at least this numeric
16586value.<wbr/></p>
16587<p>All of the custom test patterns will be static
16588(that is the raw image must not vary from frame to frame).<wbr/></p></span>
16589                  </li>
16590                </ul>
16591
16592            </td> <!-- entry_type -->
16593
16594            <td class="entry_description">
16595              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
16596doing a real exposure from the camera.<wbr/></p>
16597            </td>
16598
16599            <td class="entry_units">
16600            </td>
16601
16602            <td class="entry_range">
16603              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
16604            </td>
16605
16606            <td class="entry_tags">
16607            </td>
16608
16609          </tr>
16610          <tr class="entries_header">
16611            <th class="th_details" colspan="5">Details</th>
16612          </tr>
16613          <tr class="entry_cont">
16614            <td class="entry_details" colspan="5">
16615              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
16616by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
16617work as normal.<wbr/></p>
16618<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
16619occur (and that the test pattern remain unmodified,<wbr/> since the flash
16620would not actually affect it).<wbr/></p>
16621<p>Defaults to OFF.<wbr/></p>
16622            </td>
16623          </tr>
16624
16625          <tr class="entries_header">
16626            <th class="th_details" colspan="5">HAL Implementation Details</th>
16627          </tr>
16628          <tr class="entry_cont">
16629            <td class="entry_details" colspan="5">
16630              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
16631<p>The HAL may choose to substitute test patterns from the sensor
16632with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
16633indistinguishable to the ISP whether the data came from the
16634sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
16635            </td>
16636          </tr>
16637
16638          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16639           <!-- end of entry -->
16640
16641
16642
16643      <!-- end of kind -->
16644      </tbody>
16645      <tr><td colspan="6" class="kind">static</td></tr>
16646
16647      <thead class="entries_header">
16648        <tr>
16649          <th class="th_name">Property Name</th>
16650          <th class="th_type">Type</th>
16651          <th class="th_description">Description</th>
16652          <th class="th_units">Units</th>
16653          <th class="th_range">Range</th>
16654          <th class="th_tags">Tags</th>
16655        </tr>
16656      </thead>
16657
16658      <tbody>
16659
16660
16661
16662
16663
16664
16665
16666
16667
16668
16669
16670
16671          <tr class="entry" id="static_android.sensor.info.activeArraySize">
16672            <td class="entry_name
16673             " rowspan="5">
16674              android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
16675            </td>
16676            <td class="entry_type">
16677                <span class="entry_type_name">int32</span>
16678                <span class="entry_type_container">x</span>
16679
16680                <span class="entry_type_array">
16681                  4
16682                </span>
16683              <span class="entry_type_visibility"> [public as rectangle]</span>
16684
16685
16686              <span class="entry_type_hwlevel">[legacy] </span>
16687
16688
16689                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
16690
16691
16692            </td> <!-- entry_type -->
16693
16694            <td class="entry_description">
16695              <p>The area of the image sensor which corresponds to
16696active pixels.<wbr/></p>
16697            </td>
16698
16699            <td class="entry_units">
16700              Pixel coordinates on the image sensor
16701            </td>
16702
16703            <td class="entry_range">
16704
16705            </td>
16706
16707            <td class="entry_tags">
16708              <ul class="entry_tags">
16709                  <li><a href="#tag_RAW">RAW</a></li>
16710              </ul>
16711            </td>
16712
16713          </tr>
16714          <tr class="entries_header">
16715            <th class="th_details" colspan="5">Details</th>
16716          </tr>
16717          <tr class="entry_cont">
16718            <td class="entry_details" colspan="5">
16719              <p>This is the region of the sensor that actually receives light from the scene.<wbr/>
16720Therefore,<wbr/> the size of this region determines the maximum field of view and the maximum
16721number of pixels that an image from this sensor can contain.<wbr/></p>
16722<p>The rectangle is defined in terms of the full pixel array; (0,<wbr/>0) is the top-left of the
16723full pixel array,<wbr/> and the size of the full pixel array is given by
16724<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
16725<p>Most other keys listing pixel coordinates have their coordinate systems based on the
16726active array,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of the active array rectangle.<wbr/></p>
16727<p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
16728include black calibration pixels or other inactive regions.<wbr/></p>
16729            </td>
16730          </tr>
16731
16732          <tr class="entries_header">
16733            <th class="th_details" colspan="5">HAL Implementation Details</th>
16734          </tr>
16735          <tr class="entry_cont">
16736            <td class="entry_details" colspan="5">
16737              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
16738&gt;= <code>(0,<wbr/>0)</code>.<wbr/>
16739The <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>
16740            </td>
16741          </tr>
16742
16743          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16744           <!-- end of entry -->
16745
16746
16747          <tr class="entry" id="static_android.sensor.info.sensitivityRange">
16748            <td class="entry_name
16749             " rowspan="3">
16750              android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
16751            </td>
16752            <td class="entry_type">
16753                <span class="entry_type_name">int32</span>
16754                <span class="entry_type_container">x</span>
16755
16756                <span class="entry_type_array">
16757                  2
16758                </span>
16759              <span class="entry_type_visibility"> [public as rangeInt]</span>
16760
16761
16762              <span class="entry_type_hwlevel">[full] </span>
16763
16764
16765                <div class="entry_type_notes">Range of supported sensitivities</div>
16766
16767
16768            </td> <!-- entry_type -->
16769
16770            <td class="entry_description">
16771              <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
16772camera device.<wbr/></p>
16773            </td>
16774
16775            <td class="entry_units">
16776            </td>
16777
16778            <td class="entry_range">
16779              <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
16780            </td>
16781
16782            <td class="entry_tags">
16783              <ul class="entry_tags">
16784                  <li><a href="#tag_BC">BC</a></li>
16785                  <li><a href="#tag_V1">V1</a></li>
16786              </ul>
16787            </td>
16788
16789          </tr>
16790          <tr class="entries_header">
16791            <th class="th_details" colspan="5">Details</th>
16792          </tr>
16793          <tr class="entry_cont">
16794            <td class="entry_details" colspan="5">
16795              <p>The values are the standard ISO sensitivity values,<wbr/>
16796as defined in ISO 12232:2006.<wbr/></p>
16797            </td>
16798          </tr>
16799
16800
16801          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16802           <!-- end of entry -->
16803
16804
16805          <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
16806            <td class="entry_name
16807             " rowspan="1">
16808              android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
16809            </td>
16810            <td class="entry_type">
16811                <span class="entry_type_name entry_type_name_enum">byte</span>
16812
16813              <span class="entry_type_visibility"> [public]</span>
16814
16815
16816              <span class="entry_type_hwlevel">[full] </span>
16817
16818
16819
16820                <ul class="entry_type_enum">
16821                  <li>
16822                    <span class="entry_type_enum_name">RGGB</span>
16823                  </li>
16824                  <li>
16825                    <span class="entry_type_enum_name">GRBG</span>
16826                  </li>
16827                  <li>
16828                    <span class="entry_type_enum_name">GBRG</span>
16829                  </li>
16830                  <li>
16831                    <span class="entry_type_enum_name">BGGR</span>
16832                  </li>
16833                  <li>
16834                    <span class="entry_type_enum_name">RGB</span>
16835                    <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
16836values for each pixel,<wbr/> instead of just 1 16-bit value
16837per pixel.<wbr/></p></span>
16838                  </li>
16839                </ul>
16840
16841            </td> <!-- entry_type -->
16842
16843            <td class="entry_description">
16844              <p>The arrangement of color filters on sensor;
16845represents the colors in the top-left 2x2 section of
16846the sensor,<wbr/> in reading order.<wbr/></p>
16847            </td>
16848
16849            <td class="entry_units">
16850            </td>
16851
16852            <td class="entry_range">
16853            </td>
16854
16855            <td class="entry_tags">
16856              <ul class="entry_tags">
16857                  <li><a href="#tag_RAW">RAW</a></li>
16858              </ul>
16859            </td>
16860
16861          </tr>
16862
16863
16864          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16865           <!-- end of entry -->
16866
16867
16868          <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
16869            <td class="entry_name
16870             " rowspan="3">
16871              android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
16872            </td>
16873            <td class="entry_type">
16874                <span class="entry_type_name">int64</span>
16875                <span class="entry_type_container">x</span>
16876
16877                <span class="entry_type_array">
16878                  2
16879                </span>
16880              <span class="entry_type_visibility"> [public as rangeLong]</span>
16881
16882
16883              <span class="entry_type_hwlevel">[full] </span>
16884
16885
16886                <div class="entry_type_notes">nanoseconds</div>
16887
16888
16889            </td> <!-- entry_type -->
16890
16891            <td class="entry_description">
16892              <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
16893by this camera device.<wbr/></p>
16894            </td>
16895
16896            <td class="entry_units">
16897              Nanoseconds
16898            </td>
16899
16900            <td class="entry_range">
16901              <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
16902capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
16903the maximum exposure time will be greater than 100ms.<wbr/></p>
16904            </td>
16905
16906            <td class="entry_tags">
16907              <ul class="entry_tags">
16908                  <li><a href="#tag_V1">V1</a></li>
16909              </ul>
16910            </td>
16911
16912          </tr>
16913
16914          <tr class="entries_header">
16915            <th class="th_details" colspan="5">HAL Implementation Details</th>
16916          </tr>
16917          <tr class="entry_cont">
16918            <td class="entry_details" colspan="5">
16919              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
16920The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
16921100ms.<wbr/></p>
16922            </td>
16923          </tr>
16924
16925          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16926           <!-- end of entry -->
16927
16928
16929          <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
16930            <td class="entry_name
16931             " rowspan="5">
16932              android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
16933            </td>
16934            <td class="entry_type">
16935                <span class="entry_type_name">int64</span>
16936
16937              <span class="entry_type_visibility"> [public]</span>
16938
16939
16940              <span class="entry_type_hwlevel">[full] </span>
16941
16942
16943
16944
16945            </td> <!-- entry_type -->
16946
16947            <td class="entry_description">
16948              <p>The maximum possible frame duration (minimum frame rate) for
16949<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
16950            </td>
16951
16952            <td class="entry_units">
16953              Nanoseconds
16954            </td>
16955
16956            <td class="entry_range">
16957              <p>For FULL capability devices
16958(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
16959            </td>
16960
16961            <td class="entry_tags">
16962              <ul class="entry_tags">
16963                  <li><a href="#tag_V1">V1</a></li>
16964              </ul>
16965            </td>
16966
16967          </tr>
16968          <tr class="entries_header">
16969            <th class="th_details" colspan="5">Details</th>
16970          </tr>
16971          <tr class="entry_cont">
16972            <td class="entry_details" colspan="5">
16973              <p>Attempting to use frame durations beyond the maximum will result in the frame
16974duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
16975durations.<wbr/></p>
16976<p>Refer to StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/>Size) for the minimum
16977frame duration values.<wbr/></p>
16978            </td>
16979          </tr>
16980
16981          <tr class="entries_header">
16982            <th class="th_details" colspan="5">HAL Implementation Details</th>
16983          </tr>
16984          <tr class="entry_cont">
16985            <td class="entry_details" colspan="5">
16986              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
16987The maximum of the range SHOULD be at least
169881 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
16989<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
16990equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
16991value (since exposure time overrides frame duration).<wbr/></p>
16992<p>Available minimum frame durations for JPEG must be no greater
16993than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
16994minimum frame durations (for that respective size).<wbr/></p>
16995<p>Since JPEG processing is considered offline and can take longer than
16996a single uncompressed capture,<wbr/> refer to
16997<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
16998for details about encoding this scenario.<wbr/></p>
16999            </td>
17000          </tr>
17001
17002          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17003           <!-- end of entry -->
17004
17005
17006          <tr class="entry" id="static_android.sensor.info.physicalSize">
17007            <td class="entry_name
17008             " rowspan="5">
17009              android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
17010            </td>
17011            <td class="entry_type">
17012                <span class="entry_type_name">float</span>
17013                <span class="entry_type_container">x</span>
17014
17015                <span class="entry_type_array">
17016                  2
17017                </span>
17018              <span class="entry_type_visibility"> [public as sizeF]</span>
17019
17020
17021              <span class="entry_type_hwlevel">[legacy] </span>
17022
17023
17024                <div class="entry_type_notes">width x height</div>
17025
17026
17027            </td> <!-- entry_type -->
17028
17029            <td class="entry_description">
17030              <p>The physical dimensions of the full pixel
17031array.<wbr/></p>
17032            </td>
17033
17034            <td class="entry_units">
17035              Millimeters
17036            </td>
17037
17038            <td class="entry_range">
17039            </td>
17040
17041            <td class="entry_tags">
17042              <ul class="entry_tags">
17043                  <li><a href="#tag_V1">V1</a></li>
17044                  <li><a href="#tag_BC">BC</a></li>
17045              </ul>
17046            </td>
17047
17048          </tr>
17049          <tr class="entries_header">
17050            <th class="th_details" colspan="5">Details</th>
17051          </tr>
17052          <tr class="entry_cont">
17053            <td class="entry_details" colspan="5">
17054              <p>This is the physical size of the sensor pixel
17055array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
17056            </td>
17057          </tr>
17058
17059          <tr class="entries_header">
17060            <th class="th_details" colspan="5">HAL Implementation Details</th>
17061          </tr>
17062          <tr class="entry_cont">
17063            <td class="entry_details" colspan="5">
17064              <p>Needed for FOV calculation for old API</p>
17065            </td>
17066          </tr>
17067
17068          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17069           <!-- end of entry -->
17070
17071
17072          <tr class="entry" id="static_android.sensor.info.pixelArraySize">
17073            <td class="entry_name
17074             " rowspan="3">
17075              android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
17076            </td>
17077            <td class="entry_type">
17078                <span class="entry_type_name">int32</span>
17079                <span class="entry_type_container">x</span>
17080
17081                <span class="entry_type_array">
17082                  2
17083                </span>
17084              <span class="entry_type_visibility"> [public as size]</span>
17085
17086
17087              <span class="entry_type_hwlevel">[legacy] </span>
17088
17089
17090
17091
17092            </td> <!-- entry_type -->
17093
17094            <td class="entry_description">
17095              <p>Dimensions of the full pixel array,<wbr/> possibly
17096including black calibration pixels.<wbr/></p>
17097            </td>
17098
17099            <td class="entry_units">
17100              Pixels
17101            </td>
17102
17103            <td class="entry_range">
17104            </td>
17105
17106            <td class="entry_tags">
17107              <ul class="entry_tags">
17108                  <li><a href="#tag_RAW">RAW</a></li>
17109                  <li><a href="#tag_BC">BC</a></li>
17110              </ul>
17111            </td>
17112
17113          </tr>
17114          <tr class="entries_header">
17115            <th class="th_details" colspan="5">Details</th>
17116          </tr>
17117          <tr class="entry_cont">
17118            <td class="entry_details" colspan="5">
17119              <p>The pixel count of the full pixel array,<wbr/>
17120which covers <a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a> area.<wbr/></p>
17121<p>If a camera device supports raw sensor formats,<wbr/> either this
17122or <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> is the maximum output
17123raw size listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/>
17124If a size corresponding to pixelArraySize is listed,<wbr/> the resulting
17125raw sensor image will include black pixels.<wbr/></p>
17126<p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
17127or are otherwise inactive.<wbr/>  The <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> key
17128defines the rectangle of active pixels that actually forms an image.<wbr/></p>
17129            </td>
17130          </tr>
17131
17132
17133          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17134           <!-- end of entry -->
17135
17136
17137          <tr class="entry" id="static_android.sensor.info.whiteLevel">
17138            <td class="entry_name
17139             " rowspan="5">
17140              android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
17141            </td>
17142            <td class="entry_type">
17143                <span class="entry_type_name">int32</span>
17144
17145              <span class="entry_type_visibility"> [public]</span>
17146
17147
17148
17149
17150
17151
17152            </td> <!-- entry_type -->
17153
17154            <td class="entry_description">
17155              <p>Maximum raw value output by sensor.<wbr/></p>
17156            </td>
17157
17158            <td class="entry_units">
17159            </td>
17160
17161            <td class="entry_range">
17162              <p>&gt; 255 (8-bit output)</p>
17163            </td>
17164
17165            <td class="entry_tags">
17166              <ul class="entry_tags">
17167                  <li><a href="#tag_RAW">RAW</a></li>
17168              </ul>
17169            </td>
17170
17171          </tr>
17172          <tr class="entries_header">
17173            <th class="th_details" colspan="5">Details</th>
17174          </tr>
17175          <tr class="entry_cont">
17176            <td class="entry_details" colspan="5">
17177              <p>This specifies the fully-saturated encoding level for the raw
17178sample values from the sensor.<wbr/>  This is typically caused by the
17179sensor becoming highly non-linear or clipping.<wbr/> The minimum for
17180each channel is specified by the offset in the
17181<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
17182<p>The white level is typically determined either by sensor bit depth
17183(8-14 bits is expected),<wbr/> or by the point where the sensor response
17184becomes too non-linear to be useful.<wbr/>  The default value for this is
17185maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
17186            </td>
17187          </tr>
17188
17189          <tr class="entries_header">
17190            <th class="th_details" colspan="5">HAL Implementation Details</th>
17191          </tr>
17192          <tr class="entry_cont">
17193            <td class="entry_details" colspan="5">
17194              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
17195so the value for linear sensors should not be significantly lower
17196than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
17197            </td>
17198          </tr>
17199
17200          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17201           <!-- end of entry -->
17202
17203
17204          <tr class="entry" id="static_android.sensor.info.timestampSource">
17205            <td class="entry_name
17206             " rowspan="3">
17207              android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
17208            </td>
17209            <td class="entry_type">
17210                <span class="entry_type_name entry_type_name_enum">byte</span>
17211
17212              <span class="entry_type_visibility"> [public]</span>
17213
17214
17215              <span class="entry_type_hwlevel">[legacy] </span>
17216
17217
17218
17219                <ul class="entry_type_enum">
17220                  <li>
17221                    <span class="entry_type_enum_name">UNKNOWN</span>
17222                    <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/>
17223but can not be compared to timestamps from other subsystems
17224(e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
17225camera devices in the same system.<wbr/> Timestamps between streams and results for
17226a single camera instance are comparable,<wbr/> and the timestamps for all buffers
17227and the result metadata generated by a single capture are identical.<wbr/></p></span>
17228                  </li>
17229                  <li>
17230                    <span class="entry_type_enum_name">REALTIME</span>
17231                    <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
17232android.<wbr/>os.<wbr/>System<wbr/>Clock#elapsed<wbr/>Realtime<wbr/>Nanos(),<wbr/>
17233and they can be compared to other timestamps using that base.<wbr/></p></span>
17234                  </li>
17235                </ul>
17236
17237            </td> <!-- entry_type -->
17238
17239            <td class="entry_description">
17240              <p>The time base source for sensor capture start timestamps.<wbr/></p>
17241            </td>
17242
17243            <td class="entry_units">
17244            </td>
17245
17246            <td class="entry_range">
17247            </td>
17248
17249            <td class="entry_tags">
17250              <ul class="entry_tags">
17251                  <li><a href="#tag_V1">V1</a></li>
17252              </ul>
17253            </td>
17254
17255          </tr>
17256          <tr class="entries_header">
17257            <th class="th_details" colspan="5">Details</th>
17258          </tr>
17259          <tr class="entry_cont">
17260            <td class="entry_details" colspan="5">
17261              <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
17262may not based on a time source that can be compared to other system time sources.<wbr/></p>
17263<p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
17264can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
17265            </td>
17266          </tr>
17267
17268
17269          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17270           <!-- end of entry -->
17271
17272
17273
17274
17275
17276          <tr class="entry" id="static_android.sensor.referenceIlluminant1">
17277            <td class="entry_name
17278             " rowspan="5">
17279              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
17280            </td>
17281            <td class="entry_type">
17282                <span class="entry_type_name entry_type_name_enum">byte</span>
17283
17284              <span class="entry_type_visibility"> [public]</span>
17285
17286
17287
17288
17289
17290                <ul class="entry_type_enum">
17291                  <li>
17292                    <span class="entry_type_enum_name">DAYLIGHT</span>
17293                    <span class="entry_type_enum_value">1</span>
17294                  </li>
17295                  <li>
17296                    <span class="entry_type_enum_name">FLUORESCENT</span>
17297                    <span class="entry_type_enum_value">2</span>
17298                  </li>
17299                  <li>
17300                    <span class="entry_type_enum_name">TUNGSTEN</span>
17301                    <span class="entry_type_enum_value">3</span>
17302                    <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
17303                  </li>
17304                  <li>
17305                    <span class="entry_type_enum_name">FLASH</span>
17306                    <span class="entry_type_enum_value">4</span>
17307                  </li>
17308                  <li>
17309                    <span class="entry_type_enum_name">FINE_WEATHER</span>
17310                    <span class="entry_type_enum_value">9</span>
17311                  </li>
17312                  <li>
17313                    <span class="entry_type_enum_name">CLOUDY_WEATHER</span>
17314                    <span class="entry_type_enum_value">10</span>
17315                  </li>
17316                  <li>
17317                    <span class="entry_type_enum_name">SHADE</span>
17318                    <span class="entry_type_enum_value">11</span>
17319                  </li>
17320                  <li>
17321                    <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span>
17322                    <span class="entry_type_enum_value">12</span>
17323                    <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
17324                  </li>
17325                  <li>
17326                    <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span>
17327                    <span class="entry_type_enum_value">13</span>
17328                    <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
17329                  </li>
17330                  <li>
17331                    <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span>
17332                    <span class="entry_type_enum_value">14</span>
17333                    <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
17334                  </li>
17335                  <li>
17336                    <span class="entry_type_enum_name">WHITE_FLUORESCENT</span>
17337                    <span class="entry_type_enum_value">15</span>
17338                    <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
17339                  </li>
17340                  <li>
17341                    <span class="entry_type_enum_name">STANDARD_A</span>
17342                    <span class="entry_type_enum_value">17</span>
17343                  </li>
17344                  <li>
17345                    <span class="entry_type_enum_name">STANDARD_B</span>
17346                    <span class="entry_type_enum_value">18</span>
17347                  </li>
17348                  <li>
17349                    <span class="entry_type_enum_name">STANDARD_C</span>
17350                    <span class="entry_type_enum_value">19</span>
17351                  </li>
17352                  <li>
17353                    <span class="entry_type_enum_name">D55</span>
17354                    <span class="entry_type_enum_value">20</span>
17355                  </li>
17356                  <li>
17357                    <span class="entry_type_enum_name">D65</span>
17358                    <span class="entry_type_enum_value">21</span>
17359                  </li>
17360                  <li>
17361                    <span class="entry_type_enum_name">D75</span>
17362                    <span class="entry_type_enum_value">22</span>
17363                  </li>
17364                  <li>
17365                    <span class="entry_type_enum_name">D50</span>
17366                    <span class="entry_type_enum_value">23</span>
17367                  </li>
17368                  <li>
17369                    <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span>
17370                    <span class="entry_type_enum_value">24</span>
17371                  </li>
17372                </ul>
17373
17374            </td> <!-- entry_type -->
17375
17376            <td class="entry_description">
17377              <p>The standard reference illuminant used as the scene light source when
17378calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
17379<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
17380<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
17381            </td>
17382
17383            <td class="entry_units">
17384            </td>
17385
17386            <td class="entry_range">
17387            </td>
17388
17389            <td class="entry_tags">
17390              <ul class="entry_tags">
17391                  <li><a href="#tag_RAW">RAW</a></li>
17392              </ul>
17393            </td>
17394
17395          </tr>
17396          <tr class="entries_header">
17397            <th class="th_details" colspan="5">Details</th>
17398          </tr>
17399          <tr class="entry_cont">
17400            <td class="entry_details" colspan="5">
17401              <p>The values in this key correspond to the values defined for the
17402EXIF LightSource tag.<wbr/> These illuminants are standard light sources
17403that are often used calibrating camera devices.<wbr/></p>
17404<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
17405<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
17406<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
17407<p>Some devices may choose to provide a second set of calibration
17408information for improved quality,<wbr/> including
17409<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
17410            </td>
17411          </tr>
17412
17413          <tr class="entries_header">
17414            <th class="th_details" colspan="5">HAL Implementation Details</th>
17415          </tr>
17416          <tr class="entry_cont">
17417            <td class="entry_details" colspan="5">
17418              <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
17419and corresponding matrices must be present to support the RAW capability
17420and DNG output.<wbr/></p>
17421<p>When producing raw images with a color profile that has only been
17422calibrated against a single light source,<wbr/> it is valid to omit
17423<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
17424<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/>
17425and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
17426<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
17427chosen so that it is representative of typical scene lighting.<wbr/>  In
17428general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
17429<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
17430<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
17431chosen to represent the typical range of scene lighting conditions.<wbr/>
17432In general,<wbr/> low color temperature illuminant such as Standard-A will
17433be chosen for the first reference illuminant and a higher color
17434temperature illuminant such as D65 will be chosen for the second
17435reference illuminant.<wbr/></p>
17436            </td>
17437          </tr>
17438
17439          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17440           <!-- end of entry -->
17441
17442
17443          <tr class="entry" id="static_android.sensor.referenceIlluminant2">
17444            <td class="entry_name
17445             " rowspan="3">
17446              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
17447            </td>
17448            <td class="entry_type">
17449                <span class="entry_type_name">byte</span>
17450
17451              <span class="entry_type_visibility"> [public]</span>
17452
17453
17454
17455
17456
17457
17458            </td> <!-- entry_type -->
17459
17460            <td class="entry_description">
17461              <p>The standard reference illuminant used as the scene light source when
17462calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
17463<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
17464<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
17465            </td>
17466
17467            <td class="entry_units">
17468            </td>
17469
17470            <td class="entry_range">
17471              <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
17472            </td>
17473
17474            <td class="entry_tags">
17475              <ul class="entry_tags">
17476                  <li><a href="#tag_RAW">RAW</a></li>
17477              </ul>
17478            </td>
17479
17480          </tr>
17481          <tr class="entries_header">
17482            <th class="th_details" colspan="5">Details</th>
17483          </tr>
17484          <tr class="entry_cont">
17485            <td class="entry_details" colspan="5">
17486              <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
17487<p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
17488<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
17489<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
17490            </td>
17491          </tr>
17492
17493
17494          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17495           <!-- end of entry -->
17496
17497
17498          <tr class="entry" id="static_android.sensor.calibrationTransform1">
17499            <td class="entry_name
17500             " rowspan="3">
17501              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
17502            </td>
17503            <td class="entry_type">
17504                <span class="entry_type_name">rational</span>
17505                <span class="entry_type_container">x</span>
17506
17507                <span class="entry_type_array">
17508                  3 x 3
17509                </span>
17510              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
17511
17512
17513
17514
17515                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
17516
17517
17518            </td> <!-- entry_type -->
17519
17520            <td class="entry_description">
17521              <p>A per-device calibration transform matrix that maps from the
17522reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
17523            </td>
17524
17525            <td class="entry_units">
17526            </td>
17527
17528            <td class="entry_range">
17529            </td>
17530
17531            <td class="entry_tags">
17532              <ul class="entry_tags">
17533                  <li><a href="#tag_RAW">RAW</a></li>
17534              </ul>
17535            </td>
17536
17537          </tr>
17538          <tr class="entries_header">
17539            <th class="th_details" colspan="5">Details</th>
17540          </tr>
17541          <tr class="entry_cont">
17542            <td class="entry_details" colspan="5">
17543              <p>This matrix is used to correct for per-device variations in the
17544sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
17545<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
17546contains a per-device calibration transform that maps colors
17547from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
17548colorspace) into this camera device's native sensor color
17549space under the first reference illuminant
17550(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
17551            </td>
17552          </tr>
17553
17554
17555          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17556           <!-- end of entry -->
17557
17558
17559          <tr class="entry" id="static_android.sensor.calibrationTransform2">
17560            <td class="entry_name
17561             " rowspan="3">
17562              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
17563            </td>
17564            <td class="entry_type">
17565                <span class="entry_type_name">rational</span>
17566                <span class="entry_type_container">x</span>
17567
17568                <span class="entry_type_array">
17569                  3 x 3
17570                </span>
17571              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
17572
17573
17574
17575
17576                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
17577
17578
17579            </td> <!-- entry_type -->
17580
17581            <td class="entry_description">
17582              <p>A per-device calibration transform matrix that maps from the
17583reference sensor colorspace to the actual device sensor colorspace
17584(this is the colorspace of the raw buffer data).<wbr/></p>
17585            </td>
17586
17587            <td class="entry_units">
17588            </td>
17589
17590            <td class="entry_range">
17591            </td>
17592
17593            <td class="entry_tags">
17594              <ul class="entry_tags">
17595                  <li><a href="#tag_RAW">RAW</a></li>
17596              </ul>
17597            </td>
17598
17599          </tr>
17600          <tr class="entries_header">
17601            <th class="th_details" colspan="5">Details</th>
17602          </tr>
17603          <tr class="entry_cont">
17604            <td class="entry_details" colspan="5">
17605              <p>This matrix is used to correct for per-device variations in the
17606sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
17607<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
17608contains a per-device calibration transform that maps colors
17609from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
17610colorspace) into this camera device's native sensor color
17611space under the second reference illuminant
17612(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
17613<p>This matrix will only be present if the second reference
17614illuminant is present.<wbr/></p>
17615            </td>
17616          </tr>
17617
17618
17619          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17620           <!-- end of entry -->
17621
17622
17623          <tr class="entry" id="static_android.sensor.colorTransform1">
17624            <td class="entry_name
17625             " rowspan="3">
17626              android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
17627            </td>
17628            <td class="entry_type">
17629                <span class="entry_type_name">rational</span>
17630                <span class="entry_type_container">x</span>
17631
17632                <span class="entry_type_array">
17633                  3 x 3
17634                </span>
17635              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
17636
17637
17638
17639
17640                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
17641
17642
17643            </td> <!-- entry_type -->
17644
17645            <td class="entry_description">
17646              <p>A matrix that transforms color values from CIE XYZ color space to
17647reference sensor color space.<wbr/></p>
17648            </td>
17649
17650            <td class="entry_units">
17651            </td>
17652
17653            <td class="entry_range">
17654            </td>
17655
17656            <td class="entry_tags">
17657              <ul class="entry_tags">
17658                  <li><a href="#tag_RAW">RAW</a></li>
17659              </ul>
17660            </td>
17661
17662          </tr>
17663          <tr class="entries_header">
17664            <th class="th_details" colspan="5">Details</th>
17665          </tr>
17666          <tr class="entry_cont">
17667            <td class="entry_details" colspan="5">
17668              <p>This matrix is used to convert from the standard CIE XYZ color
17669space to the reference sensor colorspace,<wbr/> and is used when processing
17670raw buffer data.<wbr/></p>
17671<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
17672contains a color transform matrix that maps colors from the CIE
17673XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
17674"golden module" colorspace) under the first reference illuminant
17675(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
17676<p>The white points chosen in both the reference sensor color space
17677and the CIE XYZ colorspace when calculating this transform will
17678match the standard white point for the first reference illuminant
17679(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
17680            </td>
17681          </tr>
17682
17683
17684          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17685           <!-- end of entry -->
17686
17687
17688          <tr class="entry" id="static_android.sensor.colorTransform2">
17689            <td class="entry_name
17690             " rowspan="3">
17691              android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
17692            </td>
17693            <td class="entry_type">
17694                <span class="entry_type_name">rational</span>
17695                <span class="entry_type_container">x</span>
17696
17697                <span class="entry_type_array">
17698                  3 x 3
17699                </span>
17700              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
17701
17702
17703
17704
17705                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
17706
17707
17708            </td> <!-- entry_type -->
17709
17710            <td class="entry_description">
17711              <p>A matrix that transforms color values from CIE XYZ color space to
17712reference sensor color space.<wbr/></p>
17713            </td>
17714
17715            <td class="entry_units">
17716            </td>
17717
17718            <td class="entry_range">
17719            </td>
17720
17721            <td class="entry_tags">
17722              <ul class="entry_tags">
17723                  <li><a href="#tag_RAW">RAW</a></li>
17724              </ul>
17725            </td>
17726
17727          </tr>
17728          <tr class="entries_header">
17729            <th class="th_details" colspan="5">Details</th>
17730          </tr>
17731          <tr class="entry_cont">
17732            <td class="entry_details" colspan="5">
17733              <p>This matrix is used to convert from the standard CIE XYZ color
17734space to the reference sensor colorspace,<wbr/> and is used when processing
17735raw buffer data.<wbr/></p>
17736<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
17737contains a color transform matrix that maps colors from the CIE
17738XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
17739"golden module" colorspace) under the second reference illuminant
17740(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
17741<p>The white points chosen in both the reference sensor color space
17742and the CIE XYZ colorspace when calculating this transform will
17743match the standard white point for the second reference illuminant
17744(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
17745<p>This matrix will only be present if the second reference
17746illuminant is present.<wbr/></p>
17747            </td>
17748          </tr>
17749
17750
17751          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17752           <!-- end of entry -->
17753
17754
17755          <tr class="entry" id="static_android.sensor.forwardMatrix1">
17756            <td class="entry_name
17757             " rowspan="3">
17758              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
17759            </td>
17760            <td class="entry_type">
17761                <span class="entry_type_name">rational</span>
17762                <span class="entry_type_container">x</span>
17763
17764                <span class="entry_type_array">
17765                  3 x 3
17766                </span>
17767              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
17768
17769
17770
17771
17772                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
17773
17774
17775            </td> <!-- entry_type -->
17776
17777            <td class="entry_description">
17778              <p>A matrix that transforms white balanced camera colors from the reference
17779sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
17780            </td>
17781
17782            <td class="entry_units">
17783            </td>
17784
17785            <td class="entry_range">
17786            </td>
17787
17788            <td class="entry_tags">
17789              <ul class="entry_tags">
17790                  <li><a href="#tag_RAW">RAW</a></li>
17791              </ul>
17792            </td>
17793
17794          </tr>
17795          <tr class="entries_header">
17796            <th class="th_details" colspan="5">Details</th>
17797          </tr>
17798          <tr class="entry_cont">
17799            <td class="entry_details" colspan="5">
17800              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
17801is used when processing raw buffer data.<wbr/></p>
17802<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
17803a color transform matrix that maps white balanced colors from the
17804reference sensor color space to the CIE XYZ color space with a D50 white
17805point.<wbr/></p>
17806<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
17807this matrix is chosen so that the standard white point for this reference
17808illuminant in the reference sensor colorspace is mapped to D50 in the
17809CIE XYZ colorspace.<wbr/></p>
17810            </td>
17811          </tr>
17812
17813
17814          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17815           <!-- end of entry -->
17816
17817
17818          <tr class="entry" id="static_android.sensor.forwardMatrix2">
17819            <td class="entry_name
17820             " rowspan="3">
17821              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
17822            </td>
17823            <td class="entry_type">
17824                <span class="entry_type_name">rational</span>
17825                <span class="entry_type_container">x</span>
17826
17827                <span class="entry_type_array">
17828                  3 x 3
17829                </span>
17830              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
17831
17832
17833
17834
17835                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
17836
17837
17838            </td> <!-- entry_type -->
17839
17840            <td class="entry_description">
17841              <p>A matrix that transforms white balanced camera colors from the reference
17842sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
17843            </td>
17844
17845            <td class="entry_units">
17846            </td>
17847
17848            <td class="entry_range">
17849            </td>
17850
17851            <td class="entry_tags">
17852              <ul class="entry_tags">
17853                  <li><a href="#tag_RAW">RAW</a></li>
17854              </ul>
17855            </td>
17856
17857          </tr>
17858          <tr class="entries_header">
17859            <th class="th_details" colspan="5">Details</th>
17860          </tr>
17861          <tr class="entry_cont">
17862            <td class="entry_details" colspan="5">
17863              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
17864is used when processing raw buffer data.<wbr/></p>
17865<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
17866a color transform matrix that maps white balanced colors from the
17867reference sensor color space to the CIE XYZ color space with a D50 white
17868point.<wbr/></p>
17869<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
17870this matrix is chosen so that the standard white point for this reference
17871illuminant in the reference sensor colorspace is mapped to D50 in the
17872CIE XYZ colorspace.<wbr/></p>
17873<p>This matrix will only be present if the second reference
17874illuminant is present.<wbr/></p>
17875            </td>
17876          </tr>
17877
17878
17879          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17880           <!-- end of entry -->
17881
17882
17883          <tr class="entry" id="static_android.sensor.baseGainFactor">
17884            <td class="entry_name
17885             " rowspan="1">
17886              android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
17887            </td>
17888            <td class="entry_type">
17889                <span class="entry_type_name">rational</span>
17890
17891              <span class="entry_type_visibility"> [system]</span>
17892
17893
17894
17895
17896
17897
17898            </td> <!-- entry_type -->
17899
17900            <td class="entry_description">
17901              <p>Gain factor from electrons to raw units when
17902ISO=100</p>
17903            </td>
17904
17905            <td class="entry_units">
17906            </td>
17907
17908            <td class="entry_range">
17909            </td>
17910
17911            <td class="entry_tags">
17912              <ul class="entry_tags">
17913                  <li><a href="#tag_FUTURE">FUTURE</a></li>
17914              </ul>
17915            </td>
17916
17917          </tr>
17918
17919
17920          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17921           <!-- end of entry -->
17922
17923
17924          <tr class="entry" id="static_android.sensor.blackLevelPattern">
17925            <td class="entry_name
17926             " rowspan="5">
17927              android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
17928            </td>
17929            <td class="entry_type">
17930                <span class="entry_type_name">int32</span>
17931                <span class="entry_type_container">x</span>
17932
17933                <span class="entry_type_array">
17934                  4
17935                </span>
17936              <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
17937
17938
17939
17940
17941                <div class="entry_type_notes">2x2 raw count block</div>
17942
17943
17944            </td> <!-- entry_type -->
17945
17946            <td class="entry_description">
17947              <p>A fixed black level offset for each of the color filter arrangement
17948(CFA) mosaic channels.<wbr/></p>
17949            </td>
17950
17951            <td class="entry_units">
17952            </td>
17953
17954            <td class="entry_range">
17955              <p>&gt;= 0 for each.<wbr/></p>
17956            </td>
17957
17958            <td class="entry_tags">
17959              <ul class="entry_tags">
17960                  <li><a href="#tag_RAW">RAW</a></li>
17961              </ul>
17962            </td>
17963
17964          </tr>
17965          <tr class="entries_header">
17966            <th class="th_details" colspan="5">Details</th>
17967          </tr>
17968          <tr class="entry_cont">
17969            <td class="entry_details" colspan="5">
17970              <p>This key specifies the zero light value for each of the CFA mosaic
17971channels in the camera sensor.<wbr/>  The maximal value output by the
17972sensor 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>
17973<p>The values are given in the same order as channels listed for the CFA
17974layout 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
17975nth value given corresponds to the black level offset for the nth
17976color channel listed in the CFA.<wbr/></p>
17977            </td>
17978          </tr>
17979
17980          <tr class="entries_header">
17981            <th class="th_details" colspan="5">HAL Implementation Details</th>
17982          </tr>
17983          <tr class="entry_cont">
17984            <td class="entry_details" colspan="5">
17985              <p>The values are given in row-column scan order,<wbr/> with the first value
17986corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
17987            </td>
17988          </tr>
17989
17990          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17991           <!-- end of entry -->
17992
17993
17994          <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
17995            <td class="entry_name
17996             " rowspan="3">
17997              android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
17998            </td>
17999            <td class="entry_type">
18000                <span class="entry_type_name">int32</span>
18001
18002              <span class="entry_type_visibility"> [public]</span>
18003
18004
18005              <span class="entry_type_hwlevel">[full] </span>
18006
18007
18008
18009
18010            </td> <!-- entry_type -->
18011
18012            <td class="entry_description">
18013              <p>Maximum sensitivity that is implemented
18014purely through analog gain.<wbr/></p>
18015            </td>
18016
18017            <td class="entry_units">
18018            </td>
18019
18020            <td class="entry_range">
18021            </td>
18022
18023            <td class="entry_tags">
18024              <ul class="entry_tags">
18025                  <li><a href="#tag_V1">V1</a></li>
18026                  <li><a href="#tag_FULL">FULL</a></li>
18027              </ul>
18028            </td>
18029
18030          </tr>
18031          <tr class="entries_header">
18032            <th class="th_details" colspan="5">Details</th>
18033          </tr>
18034          <tr class="entry_cont">
18035            <td class="entry_details" colspan="5">
18036              <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
18037equal to this,<wbr/> all applied gain must be analog.<wbr/> For
18038values above this,<wbr/> the gain applied can be a mix of analog and
18039digital.<wbr/></p>
18040            </td>
18041          </tr>
18042
18043
18044          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18045           <!-- end of entry -->
18046
18047
18048          <tr class="entry" id="static_android.sensor.orientation">
18049            <td class="entry_name
18050             " rowspan="3">
18051              android.<wbr/>sensor.<wbr/>orientation
18052            </td>
18053            <td class="entry_type">
18054                <span class="entry_type_name">int32</span>
18055
18056              <span class="entry_type_visibility"> [public]</span>
18057
18058
18059              <span class="entry_type_hwlevel">[legacy] </span>
18060
18061
18062
18063
18064            </td> <!-- entry_type -->
18065
18066            <td class="entry_description">
18067              <p>Clockwise angle through which the output image needs to be rotated to be
18068upright on the device screen in its native orientation.<wbr/></p>
18069            </td>
18070
18071            <td class="entry_units">
18072              Degrees of clockwise rotation; always a multiple of
18073          90
18074            </td>
18075
18076            <td class="entry_range">
18077              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
18078            </td>
18079
18080            <td class="entry_tags">
18081              <ul class="entry_tags">
18082                  <li><a href="#tag_BC">BC</a></li>
18083              </ul>
18084            </td>
18085
18086          </tr>
18087          <tr class="entries_header">
18088            <th class="th_details" colspan="5">Details</th>
18089          </tr>
18090          <tr class="entry_cont">
18091            <td class="entry_details" colspan="5">
18092              <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
18093the sensor's coordinate system.<wbr/></p>
18094            </td>
18095          </tr>
18096
18097
18098          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18099           <!-- end of entry -->
18100
18101
18102          <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
18103            <td class="entry_name
18104             " rowspan="3">
18105              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
18106            </td>
18107            <td class="entry_type">
18108                <span class="entry_type_name">int32</span>
18109                <span class="entry_type_container">x</span>
18110
18111                <span class="entry_type_array">
18112                  3
18113                </span>
18114              <span class="entry_type_visibility"> [system]</span>
18115
18116
18117
18118
18119                <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
18120
18121
18122            </td> <!-- entry_type -->
18123
18124            <td class="entry_description">
18125              <p>The number of input samples for each dimension of
18126<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
18127            </td>
18128
18129            <td class="entry_units">
18130            </td>
18131
18132            <td class="entry_range">
18133              <p>Hue &gt;= 1,<wbr/>
18134Saturation &gt;= 2,<wbr/>
18135Value &gt;= 1</p>
18136            </td>
18137
18138            <td class="entry_tags">
18139              <ul class="entry_tags">
18140                  <li><a href="#tag_RAW">RAW</a></li>
18141              </ul>
18142            </td>
18143
18144          </tr>
18145          <tr class="entries_header">
18146            <th class="th_details" colspan="5">Details</th>
18147          </tr>
18148          <tr class="entry_cont">
18149            <td class="entry_details" colspan="5">
18150              <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
18151dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the
18152dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
18153element.<wbr/></p>
18154            </td>
18155          </tr>
18156
18157
18158          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18159           <!-- end of entry -->
18160
18161
18162          <tr class="entry" id="static_android.sensor.availableTestPatternModes">
18163            <td class="entry_name
18164             " rowspan="5">
18165              android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
18166            </td>
18167            <td class="entry_type">
18168                <span class="entry_type_name">int32</span>
18169                <span class="entry_type_container">x</span>
18170
18171                <span class="entry_type_array">
18172                  n
18173                </span>
18174              <span class="entry_type_visibility"> [public]</span>
18175
18176
18177
18178
18179                <div class="entry_type_notes">list of enums</div>
18180
18181
18182            </td> <!-- entry_type -->
18183
18184            <td class="entry_description">
18185              <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
18186supported by this camera device.<wbr/></p>
18187            </td>
18188
18189            <td class="entry_units">
18190            </td>
18191
18192            <td class="entry_range">
18193              <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
18194            </td>
18195
18196            <td class="entry_tags">
18197            </td>
18198
18199          </tr>
18200          <tr class="entries_header">
18201            <th class="th_details" colspan="5">Details</th>
18202          </tr>
18203          <tr class="entry_cont">
18204            <td class="entry_details" colspan="5">
18205              <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
18206            </td>
18207          </tr>
18208
18209          <tr class="entries_header">
18210            <th class="th_details" colspan="5">HAL Implementation Details</th>
18211          </tr>
18212          <tr class="entry_cont">
18213            <td class="entry_details" colspan="5">
18214              <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
18215            </td>
18216          </tr>
18217
18218          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18219           <!-- end of entry -->
18220
18221
18222
18223      <!-- end of kind -->
18224      </tbody>
18225      <tr><td colspan="6" class="kind">dynamic</td></tr>
18226
18227      <thead class="entries_header">
18228        <tr>
18229          <th class="th_name">Property Name</th>
18230          <th class="th_type">Type</th>
18231          <th class="th_description">Description</th>
18232          <th class="th_units">Units</th>
18233          <th class="th_range">Range</th>
18234          <th class="th_tags">Tags</th>
18235        </tr>
18236      </thead>
18237
18238      <tbody>
18239
18240
18241
18242
18243
18244
18245
18246
18247
18248
18249          <tr class="entry" id="dynamic_android.sensor.exposureTime">
18250            <td class="entry_name
18251             " rowspan="3">
18252              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
18253            </td>
18254            <td class="entry_type">
18255                <span class="entry_type_name">int64</span>
18256
18257              <span class="entry_type_visibility"> [public]</span>
18258
18259
18260              <span class="entry_type_hwlevel">[full] </span>
18261
18262
18263
18264
18265            </td> <!-- entry_type -->
18266
18267            <td class="entry_description">
18268              <p>Duration each pixel is exposed to
18269light.<wbr/></p>
18270            </td>
18271
18272            <td class="entry_units">
18273              Nanoseconds
18274            </td>
18275
18276            <td class="entry_range">
18277              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
18278            </td>
18279
18280            <td class="entry_tags">
18281              <ul class="entry_tags">
18282                  <li><a href="#tag_V1">V1</a></li>
18283              </ul>
18284            </td>
18285
18286          </tr>
18287          <tr class="entries_header">
18288            <th class="th_details" colspan="5">Details</th>
18289          </tr>
18290          <tr class="entry_cont">
18291            <td class="entry_details" colspan="5">
18292              <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
18293duration exposed to the nearest possible value (rather than expose longer).<wbr/>
18294The final exposure time used will be available in the output capture result.<wbr/></p>
18295<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
18296OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
18297            </td>
18298          </tr>
18299
18300
18301          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18302           <!-- end of entry -->
18303
18304
18305          <tr class="entry" id="dynamic_android.sensor.frameDuration">
18306            <td class="entry_name
18307             " rowspan="5">
18308              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
18309            </td>
18310            <td class="entry_type">
18311                <span class="entry_type_name">int64</span>
18312
18313              <span class="entry_type_visibility"> [public]</span>
18314
18315
18316              <span class="entry_type_hwlevel">[full] </span>
18317
18318
18319
18320
18321            </td> <!-- entry_type -->
18322
18323            <td class="entry_description">
18324              <p>Duration from start of frame exposure to
18325start of next frame exposure.<wbr/></p>
18326            </td>
18327
18328            <td class="entry_units">
18329              Nanoseconds
18330            </td>
18331
18332            <td class="entry_range">
18333              <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
18334<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
18335is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
18336            </td>
18337
18338            <td class="entry_tags">
18339              <ul class="entry_tags">
18340                  <li><a href="#tag_V1">V1</a></li>
18341              </ul>
18342            </td>
18343
18344          </tr>
18345          <tr class="entries_header">
18346            <th class="th_details" colspan="5">Details</th>
18347          </tr>
18348          <tr class="entry_cont">
18349            <td class="entry_details" colspan="5">
18350              <p>The maximum frame rate that can be supported by a camera subsystem is
18351a function of many factors:</p>
18352<ul>
18353<li>Requested resolutions of output image streams</li>
18354<li>Availability of binning /<wbr/> skipping modes on the imager</li>
18355<li>The bandwidth of the imager interface</li>
18356<li>The bandwidth of the various ISP processing blocks</li>
18357</ul>
18358<p>Since these factors can vary greatly between different ISPs and
18359sensors,<wbr/> the camera abstraction tries to represent the bandwidth
18360restrictions with as simple a model as possible.<wbr/></p>
18361<p>The model presented has the following characteristics:</p>
18362<ul>
18363<li>The image sensor is always configured to output the smallest
18364resolution possible given the application's requested output stream
18365sizes.<wbr/>  The smallest resolution is defined as being at least as large
18366as the largest requested output stream size; the camera pipeline must
18367never digitally upsample sensor data when the crop region covers the
18368whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
18369resolutions are configured,<wbr/> the sensor can provide a higher frame
18370rate.<wbr/></li>
18371<li>Since any request may use any or all the currently configured
18372output streams,<wbr/> the sensor and ISP must be configured to support
18373scaling a single capture to all the streams at the same time.<wbr/>  This
18374means the camera pipeline must be ready to produce the largest
18375requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
18376frame rate of a given configured stream set is governed only by the
18377largest requested stream resolution.<wbr/></li>
18378<li>Using more than one output stream in a request does not affect the
18379frame duration.<wbr/></li>
18380<li>Certain format-streams may need to do additional background processing
18381before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
18382can run concurrently to the rest of the camera pipeline,<wbr/> but
18383cannot process more than 1 capture at a time.<wbr/></li>
18384</ul>
18385<p>The necessary information for the application,<wbr/> given the model above,<wbr/>
18386is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field
18387using StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size).<wbr/>
18388These are used to determine the maximum frame rate /<wbr/> minimum frame
18389duration that is possible for a given stream configuration.<wbr/></p>
18390<p>Specifically,<wbr/> the application can use the following rules to
18391determine the minimum frame duration it can request from the camera
18392device:</p>
18393<ol>
18394<li>Let the set of currently configured input/<wbr/>output streams
18395be called <code>S</code>.<wbr/></li>
18396<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by
18397looking it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using
18398StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size) (with
18399its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called
18400<code>F</code>.<wbr/></li>
18401<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
18402for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
18403used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
18404</ol>
18405<p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in
18406StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size) using its
18407respective size/<wbr/>format),<wbr/> then the frame duration in
18408<code>F</code> determines the steady state frame rate that the application will
18409get if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind
18410of request be called <code>Rsimple</code>.<wbr/></p>
18411<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
18412by a single capture of a new request <code>Rstall</code> (which has at least
18413one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
18414same minimum frame duration this will not cause a frame rate loss
18415if all buffers from the previous <code>Rstall</code> have already been
18416delivered.<wbr/></p>
18417<p>For more details about stalling,<wbr/> see
18418StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size).<wbr/></p>
18419<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
18420OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
18421            </td>
18422          </tr>
18423
18424          <tr class="entries_header">
18425            <th class="th_details" colspan="5">HAL Implementation Details</th>
18426          </tr>
18427          <tr class="entry_cont">
18428            <td class="entry_details" colspan="5">
18429              <p>For more details about stalling,<wbr/> see
18430<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
18431            </td>
18432          </tr>
18433
18434          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18435           <!-- end of entry -->
18436
18437
18438          <tr class="entry" id="dynamic_android.sensor.sensitivity">
18439            <td class="entry_name
18440             " rowspan="5">
18441              android.<wbr/>sensor.<wbr/>sensitivity
18442            </td>
18443            <td class="entry_type">
18444                <span class="entry_type_name">int32</span>
18445
18446              <span class="entry_type_visibility"> [public]</span>
18447
18448
18449              <span class="entry_type_hwlevel">[full] </span>
18450
18451
18452
18453
18454            </td> <!-- entry_type -->
18455
18456            <td class="entry_description">
18457              <p>The amount of gain applied to sensor data
18458before processing.<wbr/></p>
18459            </td>
18460
18461            <td class="entry_units">
18462              ISO arithmetic units
18463            </td>
18464
18465            <td class="entry_range">
18466              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
18467            </td>
18468
18469            <td class="entry_tags">
18470              <ul class="entry_tags">
18471                  <li><a href="#tag_V1">V1</a></li>
18472              </ul>
18473            </td>
18474
18475          </tr>
18476          <tr class="entries_header">
18477            <th class="th_details" colspan="5">Details</th>
18478          </tr>
18479          <tr class="entry_cont">
18480            <td class="entry_details" colspan="5">
18481              <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
18482as defined in ISO 12232:2006.<wbr/></p>
18483<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
18484if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
18485is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
18486<p>If the camera device cannot apply the exact sensitivity
18487requested,<wbr/> it will reduce the gain to the nearest supported
18488value.<wbr/> The final sensitivity used will be available in the
18489output capture result.<wbr/></p>
18490            </td>
18491          </tr>
18492
18493          <tr class="entries_header">
18494            <th class="th_details" colspan="5">HAL Implementation Details</th>
18495          </tr>
18496          <tr class="entry_cont">
18497            <td class="entry_details" colspan="5">
18498              <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
18499            </td>
18500          </tr>
18501
18502          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18503           <!-- end of entry -->
18504
18505
18506          <tr class="entry" id="dynamic_android.sensor.timestamp">
18507            <td class="entry_name
18508             " rowspan="5">
18509              android.<wbr/>sensor.<wbr/>timestamp
18510            </td>
18511            <td class="entry_type">
18512                <span class="entry_type_name">int64</span>
18513
18514              <span class="entry_type_visibility"> [public]</span>
18515
18516
18517              <span class="entry_type_hwlevel">[legacy] </span>
18518
18519
18520
18521
18522            </td> <!-- entry_type -->
18523
18524            <td class="entry_description">
18525              <p>Time at start of exposure of first
18526row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
18527            </td>
18528
18529            <td class="entry_units">
18530              Nanoseconds
18531            </td>
18532
18533            <td class="entry_range">
18534              <p>&gt; 0</p>
18535            </td>
18536
18537            <td class="entry_tags">
18538              <ul class="entry_tags">
18539                  <li><a href="#tag_BC">BC</a></li>
18540              </ul>
18541            </td>
18542
18543          </tr>
18544          <tr class="entries_header">
18545            <th class="th_details" colspan="5">Details</th>
18546          </tr>
18547          <tr class="entry_cont">
18548            <td class="entry_details" colspan="5">
18549              <p>The timestamps are also included in all image
18550buffers produced for the same capture,<wbr/> and will be identical
18551on all the outputs.<wbr/></p>
18552<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
18553the timestamps measure time since an unspecified starting point,<wbr/>
18554and are monotonically increasing.<wbr/> They can be compared with the
18555timestamps for other captures from the same camera device,<wbr/> but are
18556not guaranteed to be comparable to any other time source.<wbr/></p>
18557<p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
18558the timestamps measure time in the same timebase as
18559android.<wbr/>os.<wbr/>System<wbr/>Clock#elapsed<wbr/>Realtime<wbr/>Nanos(),<wbr/> and they can be
18560compared to other timestamps from other subsystems that are using
18561that base.<wbr/></p>
18562            </td>
18563          </tr>
18564
18565          <tr class="entries_header">
18566            <th class="th_details" colspan="5">HAL Implementation Details</th>
18567          </tr>
18568          <tr class="entry_cont">
18569            <td class="entry_details" colspan="5">
18570              <p>All timestamps must be in reference to the kernel's
18571CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
18572time spent asleep.<wbr/> This allows for synchronization with
18573sensors that continue to operate while the system is
18574otherwise asleep.<wbr/></p>
18575<p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
18576The timestamp must be synchronized with the timestamps from other
18577sensor subsystems that are using the same timebase.<wbr/></p>
18578            </td>
18579          </tr>
18580
18581          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18582           <!-- end of entry -->
18583
18584
18585          <tr class="entry" id="dynamic_android.sensor.temperature">
18586            <td class="entry_name
18587             " rowspan="1">
18588              android.<wbr/>sensor.<wbr/>temperature
18589            </td>
18590            <td class="entry_type">
18591                <span class="entry_type_name">float</span>
18592
18593              <span class="entry_type_visibility"> [system]</span>
18594
18595
18596
18597
18598
18599
18600            </td> <!-- entry_type -->
18601
18602            <td class="entry_description">
18603              <p>The temperature of the sensor,<wbr/> sampled at the time
18604exposure began for this frame.<wbr/></p>
18605<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
18606somewhere close to it.<wbr/></p>
18607            </td>
18608
18609            <td class="entry_units">
18610              Celsius
18611            </td>
18612
18613            <td class="entry_range">
18614              <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
18615            </td>
18616
18617            <td class="entry_tags">
18618              <ul class="entry_tags">
18619                  <li><a href="#tag_FUTURE">FUTURE</a></li>
18620              </ul>
18621            </td>
18622
18623          </tr>
18624
18625
18626          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18627           <!-- end of entry -->
18628
18629
18630          <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
18631            <td class="entry_name
18632             " rowspan="3">
18633              android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
18634            </td>
18635            <td class="entry_type">
18636                <span class="entry_type_name">rational</span>
18637                <span class="entry_type_container">x</span>
18638
18639                <span class="entry_type_array">
18640                  3
18641                </span>
18642              <span class="entry_type_visibility"> [public]</span>
18643
18644
18645
18646
18647
18648
18649            </td> <!-- entry_type -->
18650
18651            <td class="entry_description">
18652              <p>The estimated camera neutral color in the native sensor colorspace at
18653the time of capture.<wbr/></p>
18654            </td>
18655
18656            <td class="entry_units">
18657            </td>
18658
18659            <td class="entry_range">
18660            </td>
18661
18662            <td class="entry_tags">
18663              <ul class="entry_tags">
18664                  <li><a href="#tag_RAW">RAW</a></li>
18665              </ul>
18666            </td>
18667
18668          </tr>
18669          <tr class="entries_header">
18670            <th class="th_details" colspan="5">Details</th>
18671          </tr>
18672          <tr class="entry_cont">
18673            <td class="entry_details" colspan="5">
18674              <p>This value gives the neutral color point encoded as an RGB value in the
18675native sensor color space.<wbr/>  The neutral color point indicates the
18676currently estimated white point of the scene illumination.<wbr/>  It can be
18677used to interpolate between the provided color transforms when
18678processing raw sensor data.<wbr/></p>
18679<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
18680            </td>
18681          </tr>
18682
18683
18684          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18685           <!-- end of entry -->
18686
18687
18688          <tr class="entry" id="dynamic_android.sensor.noiseProfile">
18689            <td class="entry_name
18690             " rowspan="5">
18691              android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
18692            </td>
18693            <td class="entry_type">
18694                <span class="entry_type_name">double</span>
18695                <span class="entry_type_container">x</span>
18696
18697                <span class="entry_type_array">
18698                  2 x CFA Channels
18699                </span>
18700              <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
18701
18702
18703
18704
18705                <div class="entry_type_notes">Pairs of noise model coefficients</div>
18706
18707
18708            </td> <!-- entry_type -->
18709
18710            <td class="entry_description">
18711              <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
18712            </td>
18713
18714            <td class="entry_units">
18715            </td>
18716
18717            <td class="entry_range">
18718            </td>
18719
18720            <td class="entry_tags">
18721              <ul class="entry_tags">
18722                  <li><a href="#tag_RAW">RAW</a></li>
18723              </ul>
18724            </td>
18725
18726          </tr>
18727          <tr class="entries_header">
18728            <th class="th_details" colspan="5">Details</th>
18729          </tr>
18730          <tr class="entry_cont">
18731            <td class="entry_details" colspan="5">
18732              <p>This key contains two noise model coefficients for each CFA channel
18733corresponding to the sensor amplification (S) and sensor readout
18734noise (O).<wbr/>  These are given as pairs of coefficients for each channel
18735in the same order as channels listed for the CFA layout key
18736(see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
18737represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
18738the first member of the Pair at index n is the S coefficient and the
18739second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
18740<p>These coefficients are used in a two parameter noise model to describe
18741the amount of noise present in the image for each CFA channel.<wbr/>  The
18742noise model used here is:</p>
18743<p>N(x) = sqrt(Sx + O)</p>
18744<p>Where x represents the recorded signal of a CFA channel normalized to
18745the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
18746that channel.<wbr/></p>
18747<p>A more detailed description of the noise model can be found in the
18748Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
18749            </td>
18750          </tr>
18751
18752          <tr class="entries_header">
18753            <th class="th_details" colspan="5">HAL Implementation Details</th>
18754          </tr>
18755          <tr class="entry_cont">
18756            <td class="entry_details" colspan="5">
18757              <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
18758an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
18759for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
18760channel,<wbr/> etc.<wbr/></p>
18761            </td>
18762          </tr>
18763
18764          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18765           <!-- end of entry -->
18766
18767
18768          <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
18769            <td class="entry_name
18770             " rowspan="3">
18771              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
18772            </td>
18773            <td class="entry_type">
18774                <span class="entry_type_name">float</span>
18775                <span class="entry_type_container">x</span>
18776
18777                <span class="entry_type_array">
18778                  hue_samples x saturation_samples x value_samples x 3
18779                </span>
18780              <span class="entry_type_visibility"> [system]</span>
18781
18782
18783
18784
18785                <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
18786
18787
18788            </td> <!-- entry_type -->
18789
18790            <td class="entry_description">
18791              <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
18792for each pixel.<wbr/></p>
18793            </td>
18794
18795            <td class="entry_units">
18796
18797          The hue shift is given in degrees; saturation and value scale factors are
18798          unitless and are between 0 and 1 inclusive
18799
18800            </td>
18801
18802            <td class="entry_range">
18803            </td>
18804
18805            <td class="entry_tags">
18806              <ul class="entry_tags">
18807                  <li><a href="#tag_RAW">RAW</a></li>
18808              </ul>
18809            </td>
18810
18811          </tr>
18812          <tr class="entries_header">
18813            <th class="th_details" colspan="5">Details</th>
18814          </tr>
18815          <tr class="entry_cont">
18816            <td class="entry_details" colspan="5">
18817              <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
18818<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
18819<p>Each entry of this map contains three floats corresponding to the
18820hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
18821hue shift has the lowest index.<wbr/> The map entries are stored in the key
18822in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
18823hue divisions in the middle loop,<wbr/> and the saturation divisions in the
18824inner loop.<wbr/> All zero input saturation entries are required to have a
18825value scale factor of 1.<wbr/>0.<wbr/></p>
18826            </td>
18827          </tr>
18828
18829
18830          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18831           <!-- end of entry -->
18832
18833
18834          <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
18835            <td class="entry_name
18836             " rowspan="3">
18837              android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
18838            </td>
18839            <td class="entry_type">
18840                <span class="entry_type_name">float</span>
18841                <span class="entry_type_container">x</span>
18842
18843                <span class="entry_type_array">
18844                  samples x 2
18845                </span>
18846              <span class="entry_type_visibility"> [system]</span>
18847
18848
18849
18850
18851                <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
18852
18853
18854            </td> <!-- entry_type -->
18855
18856            <td class="entry_description">
18857              <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
18858            </td>
18859
18860            <td class="entry_units">
18861            </td>
18862
18863            <td class="entry_range">
18864              <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
18865<code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
18866sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
18867            </td>
18868
18869            <td class="entry_tags">
18870              <ul class="entry_tags">
18871                  <li><a href="#tag_RAW">RAW</a></li>
18872              </ul>
18873            </td>
18874
18875          </tr>
18876          <tr class="entries_header">
18877            <th class="th_details" colspan="5">Details</th>
18878          </tr>
18879          <tr class="entry_cont">
18880            <td class="entry_details" colspan="5">
18881              <p>This key contains a default tone curve that can be applied while
18882processing the image as a starting point for user adjustments.<wbr/>
18883The curve is specified as a list of value pairs in linear gamma.<wbr/>
18884The curve is interpolated using a cubic spline.<wbr/></p>
18885            </td>
18886          </tr>
18887
18888
18889          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18890           <!-- end of entry -->
18891
18892
18893          <tr class="entry" id="dynamic_android.sensor.greenSplit">
18894            <td class="entry_name
18895             " rowspan="5">
18896              android.<wbr/>sensor.<wbr/>green<wbr/>Split
18897            </td>
18898            <td class="entry_type">
18899                <span class="entry_type_name">float</span>
18900
18901              <span class="entry_type_visibility"> [public]</span>
18902
18903
18904
18905
18906
18907
18908            </td> <!-- entry_type -->
18909
18910            <td class="entry_description">
18911              <p>The worst-case divergence between Bayer green channels.<wbr/></p>
18912            </td>
18913
18914            <td class="entry_units">
18915            </td>
18916
18917            <td class="entry_range">
18918              <p>&gt;= 0</p>
18919            </td>
18920
18921            <td class="entry_tags">
18922              <ul class="entry_tags">
18923                  <li><a href="#tag_RAW">RAW</a></li>
18924              </ul>
18925            </td>
18926
18927          </tr>
18928          <tr class="entries_header">
18929            <th class="th_details" colspan="5">Details</th>
18930          </tr>
18931          <tr class="entry_cont">
18932            <td class="entry_details" colspan="5">
18933              <p>This value is an estimate of the worst case split between the
18934Bayer green channels in the red and blue rows in the sensor color
18935filter array.<wbr/></p>
18936<p>The green split is calculated as follows:</p>
18937<ol>
18938<li>A 5x5 pixel (or larger) window W within the active sensor array is
18939chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
18940mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
18941chosen is implementation defined,<wbr/> and should be chosen to provide a
18942green split estimate that is both representative of the entire image
18943for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
18944<li>The arithmetic mean of the green channels from the red
18945rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
18946<li>The arithmetic mean of the green channels from the blue
18947rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
18948<li>The maximum ratio R of the two means is computed as follows:
18949<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
18950</ol>
18951<p>The ratio R is the green split divergence reported for this property,<wbr/>
18952which represents how much the green channels differ in the mosaic
18953pattern.<wbr/>  This value is typically used to determine the treatment of
18954the green mosaic channels when demosaicing.<wbr/></p>
18955<p>The green split value can be roughly interpreted as follows:</p>
18956<ul>
18957<li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
18958<li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
18959correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
18960<li>R &gt; 1.<wbr/>20 will require strong software correction to produce
18961a usuable image (&gt;20% divergence).<wbr/></li>
18962</ul>
18963            </td>
18964          </tr>
18965
18966          <tr class="entries_header">
18967            <th class="th_details" colspan="5">HAL Implementation Details</th>
18968          </tr>
18969          <tr class="entry_cont">
18970            <td class="entry_details" colspan="5">
18971              <p>The green split given may be a static value based on prior
18972characterization of the camera sensor using the green split
18973calculation method given here over a large,<wbr/> representative,<wbr/> sample
18974set of images.<wbr/>  Other methods of calculation that produce equivalent
18975results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
18976            </td>
18977          </tr>
18978
18979          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18980           <!-- end of entry -->
18981
18982
18983          <tr class="entry" id="dynamic_android.sensor.testPatternData">
18984            <td class="entry_name
18985             " rowspan="5">
18986              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
18987            </td>
18988            <td class="entry_type">
18989                <span class="entry_type_name">int32</span>
18990                <span class="entry_type_container">x</span>
18991
18992                <span class="entry_type_array">
18993                  4
18994                </span>
18995              <span class="entry_type_visibility"> [public]</span>
18996
18997
18998
18999
19000
19001
19002            </td> <!-- entry_type -->
19003
19004            <td class="entry_description">
19005              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
19006when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
19007            </td>
19008
19009            <td class="entry_units">
19010            </td>
19011
19012            <td class="entry_range">
19013            </td>
19014
19015            <td class="entry_tags">
19016            </td>
19017
19018          </tr>
19019          <tr class="entries_header">
19020            <th class="th_details" colspan="5">Details</th>
19021          </tr>
19022          <tr class="entry_cont">
19023            <td class="entry_details" colspan="5">
19024              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
19025The camera device then uses the most significant X bits
19026that correspond to how many bits are in its Bayer raw sensor
19027output.<wbr/></p>
19028<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
1902910 most significant bits from each color channel.<wbr/></p>
19030            </td>
19031          </tr>
19032
19033          <tr class="entries_header">
19034            <th class="th_details" colspan="5">HAL Implementation Details</th>
19035          </tr>
19036          <tr class="entry_cont">
19037            <td class="entry_details" colspan="5">
19038
19039            </td>
19040          </tr>
19041
19042          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19043           <!-- end of entry -->
19044
19045
19046          <tr class="entry" id="dynamic_android.sensor.testPatternMode">
19047            <td class="entry_name
19048             " rowspan="5">
19049              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
19050            </td>
19051            <td class="entry_type">
19052                <span class="entry_type_name entry_type_name_enum">int32</span>
19053
19054              <span class="entry_type_visibility"> [public]</span>
19055
19056
19057
19058
19059
19060                <ul class="entry_type_enum">
19061                  <li>
19062                    <span class="entry_type_enum_name">OFF</span>
19063                    <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
19064device returns captures from the image sensor.<wbr/></p>
19065<p>This is the default if the key is not set.<wbr/></p></span>
19066                  </li>
19067                  <li>
19068                    <span class="entry_type_enum_name">SOLID_COLOR</span>
19069                    <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
19070respective color channel provided in
19071<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
19072<p>For example:</p>
19073<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19074</code></pre>
19075<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
19076<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19077</code></pre>
19078<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
19079are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
19080                  </li>
19081                  <li>
19082                    <span class="entry_type_enum_name">COLOR_BARS</span>
19083                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
19084<p>The vertical bars (left-to-right) are as follows:</p>
19085<ul>
19086<li>100% white</li>
19087<li>yellow</li>
19088<li>cyan</li>
19089<li>green</li>
19090<li>magenta</li>
19091<li>red</li>
19092<li>blue</li>
19093<li>black</li>
19094</ul>
19095<p>In general the image would look like the following:</p>
19096<pre><code>W Y C G M R B K
19097W Y C G M R B K
19098W Y C G M R B K
19099W Y C G M R B K
19100W Y C G M R B K
19101.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19102.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19103.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19104
19105(B = Blue,<wbr/> K = Black)
19106</code></pre>
19107<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
19108When this is not possible,<wbr/> the bar size should be rounded
19109down to the nearest integer and the pattern can repeat
19110on the right side.<wbr/></p>
19111<p>Each bar's height must always take up the full sensor
19112pixel array height.<wbr/></p>
19113<p>Each pixel in this test pattern must be set to either
191140% intensity or 100% intensity.<wbr/></p></span>
19115                  </li>
19116                  <li>
19117                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
19118                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
19119each bar should start at its specified color at the top,<wbr/>
19120and fade to gray at the bottom.<wbr/></p>
19121<p>Furthermore each bar is further subdivided into a left and
19122right half.<wbr/> The left half should have a smooth gradient,<wbr/>
19123and the right half should have a quantized gradient.<wbr/></p>
19124<p>In particular,<wbr/> the right half's should consist of blocks of the
19125same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
19126<p>The least significant bits in the quantized gradient should
19127be copied from the most significant bits of the smooth gradient.<wbr/></p>
19128<p>The height of each bar should always be a multiple of 128.<wbr/>
19129When this is not the case,<wbr/> the pattern should repeat at the bottom
19130of the image.<wbr/></p></span>
19131                  </li>
19132                  <li>
19133                    <span class="entry_type_enum_name">PN9</span>
19134                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
19135generated from a PN9 512-bit sequence (typically implemented
19136in hardware with a linear feedback shift register).<wbr/></p>
19137<p>The generator should be reset at the beginning of each frame,<wbr/>
19138and thus each subsequent raw frame with this test pattern should
19139be exactly the same as the last.<wbr/></p></span>
19140                  </li>
19141                  <li>
19142                    <span class="entry_type_enum_name">CUSTOM1</span>
19143                    <span class="entry_type_enum_value">256</span>
19144                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
19145available only on this camera device are at least this numeric
19146value.<wbr/></p>
19147<p>All of the custom test patterns will be static
19148(that is the raw image must not vary from frame to frame).<wbr/></p></span>
19149                  </li>
19150                </ul>
19151
19152            </td> <!-- entry_type -->
19153
19154            <td class="entry_description">
19155              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
19156doing a real exposure from the camera.<wbr/></p>
19157            </td>
19158
19159            <td class="entry_units">
19160            </td>
19161
19162            <td class="entry_range">
19163              <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
19164            </td>
19165
19166            <td class="entry_tags">
19167            </td>
19168
19169          </tr>
19170          <tr class="entries_header">
19171            <th class="th_details" colspan="5">Details</th>
19172          </tr>
19173          <tr class="entry_cont">
19174            <td class="entry_details" colspan="5">
19175              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
19176by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
19177work as normal.<wbr/></p>
19178<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
19179occur (and that the test pattern remain unmodified,<wbr/> since the flash
19180would not actually affect it).<wbr/></p>
19181<p>Defaults to OFF.<wbr/></p>
19182            </td>
19183          </tr>
19184
19185          <tr class="entries_header">
19186            <th class="th_details" colspan="5">HAL Implementation Details</th>
19187          </tr>
19188          <tr class="entry_cont">
19189            <td class="entry_details" colspan="5">
19190              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
19191<p>The HAL may choose to substitute test patterns from the sensor
19192with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
19193indistinguishable to the ISP whether the data came from the
19194sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
19195            </td>
19196          </tr>
19197
19198          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19199           <!-- end of entry -->
19200
19201
19202          <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
19203            <td class="entry_name
19204             " rowspan="5">
19205              android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
19206            </td>
19207            <td class="entry_type">
19208                <span class="entry_type_name">int64</span>
19209
19210              <span class="entry_type_visibility"> [public]</span>
19211
19212
19213              <span class="entry_type_hwlevel">[limited] </span>
19214
19215
19216
19217
19218            </td> <!-- entry_type -->
19219
19220            <td class="entry_description">
19221              <p>Duration between the start of first row exposure
19222and the start of last row exposure.<wbr/></p>
19223            </td>
19224
19225            <td class="entry_units">
19226              Nanoseconds
19227            </td>
19228
19229            <td class="entry_range">
19230              <p>&gt;= 0 and &lt;
19231StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size).<wbr/></p>
19232            </td>
19233
19234            <td class="entry_tags">
19235              <ul class="entry_tags">
19236                  <li><a href="#tag_V1">V1</a></li>
19237              </ul>
19238            </td>
19239
19240          </tr>
19241          <tr class="entries_header">
19242            <th class="th_details" colspan="5">Details</th>
19243          </tr>
19244          <tr class="entry_cont">
19245            <td class="entry_details" colspan="5">
19246              <p>This is the exposure time skew between the first and last
19247row exposure start times.<wbr/> The first row and the last row are
19248the first and last rows inside of the
19249<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19250<p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
19251to the frame readout time.<wbr/></p>
19252            </td>
19253          </tr>
19254
19255          <tr class="entries_header">
19256            <th class="th_details" colspan="5">HAL Implementation Details</th>
19257          </tr>
19258          <tr class="entry_cont">
19259            <td class="entry_details" colspan="5">
19260              <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
19261exposure at the same time.<wbr/></p>
19262            </td>
19263          </tr>
19264
19265          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19266           <!-- end of entry -->
19267
19268
19269
19270      <!-- end of kind -->
19271      </tbody>
19272
19273  <!-- end of section -->
19274  <tr><td colspan="6" id="section_shading" class="section">shading</td></tr>
19275
19276
19277      <tr><td colspan="6" class="kind">controls</td></tr>
19278
19279      <thead class="entries_header">
19280        <tr>
19281          <th class="th_name">Property Name</th>
19282          <th class="th_type">Type</th>
19283          <th class="th_description">Description</th>
19284          <th class="th_units">Units</th>
19285          <th class="th_range">Range</th>
19286          <th class="th_tags">Tags</th>
19287        </tr>
19288      </thead>
19289
19290      <tbody>
19291
19292
19293
19294
19295
19296
19297
19298
19299
19300
19301          <tr class="entry" id="controls_android.shading.mode">
19302            <td class="entry_name
19303             " rowspan="3">
19304              android.<wbr/>shading.<wbr/>mode
19305            </td>
19306            <td class="entry_type">
19307                <span class="entry_type_name entry_type_name_enum">byte</span>
19308
19309              <span class="entry_type_visibility"> [public]</span>
19310
19311
19312              <span class="entry_type_hwlevel">[full] </span>
19313
19314
19315
19316                <ul class="entry_type_enum">
19317                  <li>
19318                    <span class="entry_type_enum_name">OFF</span>
19319                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
19320                  </li>
19321                  <li>
19322                    <span class="entry_type_enum_name">FAST</span>
19323                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
19324frame rate relative to sensor raw output</p></span>
19325                  </li>
19326                  <li>
19327                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
19328                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
19329cost of reduced frame rate.<wbr/></p></span>
19330                  </li>
19331                </ul>
19332
19333            </td> <!-- entry_type -->
19334
19335            <td class="entry_description">
19336              <p>Quality of lens shading correction applied
19337to the image data.<wbr/></p>
19338            </td>
19339
19340            <td class="entry_units">
19341            </td>
19342
19343            <td class="entry_range">
19344            </td>
19345
19346            <td class="entry_tags">
19347            </td>
19348
19349          </tr>
19350          <tr class="entries_header">
19351            <th class="th_details" colspan="5">Details</th>
19352          </tr>
19353          <tr class="entry_cont">
19354            <td class="entry_details" colspan="5">
19355              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
19356camera device,<wbr/> and an identity lens shading map data will be provided
19357if <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
19358shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
19359the 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
19360map shown below:</p>
19361<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/>
19362 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/>
19363 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/>
19364 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/>
19365 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/>
19366 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 ]
19367</code></pre>
19368<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
19369device.<wbr/> Applications can request lens shading map data by setting
19370<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
19371shading 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
19372data will be the one applied by the camera device for this capture request.<wbr/></p>
19373<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
19374the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
19375AWB 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>
19376OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
19377to be converged before using the returned shading map data.<wbr/></p>
19378            </td>
19379          </tr>
19380
19381
19382          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19383           <!-- end of entry -->
19384
19385
19386          <tr class="entry" id="controls_android.shading.strength">
19387            <td class="entry_name
19388             " rowspan="1">
19389              android.<wbr/>shading.<wbr/>strength
19390            </td>
19391            <td class="entry_type">
19392                <span class="entry_type_name">byte</span>
19393
19394              <span class="entry_type_visibility"> [system]</span>
19395
19396
19397
19398
19399
19400
19401            </td> <!-- entry_type -->
19402
19403            <td class="entry_description">
19404              <p>Control the amount of shading correction
19405applied to the images</p>
19406            </td>
19407
19408            <td class="entry_units">
19409              unitless: 1-10; 10 is full shading
19410          compensation
19411            </td>
19412
19413            <td class="entry_range">
19414            </td>
19415
19416            <td class="entry_tags">
19417              <ul class="entry_tags">
19418                  <li><a href="#tag_FUTURE">FUTURE</a></li>
19419              </ul>
19420            </td>
19421
19422          </tr>
19423
19424
19425          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19426           <!-- end of entry -->
19427
19428
19429
19430      <!-- end of kind -->
19431      </tbody>
19432      <tr><td colspan="6" class="kind">dynamic</td></tr>
19433
19434      <thead class="entries_header">
19435        <tr>
19436          <th class="th_name">Property Name</th>
19437          <th class="th_type">Type</th>
19438          <th class="th_description">Description</th>
19439          <th class="th_units">Units</th>
19440          <th class="th_range">Range</th>
19441          <th class="th_tags">Tags</th>
19442        </tr>
19443      </thead>
19444
19445      <tbody>
19446
19447
19448
19449
19450
19451
19452
19453
19454
19455
19456          <tr class="entry" id="dynamic_android.shading.mode">
19457            <td class="entry_name
19458             " rowspan="3">
19459              android.<wbr/>shading.<wbr/>mode
19460            </td>
19461            <td class="entry_type">
19462                <span class="entry_type_name entry_type_name_enum">byte</span>
19463
19464              <span class="entry_type_visibility"> [public]</span>
19465
19466
19467              <span class="entry_type_hwlevel">[full] </span>
19468
19469
19470
19471                <ul class="entry_type_enum">
19472                  <li>
19473                    <span class="entry_type_enum_name">OFF</span>
19474                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
19475                  </li>
19476                  <li>
19477                    <span class="entry_type_enum_name">FAST</span>
19478                    <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
19479frame rate relative to sensor raw output</p></span>
19480                  </li>
19481                  <li>
19482                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
19483                    <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
19484cost of reduced frame rate.<wbr/></p></span>
19485                  </li>
19486                </ul>
19487
19488            </td> <!-- entry_type -->
19489
19490            <td class="entry_description">
19491              <p>Quality of lens shading correction applied
19492to the image data.<wbr/></p>
19493            </td>
19494
19495            <td class="entry_units">
19496            </td>
19497
19498            <td class="entry_range">
19499            </td>
19500
19501            <td class="entry_tags">
19502            </td>
19503
19504          </tr>
19505          <tr class="entries_header">
19506            <th class="th_details" colspan="5">Details</th>
19507          </tr>
19508          <tr class="entry_cont">
19509            <td class="entry_details" colspan="5">
19510              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
19511camera device,<wbr/> and an identity lens shading map data will be provided
19512if <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
19513shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
19514the 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
19515map shown below:</p>
19516<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/>
19517 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/>
19518 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/>
19519 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/>
19520 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/>
19521 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 ]
19522</code></pre>
19523<p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
19524device.<wbr/> Applications can request lens shading map data by setting
19525<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
19526shading 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
19527data will be the one applied by the camera device for this capture request.<wbr/></p>
19528<p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
19529the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
19530AWB 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>
19531OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
19532to be converged before using the returned shading map data.<wbr/></p>
19533            </td>
19534          </tr>
19535
19536
19537          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19538           <!-- end of entry -->
19539
19540
19541
19542      <!-- end of kind -->
19543      </tbody>
19544
19545  <!-- end of section -->
19546  <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr>
19547
19548
19549      <tr><td colspan="6" class="kind">controls</td></tr>
19550
19551      <thead class="entries_header">
19552        <tr>
19553          <th class="th_name">Property Name</th>
19554          <th class="th_type">Type</th>
19555          <th class="th_description">Description</th>
19556          <th class="th_units">Units</th>
19557          <th class="th_range">Range</th>
19558          <th class="th_tags">Tags</th>
19559        </tr>
19560      </thead>
19561
19562      <tbody>
19563
19564
19565
19566
19567
19568
19569
19570
19571
19572
19573          <tr class="entry" id="controls_android.statistics.faceDetectMode">
19574            <td class="entry_name
19575             " rowspan="5">
19576              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
19577            </td>
19578            <td class="entry_type">
19579                <span class="entry_type_name entry_type_name_enum">byte</span>
19580
19581              <span class="entry_type_visibility"> [public]</span>
19582
19583
19584              <span class="entry_type_hwlevel">[legacy] </span>
19585
19586
19587
19588                <ul class="entry_type_enum">
19589                  <li>
19590                    <span class="entry_type_enum_name">OFF</span>
19591                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
19592results.<wbr/></p></span>
19593                  </li>
19594                  <li>
19595                    <span class="entry_type_enum_name">SIMPLE</span>
19596                    <span class="entry_type_enum_optional">[optional]</span>
19597                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
19598                  </li>
19599                  <li>
19600                    <span class="entry_type_enum_name">FULL</span>
19601                    <span class="entry_type_enum_optional">[optional]</span>
19602                    <span class="entry_type_enum_notes"><p>Return all face
19603metadata.<wbr/></p>
19604<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
19605                  </li>
19606                </ul>
19607
19608            </td> <!-- entry_type -->
19609
19610            <td class="entry_description">
19611              <p>Operating mode for the face detector
19612unit.<wbr/></p>
19613            </td>
19614
19615            <td class="entry_units">
19616            </td>
19617
19618            <td class="entry_range">
19619              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
19620            </td>
19621
19622            <td class="entry_tags">
19623              <ul class="entry_tags">
19624                  <li><a href="#tag_BC">BC</a></li>
19625              </ul>
19626            </td>
19627
19628          </tr>
19629          <tr class="entries_header">
19630            <th class="th_details" colspan="5">Details</th>
19631          </tr>
19632          <tr class="entry_cont">
19633            <td class="entry_details" colspan="5">
19634              <p>Whether face detection is enabled,<wbr/> and whether it
19635should output just the basic fields or the full set of
19636fields.<wbr/></p>
19637            </td>
19638          </tr>
19639
19640          <tr class="entries_header">
19641            <th class="th_details" colspan="5">HAL Implementation Details</th>
19642          </tr>
19643          <tr class="entry_cont">
19644            <td class="entry_details" colspan="5">
19645              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
19646<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
19647FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
19648<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
19649            </td>
19650          </tr>
19651
19652          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19653           <!-- end of entry -->
19654
19655
19656          <tr class="entry" id="controls_android.statistics.histogramMode">
19657            <td class="entry_name
19658             " rowspan="1">
19659              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
19660            </td>
19661            <td class="entry_type">
19662                <span class="entry_type_name entry_type_name_enum">byte</span>
19663
19664              <span class="entry_type_visibility"> [system as boolean]</span>
19665
19666
19667
19668
19669
19670                <ul class="entry_type_enum">
19671                  <li>
19672                    <span class="entry_type_enum_name">OFF</span>
19673                  </li>
19674                  <li>
19675                    <span class="entry_type_enum_name">ON</span>
19676                  </li>
19677                </ul>
19678
19679            </td> <!-- entry_type -->
19680
19681            <td class="entry_description">
19682              <p>Operating mode for histogram
19683generation</p>
19684            </td>
19685
19686            <td class="entry_units">
19687            </td>
19688
19689            <td class="entry_range">
19690            </td>
19691
19692            <td class="entry_tags">
19693              <ul class="entry_tags">
19694                  <li><a href="#tag_FUTURE">FUTURE</a></li>
19695              </ul>
19696            </td>
19697
19698          </tr>
19699
19700
19701          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19702           <!-- end of entry -->
19703
19704
19705          <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
19706            <td class="entry_name
19707             " rowspan="1">
19708              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
19709            </td>
19710            <td class="entry_type">
19711                <span class="entry_type_name entry_type_name_enum">byte</span>
19712
19713              <span class="entry_type_visibility"> [system as boolean]</span>
19714
19715
19716
19717
19718
19719                <ul class="entry_type_enum">
19720                  <li>
19721                    <span class="entry_type_enum_name">OFF</span>
19722                  </li>
19723                  <li>
19724                    <span class="entry_type_enum_name">ON</span>
19725                  </li>
19726                </ul>
19727
19728            </td> <!-- entry_type -->
19729
19730            <td class="entry_description">
19731              <p>Operating mode for sharpness map
19732generation</p>
19733            </td>
19734
19735            <td class="entry_units">
19736            </td>
19737
19738            <td class="entry_range">
19739            </td>
19740
19741            <td class="entry_tags">
19742              <ul class="entry_tags">
19743                  <li><a href="#tag_FUTURE">FUTURE</a></li>
19744              </ul>
19745            </td>
19746
19747          </tr>
19748
19749
19750          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19751           <!-- end of entry -->
19752
19753
19754          <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
19755            <td class="entry_name
19756             " rowspan="3">
19757              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
19758            </td>
19759            <td class="entry_type">
19760                <span class="entry_type_name entry_type_name_enum">byte</span>
19761
19762              <span class="entry_type_visibility"> [public as boolean]</span>
19763
19764
19765
19766
19767
19768                <ul class="entry_type_enum">
19769                  <li>
19770                    <span class="entry_type_enum_name">OFF</span>
19771                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
19772                  </li>
19773                  <li>
19774                    <span class="entry_type_enum_name">ON</span>
19775                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
19776                  </li>
19777                </ul>
19778
19779            </td> <!-- entry_type -->
19780
19781            <td class="entry_description">
19782              <p>Operating mode for hot pixel map generation.<wbr/></p>
19783            </td>
19784
19785            <td class="entry_units">
19786            </td>
19787
19788            <td class="entry_range">
19789              <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>
19790            </td>
19791
19792            <td class="entry_tags">
19793              <ul class="entry_tags">
19794                  <li><a href="#tag_V1">V1</a></li>
19795                  <li><a href="#tag_RAW">RAW</a></li>
19796              </ul>
19797            </td>
19798
19799          </tr>
19800          <tr class="entries_header">
19801            <th class="th_details" colspan="5">Details</th>
19802          </tr>
19803          <tr class="entry_cont">
19804            <td class="entry_details" colspan="5">
19805              <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/>
19806If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
19807            </td>
19808          </tr>
19809
19810
19811          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19812           <!-- end of entry -->
19813
19814
19815          <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
19816            <td class="entry_name
19817             " rowspan="3">
19818              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
19819            </td>
19820            <td class="entry_type">
19821                <span class="entry_type_name entry_type_name_enum">byte</span>
19822
19823              <span class="entry_type_visibility"> [public]</span>
19824
19825
19826              <span class="entry_type_hwlevel">[full] </span>
19827
19828
19829
19830                <ul class="entry_type_enum">
19831                  <li>
19832                    <span class="entry_type_enum_name">OFF</span>
19833                    <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
19834                  </li>
19835                  <li>
19836                    <span class="entry_type_enum_name">ON</span>
19837                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
19838                  </li>
19839                </ul>
19840
19841            </td> <!-- entry_type -->
19842
19843            <td class="entry_description">
19844              <p>Whether the camera device will output the lens
19845shading map in output result metadata.<wbr/></p>
19846            </td>
19847
19848            <td class="entry_units">
19849            </td>
19850
19851            <td class="entry_range">
19852            </td>
19853
19854            <td class="entry_tags">
19855              <ul class="entry_tags">
19856                  <li><a href="#tag_RAW">RAW</a></li>
19857              </ul>
19858            </td>
19859
19860          </tr>
19861          <tr class="entries_header">
19862            <th class="th_details" colspan="5">Details</th>
19863          </tr>
19864          <tr class="entry_cont">
19865            <td class="entry_details" colspan="5">
19866              <p>When set to ON,<wbr/>
19867<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
19868the output result metadata.<wbr/></p>
19869<p>ON is always supported on devices with the RAW capability.<wbr/></p>
19870            </td>
19871          </tr>
19872
19873
19874          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19875           <!-- end of entry -->
19876
19877
19878
19879      <!-- end of kind -->
19880      </tbody>
19881      <tr><td colspan="6" class="kind">static</td></tr>
19882
19883      <thead class="entries_header">
19884        <tr>
19885          <th class="th_name">Property Name</th>
19886          <th class="th_type">Type</th>
19887          <th class="th_description">Description</th>
19888          <th class="th_units">Units</th>
19889          <th class="th_range">Range</th>
19890          <th class="th_tags">Tags</th>
19891        </tr>
19892      </thead>
19893
19894      <tbody>
19895
19896
19897
19898
19899
19900
19901
19902
19903
19904
19905
19906
19907          <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
19908            <td class="entry_name
19909             " rowspan="3">
19910              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
19911            </td>
19912            <td class="entry_type">
19913                <span class="entry_type_name">byte</span>
19914                <span class="entry_type_container">x</span>
19915
19916                <span class="entry_type_array">
19917                  n
19918                </span>
19919              <span class="entry_type_visibility"> [public as enumList]</span>
19920
19921
19922              <span class="entry_type_hwlevel">[legacy] </span>
19923
19924
19925                <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
19926
19927
19928            </td> <!-- entry_type -->
19929
19930            <td class="entry_description">
19931              <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
19932supported by this camera device.<wbr/></p>
19933            </td>
19934
19935            <td class="entry_units">
19936            </td>
19937
19938            <td class="entry_range">
19939              <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
19940            </td>
19941
19942            <td class="entry_tags">
19943            </td>
19944
19945          </tr>
19946          <tr class="entries_header">
19947            <th class="th_details" colspan="5">Details</th>
19948          </tr>
19949          <tr class="entry_cont">
19950            <td class="entry_details" colspan="5">
19951              <p>OFF is always supported.<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.statistics.info.histogramBucketCount">
19961            <td class="entry_name
19962             " rowspan="1">
19963              android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
19964            </td>
19965            <td class="entry_type">
19966                <span class="entry_type_name">int32</span>
19967
19968              <span class="entry_type_visibility"> [system]</span>
19969
19970
19971
19972
19973
19974
19975            </td> <!-- entry_type -->
19976
19977            <td class="entry_description">
19978              <p>Number of histogram buckets
19979supported</p>
19980            </td>
19981
19982            <td class="entry_units">
19983            </td>
19984
19985            <td class="entry_range">
19986              <p>&gt;= 64</p>
19987            </td>
19988
19989            <td class="entry_tags">
19990              <ul class="entry_tags">
19991                  <li><a href="#tag_FUTURE">FUTURE</a></li>
19992              </ul>
19993            </td>
19994
19995          </tr>
19996
19997
19998          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19999           <!-- end of entry -->
20000
20001
20002          <tr class="entry" id="static_android.statistics.info.maxFaceCount">
20003            <td class="entry_name
20004             " rowspan="1">
20005              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
20006            </td>
20007            <td class="entry_type">
20008                <span class="entry_type_name">int32</span>
20009
20010              <span class="entry_type_visibility"> [public]</span>
20011
20012
20013              <span class="entry_type_hwlevel">[legacy] </span>
20014
20015
20016
20017
20018            </td> <!-- entry_type -->
20019
20020            <td class="entry_description">
20021              <p>The maximum number of simultaneously detectable
20022faces.<wbr/></p>
20023            </td>
20024
20025            <td class="entry_units">
20026            </td>
20027
20028            <td class="entry_range">
20029              <p>0 for cameras without available face detection; otherwise:
20030<code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
20031<code>&gt;0</code> for LEGACY devices.<wbr/></p>
20032            </td>
20033
20034            <td class="entry_tags">
20035              <ul class="entry_tags">
20036                  <li><a href="#tag_BC">BC</a></li>
20037              </ul>
20038            </td>
20039
20040          </tr>
20041
20042
20043          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20044           <!-- end of entry -->
20045
20046
20047          <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
20048            <td class="entry_name
20049             " rowspan="1">
20050              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
20051            </td>
20052            <td class="entry_type">
20053                <span class="entry_type_name">int32</span>
20054
20055              <span class="entry_type_visibility"> [system]</span>
20056
20057
20058
20059
20060
20061
20062            </td> <!-- entry_type -->
20063
20064            <td class="entry_description">
20065              <p>Maximum value possible for a histogram
20066bucket</p>
20067            </td>
20068
20069            <td class="entry_units">
20070            </td>
20071
20072            <td class="entry_range">
20073            </td>
20074
20075            <td class="entry_tags">
20076              <ul class="entry_tags">
20077                  <li><a href="#tag_FUTURE">FUTURE</a></li>
20078              </ul>
20079            </td>
20080
20081          </tr>
20082
20083
20084          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20085           <!-- end of entry -->
20086
20087
20088          <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
20089            <td class="entry_name
20090             " rowspan="1">
20091              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
20092            </td>
20093            <td class="entry_type">
20094                <span class="entry_type_name">int32</span>
20095
20096              <span class="entry_type_visibility"> [system]</span>
20097
20098
20099
20100
20101
20102
20103            </td> <!-- entry_type -->
20104
20105            <td class="entry_description">
20106              <p>Maximum value possible for a sharpness map
20107region.<wbr/></p>
20108            </td>
20109
20110            <td class="entry_units">
20111            </td>
20112
20113            <td class="entry_range">
20114            </td>
20115
20116            <td class="entry_tags">
20117              <ul class="entry_tags">
20118                  <li><a href="#tag_FUTURE">FUTURE</a></li>
20119              </ul>
20120            </td>
20121
20122          </tr>
20123
20124
20125          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20126           <!-- end of entry -->
20127
20128
20129          <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
20130            <td class="entry_name
20131             " rowspan="1">
20132              android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
20133            </td>
20134            <td class="entry_type">
20135                <span class="entry_type_name">int32</span>
20136                <span class="entry_type_container">x</span>
20137
20138                <span class="entry_type_array">
20139                  2
20140                </span>
20141              <span class="entry_type_visibility"> [system as size]</span>
20142
20143
20144
20145
20146                <div class="entry_type_notes">width x height</div>
20147
20148
20149            </td> <!-- entry_type -->
20150
20151            <td class="entry_description">
20152              <p>Dimensions of the sharpness
20153map</p>
20154            </td>
20155
20156            <td class="entry_units">
20157            </td>
20158
20159            <td class="entry_range">
20160              <p>Must be at least 32 x 32</p>
20161            </td>
20162
20163            <td class="entry_tags">
20164              <ul class="entry_tags">
20165                  <li><a href="#tag_FUTURE">FUTURE</a></li>
20166              </ul>
20167            </td>
20168
20169          </tr>
20170
20171
20172          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20173           <!-- end of entry -->
20174
20175
20176          <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
20177            <td class="entry_name
20178             " rowspan="3">
20179              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
20180            </td>
20181            <td class="entry_type">
20182                <span class="entry_type_name">byte</span>
20183                <span class="entry_type_container">x</span>
20184
20185                <span class="entry_type_array">
20186                  n
20187                </span>
20188              <span class="entry_type_visibility"> [public as boolean]</span>
20189
20190
20191
20192
20193                <div class="entry_type_notes">list of enums</div>
20194
20195
20196            </td> <!-- entry_type -->
20197
20198            <td class="entry_description">
20199              <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
20200supported by this camera device.<wbr/></p>
20201            </td>
20202
20203            <td class="entry_units">
20204            </td>
20205
20206            <td class="entry_range">
20207              <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
20208            </td>
20209
20210            <td class="entry_tags">
20211              <ul class="entry_tags">
20212                  <li><a href="#tag_V1">V1</a></li>
20213                  <li><a href="#tag_RAW">RAW</a></li>
20214              </ul>
20215            </td>
20216
20217          </tr>
20218          <tr class="entries_header">
20219            <th class="th_details" colspan="5">Details</th>
20220          </tr>
20221          <tr class="entry_cont">
20222            <td class="entry_details" colspan="5">
20223              <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
20224<code>false</code>.<wbr/></p>
20225<p>ON is always supported on devices with the RAW capability.<wbr/></p>
20226            </td>
20227          </tr>
20228
20229
20230          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20231           <!-- end of entry -->
20232
20233
20234
20235
20236
20237
20238      <!-- end of kind -->
20239      </tbody>
20240      <tr><td colspan="6" class="kind">dynamic</td></tr>
20241
20242      <thead class="entries_header">
20243        <tr>
20244          <th class="th_name">Property Name</th>
20245          <th class="th_type">Type</th>
20246          <th class="th_description">Description</th>
20247          <th class="th_units">Units</th>
20248          <th class="th_range">Range</th>
20249          <th class="th_tags">Tags</th>
20250        </tr>
20251      </thead>
20252
20253      <tbody>
20254
20255
20256
20257
20258
20259
20260
20261
20262
20263
20264          <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
20265            <td class="entry_name
20266             " rowspan="5">
20267              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
20268            </td>
20269            <td class="entry_type">
20270                <span class="entry_type_name entry_type_name_enum">byte</span>
20271
20272              <span class="entry_type_visibility"> [public]</span>
20273
20274
20275              <span class="entry_type_hwlevel">[legacy] </span>
20276
20277
20278
20279                <ul class="entry_type_enum">
20280                  <li>
20281                    <span class="entry_type_enum_name">OFF</span>
20282                    <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
20283results.<wbr/></p></span>
20284                  </li>
20285                  <li>
20286                    <span class="entry_type_enum_name">SIMPLE</span>
20287                    <span class="entry_type_enum_optional">[optional]</span>
20288                    <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
20289                  </li>
20290                  <li>
20291                    <span class="entry_type_enum_name">FULL</span>
20292                    <span class="entry_type_enum_optional">[optional]</span>
20293                    <span class="entry_type_enum_notes"><p>Return all face
20294metadata.<wbr/></p>
20295<p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
20296                  </li>
20297                </ul>
20298
20299            </td> <!-- entry_type -->
20300
20301            <td class="entry_description">
20302              <p>Operating mode for the face detector
20303unit.<wbr/></p>
20304            </td>
20305
20306            <td class="entry_units">
20307            </td>
20308
20309            <td class="entry_range">
20310              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
20311            </td>
20312
20313            <td class="entry_tags">
20314              <ul class="entry_tags">
20315                  <li><a href="#tag_BC">BC</a></li>
20316              </ul>
20317            </td>
20318
20319          </tr>
20320          <tr class="entries_header">
20321            <th class="th_details" colspan="5">Details</th>
20322          </tr>
20323          <tr class="entry_cont">
20324            <td class="entry_details" colspan="5">
20325              <p>Whether face detection is enabled,<wbr/> and whether it
20326should output just the basic fields or the full set of
20327fields.<wbr/></p>
20328            </td>
20329          </tr>
20330
20331          <tr class="entries_header">
20332            <th class="th_details" colspan="5">HAL Implementation Details</th>
20333          </tr>
20334          <tr class="entry_cont">
20335            <td class="entry_details" colspan="5">
20336              <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
20337<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
20338FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
20339<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
20340            </td>
20341          </tr>
20342
20343          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20344           <!-- end of entry -->
20345
20346
20347          <tr class="entry" id="dynamic_android.statistics.faceIds">
20348            <td class="entry_name
20349             " rowspan="3">
20350              android.<wbr/>statistics.<wbr/>face<wbr/>Ids
20351            </td>
20352            <td class="entry_type">
20353                <span class="entry_type_name">int32</span>
20354                <span class="entry_type_container">x</span>
20355
20356                <span class="entry_type_array">
20357                  n
20358                </span>
20359              <span class="entry_type_visibility"> [hidden]</span>
20360
20361
20362              <span class="entry_type_hwlevel">[legacy] </span>
20363
20364
20365
20366
20367            </td> <!-- entry_type -->
20368
20369            <td class="entry_description">
20370              <p>List of unique IDs for detected faces.<wbr/></p>
20371            </td>
20372
20373            <td class="entry_units">
20374            </td>
20375
20376            <td class="entry_range">
20377            </td>
20378
20379            <td class="entry_tags">
20380              <ul class="entry_tags">
20381                  <li><a href="#tag_BC">BC</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>Each detected face is given a unique ID that is valid for as long as the face is visible
20392to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
20393assigned a new ID.<wbr/></p>
20394<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
20395            </td>
20396          </tr>
20397
20398
20399          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20400           <!-- end of entry -->
20401
20402
20403          <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
20404            <td class="entry_name
20405             " rowspan="3">
20406              android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
20407            </td>
20408            <td class="entry_type">
20409                <span class="entry_type_name">int32</span>
20410                <span class="entry_type_container">x</span>
20411
20412                <span class="entry_type_array">
20413                  n x 6
20414                </span>
20415              <span class="entry_type_visibility"> [hidden]</span>
20416
20417
20418              <span class="entry_type_hwlevel">[legacy] </span>
20419
20420
20421                <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
20422
20423
20424            </td> <!-- entry_type -->
20425
20426            <td class="entry_description">
20427              <p>List of landmarks for detected
20428faces.<wbr/></p>
20429            </td>
20430
20431            <td class="entry_units">
20432            </td>
20433
20434            <td class="entry_range">
20435            </td>
20436
20437            <td class="entry_tags">
20438              <ul class="entry_tags">
20439                  <li><a href="#tag_BC">BC</a></li>
20440              </ul>
20441            </td>
20442
20443          </tr>
20444          <tr class="entries_header">
20445            <th class="th_details" colspan="5">Details</th>
20446          </tr>
20447          <tr class="entry_cont">
20448            <td class="entry_details" colspan="5">
20449              <p>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
20450<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
20451<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
20452            </td>
20453          </tr>
20454
20455
20456          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20457           <!-- end of entry -->
20458
20459
20460          <tr class="entry" id="dynamic_android.statistics.faceRectangles">
20461            <td class="entry_name
20462             " rowspan="3">
20463              android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
20464            </td>
20465            <td class="entry_type">
20466                <span class="entry_type_name">int32</span>
20467                <span class="entry_type_container">x</span>
20468
20469                <span class="entry_type_array">
20470                  n x 4
20471                </span>
20472              <span class="entry_type_visibility"> [hidden as rectangle]</span>
20473
20474
20475              <span class="entry_type_hwlevel">[legacy] </span>
20476
20477
20478                <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
20479
20480
20481            </td> <!-- entry_type -->
20482
20483            <td class="entry_description">
20484              <p>List of the bounding rectangles for detected
20485faces.<wbr/></p>
20486            </td>
20487
20488            <td class="entry_units">
20489            </td>
20490
20491            <td class="entry_range">
20492            </td>
20493
20494            <td class="entry_tags">
20495              <ul class="entry_tags">
20496                  <li><a href="#tag_BC">BC</a></li>
20497              </ul>
20498            </td>
20499
20500          </tr>
20501          <tr class="entries_header">
20502            <th class="th_details" colspan="5">Details</th>
20503          </tr>
20504          <tr class="entry_cont">
20505            <td class="entry_details" colspan="5">
20506              <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
20507<code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
20508<p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
20509            </td>
20510          </tr>
20511
20512
20513          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20514           <!-- end of entry -->
20515
20516
20517          <tr class="entry" id="dynamic_android.statistics.faceScores">
20518            <td class="entry_name
20519             " rowspan="5">
20520              android.<wbr/>statistics.<wbr/>face<wbr/>Scores
20521            </td>
20522            <td class="entry_type">
20523                <span class="entry_type_name">byte</span>
20524                <span class="entry_type_container">x</span>
20525
20526                <span class="entry_type_array">
20527                  n
20528                </span>
20529              <span class="entry_type_visibility"> [hidden]</span>
20530
20531
20532              <span class="entry_type_hwlevel">[legacy] </span>
20533
20534
20535
20536
20537            </td> <!-- entry_type -->
20538
20539            <td class="entry_description">
20540              <p>List of the face confidence scores for
20541detected faces</p>
20542            </td>
20543
20544            <td class="entry_units">
20545            </td>
20546
20547            <td class="entry_range">
20548              <p>1-100</p>
20549            </td>
20550
20551            <td class="entry_tags">
20552              <ul class="entry_tags">
20553                  <li><a href="#tag_BC">BC</a></li>
20554              </ul>
20555            </td>
20556
20557          </tr>
20558          <tr class="entries_header">
20559            <th class="th_details" colspan="5">Details</th>
20560          </tr>
20561          <tr class="entry_cont">
20562            <td class="entry_details" colspan="5">
20563              <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
20564            </td>
20565          </tr>
20566
20567          <tr class="entries_header">
20568            <th class="th_details" colspan="5">HAL Implementation Details</th>
20569          </tr>
20570          <tr class="entry_cont">
20571            <td class="entry_details" colspan="5">
20572              <p>The value should be meaningful (for example,<wbr/> setting 100 at
20573all times is illegal).<wbr/></p>
20574            </td>
20575          </tr>
20576
20577          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20578           <!-- end of entry -->
20579
20580
20581          <tr class="entry" id="dynamic_android.statistics.faces">
20582            <td class="entry_name
20583             " rowspan="3">
20584              android.<wbr/>statistics.<wbr/>faces
20585            </td>
20586            <td class="entry_type">
20587                <span class="entry_type_name">int32</span>
20588                <span class="entry_type_container">x</span>
20589
20590                <span class="entry_type_array">
20591                  n
20592                </span>
20593              <span class="entry_type_visibility"> [public as face]</span>
20594
20595              <span class="entry_type_synthetic">[synthetic] </span>
20596
20597              <span class="entry_type_hwlevel">[legacy] </span>
20598
20599
20600
20601
20602            </td> <!-- entry_type -->
20603
20604            <td class="entry_description">
20605              <p>List of the faces detected through camera face detection
20606in this capture.<wbr/></p>
20607            </td>
20608
20609            <td class="entry_units">
20610            </td>
20611
20612            <td class="entry_range">
20613            </td>
20614
20615            <td class="entry_tags">
20616            </td>
20617
20618          </tr>
20619          <tr class="entries_header">
20620            <th class="th_details" colspan="5">Details</th>
20621          </tr>
20622          <tr class="entry_cont">
20623            <td class="entry_details" colspan="5">
20624              <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>
20625            </td>
20626          </tr>
20627
20628
20629          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20630           <!-- end of entry -->
20631
20632
20633          <tr class="entry" id="dynamic_android.statistics.histogram">
20634            <td class="entry_name
20635             " rowspan="3">
20636              android.<wbr/>statistics.<wbr/>histogram
20637            </td>
20638            <td class="entry_type">
20639                <span class="entry_type_name">int32</span>
20640                <span class="entry_type_container">x</span>
20641
20642                <span class="entry_type_array">
20643                  n x 3
20644                </span>
20645              <span class="entry_type_visibility"> [system]</span>
20646
20647
20648
20649
20650                <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>
20651
20652
20653            </td> <!-- entry_type -->
20654
20655            <td class="entry_description">
20656              <p>A 3-channel histogram based on the raw
20657sensor data</p>
20658            </td>
20659
20660            <td class="entry_units">
20661            </td>
20662
20663            <td class="entry_range">
20664            </td>
20665
20666            <td class="entry_tags">
20667              <ul class="entry_tags">
20668                  <li><a href="#tag_FUTURE">FUTURE</a></li>
20669              </ul>
20670            </td>
20671
20672          </tr>
20673          <tr class="entries_header">
20674            <th class="th_details" colspan="5">Details</th>
20675          </tr>
20676          <tr class="entry_cont">
20677            <td class="entry_details" colspan="5">
20678              <p>The k'th bucket (0-based) covers the input range
20679(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/>
20680(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
20681supported,<wbr/> all channels should have the same data</p>
20682            </td>
20683          </tr>
20684
20685
20686          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20687           <!-- end of entry -->
20688
20689
20690          <tr class="entry" id="dynamic_android.statistics.histogramMode">
20691            <td class="entry_name
20692             " rowspan="1">
20693              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
20694            </td>
20695            <td class="entry_type">
20696                <span class="entry_type_name entry_type_name_enum">byte</span>
20697
20698              <span class="entry_type_visibility"> [system as boolean]</span>
20699
20700
20701
20702
20703
20704                <ul class="entry_type_enum">
20705                  <li>
20706                    <span class="entry_type_enum_name">OFF</span>
20707                  </li>
20708                  <li>
20709                    <span class="entry_type_enum_name">ON</span>
20710                  </li>
20711                </ul>
20712
20713            </td> <!-- entry_type -->
20714
20715            <td class="entry_description">
20716              <p>Operating mode for histogram
20717generation</p>
20718            </td>
20719
20720            <td class="entry_units">
20721            </td>
20722
20723            <td class="entry_range">
20724            </td>
20725
20726            <td class="entry_tags">
20727              <ul class="entry_tags">
20728                  <li><a href="#tag_FUTURE">FUTURE</a></li>
20729              </ul>
20730            </td>
20731
20732          </tr>
20733
20734
20735          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20736           <!-- end of entry -->
20737
20738
20739          <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
20740            <td class="entry_name
20741             " rowspan="3">
20742              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
20743            </td>
20744            <td class="entry_type">
20745                <span class="entry_type_name">int32</span>
20746                <span class="entry_type_container">x</span>
20747
20748                <span class="entry_type_array">
20749                  n x m x 3
20750                </span>
20751              <span class="entry_type_visibility"> [system]</span>
20752
20753
20754
20755
20756                <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>
20757
20758
20759            </td> <!-- entry_type -->
20760
20761            <td class="entry_description">
20762              <p>A 3-channel sharpness map,<wbr/> based on the raw
20763sensor data</p>
20764            </td>
20765
20766            <td class="entry_units">
20767            </td>
20768
20769            <td class="entry_range">
20770            </td>
20771
20772            <td class="entry_tags">
20773              <ul class="entry_tags">
20774                  <li><a href="#tag_FUTURE">FUTURE</a></li>
20775              </ul>
20776            </td>
20777
20778          </tr>
20779          <tr class="entries_header">
20780            <th class="th_details" colspan="5">Details</th>
20781          </tr>
20782          <tr class="entry_cont">
20783            <td class="entry_details" colspan="5">
20784              <p>If only a monochrome sharpness map is supported,<wbr/>
20785all channels should have the same data</p>
20786            </td>
20787          </tr>
20788
20789
20790          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20791           <!-- end of entry -->
20792
20793
20794          <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
20795            <td class="entry_name
20796             " rowspan="1">
20797              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
20798            </td>
20799            <td class="entry_type">
20800                <span class="entry_type_name entry_type_name_enum">byte</span>
20801
20802              <span class="entry_type_visibility"> [system as boolean]</span>
20803
20804
20805
20806
20807
20808                <ul class="entry_type_enum">
20809                  <li>
20810                    <span class="entry_type_enum_name">OFF</span>
20811                  </li>
20812                  <li>
20813                    <span class="entry_type_enum_name">ON</span>
20814                  </li>
20815                </ul>
20816
20817            </td> <!-- entry_type -->
20818
20819            <td class="entry_description">
20820              <p>Operating mode for sharpness map
20821generation</p>
20822            </td>
20823
20824            <td class="entry_units">
20825            </td>
20826
20827            <td class="entry_range">
20828            </td>
20829
20830            <td class="entry_tags">
20831              <ul class="entry_tags">
20832                  <li><a href="#tag_FUTURE">FUTURE</a></li>
20833              </ul>
20834            </td>
20835
20836          </tr>
20837
20838
20839          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20840           <!-- end of entry -->
20841
20842
20843          <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
20844            <td class="entry_name
20845             " rowspan="3">
20846              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
20847            </td>
20848            <td class="entry_type">
20849                <span class="entry_type_name">byte</span>
20850
20851              <span class="entry_type_visibility"> [public as lensShadingMap]</span>
20852
20853
20854              <span class="entry_type_hwlevel">[full] </span>
20855
20856
20857
20858
20859            </td> <!-- entry_type -->
20860
20861            <td class="entry_description">
20862              <p>The shading map is a low-resolution floating-point map
20863that lists the coefficients used to correct for vignetting,<wbr/> for each
20864Bayer color channel.<wbr/></p>
20865            </td>
20866
20867            <td class="entry_units">
20868            </td>
20869
20870            <td class="entry_range">
20871              <p>Each gain factor is &gt;= 1</p>
20872            </td>
20873
20874            <td class="entry_tags">
20875            </td>
20876
20877          </tr>
20878          <tr class="entries_header">
20879            <th class="th_details" colspan="5">Details</th>
20880          </tr>
20881          <tr class="entry_cont">
20882            <td class="entry_details" colspan="5">
20883              <p>The least shaded section of the image should have a gain factor
20884of 1; all other sections should have gains above 1.<wbr/></p>
20885<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
20886must take into account the colorCorrection settings.<wbr/></p>
20887<p>The shading map is for the entire active pixel array,<wbr/> and is not
20888affected by the crop region specified in the request.<wbr/> Each shading map
20889entry is the value of the shading compensation map over a specific
20890pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
20891map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
20892(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
20893pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
20894The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
20895<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
20896channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
20897The shading map is stored in a fully interleaved format.<wbr/></p>
20898<p>The shading map should have on the order of 30-40 rows and columns,<wbr/>
20899and must be smaller than 64x64.<wbr/></p>
20900<p>As an example,<wbr/> given a very small map defined as:</p>
20901<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
20902values =
20903[ 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/>
20904    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/>
20905  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/>
20906    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/>
20907  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/>
20908    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 ]
20909</code></pre>
20910<p>The low-resolution scaling map images for each channel are
20911(displayed using nearest-neighbor interpolation):</p>
20912<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
20913<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
20914<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
20915<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
20916<p>As a visualization only,<wbr/> inverting the full-color map to recover an
20917image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
20918<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
20919            </td>
20920          </tr>
20921
20922
20923          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20924           <!-- end of entry -->
20925
20926
20927          <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
20928            <td class="entry_name
20929             " rowspan="5">
20930              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
20931            </td>
20932            <td class="entry_type">
20933                <span class="entry_type_name">float</span>
20934                <span class="entry_type_container">x</span>
20935
20936                <span class="entry_type_array">
20937                  4 x n x m
20938                </span>
20939              <span class="entry_type_visibility"> [hidden]</span>
20940
20941
20942              <span class="entry_type_hwlevel">[full] </span>
20943
20944
20945                <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
20946
20947
20948            </td> <!-- entry_type -->
20949
20950            <td class="entry_description">
20951              <p>The shading map is a low-resolution floating-point map
20952that lists the coefficients used to correct for vignetting,<wbr/> for each
20953Bayer color channel.<wbr/></p>
20954            </td>
20955
20956            <td class="entry_units">
20957            </td>
20958
20959            <td class="entry_range">
20960              <p>Each gain factor is &gt;= 1</p>
20961            </td>
20962
20963            <td class="entry_tags">
20964            </td>
20965
20966          </tr>
20967          <tr class="entries_header">
20968            <th class="th_details" colspan="5">Details</th>
20969          </tr>
20970          <tr class="entry_cont">
20971            <td class="entry_details" colspan="5">
20972              <p>The least shaded section of the image should have a gain factor
20973of 1; all other sections should have gains above 1.<wbr/></p>
20974<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
20975must take into account the colorCorrection settings.<wbr/></p>
20976<p>The shading map is for the entire active pixel array,<wbr/> and is not
20977affected by the crop region specified in the request.<wbr/> Each shading map
20978entry is the value of the shading compensation map over a specific
20979pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
20980map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
20981(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
20982pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
20983The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
20984<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
20985channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
20986The shading map is stored in a fully interleaved format,<wbr/> and its size
20987is 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>
20988<p>The shading map should have on the order of 30-40 rows and columns,<wbr/>
20989and must be smaller than 64x64.<wbr/></p>
20990<p>As an example,<wbr/> given a very small map defined as:</p>
20991<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
20992<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
20993[ 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/>
20994    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/>
20995  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/>
20996    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/>
20997  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/>
20998    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 ]
20999</code></pre>
21000<p>The low-resolution scaling map images for each channel are
21001(displayed using nearest-neighbor interpolation):</p>
21002<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
21003<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
21004<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
21005<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
21006<p>As a visualization only,<wbr/> inverting the full-color map to recover an
21007image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
21008<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
21009            </td>
21010          </tr>
21011
21012          <tr class="entries_header">
21013            <th class="th_details" colspan="5">HAL Implementation Details</th>
21014          </tr>
21015          <tr class="entry_cont">
21016            <td class="entry_details" colspan="5">
21017              <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
21018When AE and AWB are in AUTO modes
21019(<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
21020may have all the information it need to generate most accurate lens shading map.<wbr/> When
21021AE or AWB are in manual mode
21022(<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
21023may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
21024generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
21025the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
21026            </td>
21027          </tr>
21028
21029          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21030           <!-- end of entry -->
21031
21032
21033          <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
21034            <td class="entry_name
21035                entry_name_deprecated
21036             " rowspan="3">
21037              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
21038            </td>
21039            <td class="entry_type">
21040                <span class="entry_type_name">float</span>
21041                <span class="entry_type_container">x</span>
21042
21043                <span class="entry_type_array">
21044                  4
21045                </span>
21046              <span class="entry_type_visibility"> [hidden]</span>
21047
21048
21049
21050              <span class="entry_type_deprecated">[deprecated] </span>
21051
21052                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
21053
21054
21055            </td> <!-- entry_type -->
21056
21057            <td class="entry_description">
21058              <p>The best-fit color channel gains calculated
21059by the camera device's statistics units for the current output frame.<wbr/></p>
21060            </td>
21061
21062            <td class="entry_units">
21063            </td>
21064
21065            <td class="entry_range">
21066              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
21067            </td>
21068
21069            <td class="entry_tags">
21070            </td>
21071
21072          </tr>
21073          <tr class="entries_header">
21074            <th class="th_details" colspan="5">Details</th>
21075          </tr>
21076          <tr class="entry_cont">
21077            <td class="entry_details" colspan="5">
21078              <p>This may be different than the gains used for this frame,<wbr/>
21079since statistics processing on data from a new frame
21080typically completes after the transform has already been
21081applied to that frame.<wbr/></p>
21082<p>The 4 channel gains are defined in Bayer domain,<wbr/>
21083see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
21084<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
21085regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
21086            </td>
21087          </tr>
21088
21089
21090          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21091           <!-- end of entry -->
21092
21093
21094          <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
21095            <td class="entry_name
21096                entry_name_deprecated
21097             " rowspan="3">
21098              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
21099            </td>
21100            <td class="entry_type">
21101                <span class="entry_type_name">rational</span>
21102                <span class="entry_type_container">x</span>
21103
21104                <span class="entry_type_array">
21105                  3 x 3
21106                </span>
21107              <span class="entry_type_visibility"> [hidden]</span>
21108
21109
21110
21111              <span class="entry_type_deprecated">[deprecated] </span>
21112
21113                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
21114
21115
21116            </td> <!-- entry_type -->
21117
21118            <td class="entry_description">
21119              <p>The best-fit color transform matrix estimate
21120calculated by the camera device's statistics units for the current
21121output frame.<wbr/></p>
21122            </td>
21123
21124            <td class="entry_units">
21125            </td>
21126
21127            <td class="entry_range">
21128              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
21129            </td>
21130
21131            <td class="entry_tags">
21132            </td>
21133
21134          </tr>
21135          <tr class="entries_header">
21136            <th class="th_details" colspan="5">Details</th>
21137          </tr>
21138          <tr class="entry_cont">
21139            <td class="entry_details" colspan="5">
21140              <p>The camera device will provide the estimate from its
21141statistics unit on the white balance transforms to use
21142for the next frame.<wbr/> These are the values the camera device believes
21143are the best fit for the current output frame.<wbr/> This may
21144be different than the transform used for this frame,<wbr/> since
21145statistics processing on data from a new frame typically
21146completes after the transform has already been applied to
21147that frame.<wbr/></p>
21148<p>These estimates must be provided for all frames,<wbr/> even if
21149capture settings and color transforms are set by the application.<wbr/></p>
21150<p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
21151regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
21152            </td>
21153          </tr>
21154
21155
21156          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21157           <!-- end of entry -->
21158
21159
21160          <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
21161            <td class="entry_name
21162             " rowspan="3">
21163              android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
21164            </td>
21165            <td class="entry_type">
21166                <span class="entry_type_name entry_type_name_enum">byte</span>
21167
21168              <span class="entry_type_visibility"> [public]</span>
21169
21170
21171              <span class="entry_type_hwlevel">[full] </span>
21172
21173
21174
21175                <ul class="entry_type_enum">
21176                  <li>
21177                    <span class="entry_type_enum_name">NONE</span>
21178                    <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
21179in the current scene.<wbr/></p></span>
21180                  </li>
21181                  <li>
21182                    <span class="entry_type_enum_name">50HZ</span>
21183                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
21184in the current scene.<wbr/></p></span>
21185                  </li>
21186                  <li>
21187                    <span class="entry_type_enum_name">60HZ</span>
21188                    <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
21189in the current scene.<wbr/></p></span>
21190                  </li>
21191                </ul>
21192
21193            </td> <!-- entry_type -->
21194
21195            <td class="entry_description">
21196              <p>The camera device estimated scene illumination lighting
21197frequency.<wbr/></p>
21198            </td>
21199
21200            <td class="entry_units">
21201            </td>
21202
21203            <td class="entry_range">
21204            </td>
21205
21206            <td class="entry_tags">
21207            </td>
21208
21209          </tr>
21210          <tr class="entries_header">
21211            <th class="th_details" colspan="5">Details</th>
21212          </tr>
21213          <tr class="entry_cont">
21214            <td class="entry_details" colspan="5">
21215              <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
21216that depends on the local utility power standards.<wbr/> This flicker must be
21217accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
21218The camera device uses this entry to tell the application what the scene
21219illuminant frequency is.<wbr/></p>
21220<p>When manual exposure control is enabled
21221(<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> ==
21222OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
21223antibanding,<wbr/> and the application can ensure it selects
21224exposure times that do not cause banding issues by looking
21225into this metadata field.<wbr/> See
21226<a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
21227<p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
21228            </td>
21229          </tr>
21230
21231
21232          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21233           <!-- end of entry -->
21234
21235
21236          <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
21237            <td class="entry_name
21238             " rowspan="3">
21239              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
21240            </td>
21241            <td class="entry_type">
21242                <span class="entry_type_name entry_type_name_enum">byte</span>
21243
21244              <span class="entry_type_visibility"> [public as boolean]</span>
21245
21246
21247
21248
21249
21250                <ul class="entry_type_enum">
21251                  <li>
21252                    <span class="entry_type_enum_name">OFF</span>
21253                    <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
21254                  </li>
21255                  <li>
21256                    <span class="entry_type_enum_name">ON</span>
21257                    <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
21258                  </li>
21259                </ul>
21260
21261            </td> <!-- entry_type -->
21262
21263            <td class="entry_description">
21264              <p>Operating mode for hot pixel map generation.<wbr/></p>
21265            </td>
21266
21267            <td class="entry_units">
21268            </td>
21269
21270            <td class="entry_range">
21271              <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>
21272            </td>
21273
21274            <td class="entry_tags">
21275              <ul class="entry_tags">
21276                  <li><a href="#tag_V1">V1</a></li>
21277                  <li><a href="#tag_RAW">RAW</a></li>
21278              </ul>
21279            </td>
21280
21281          </tr>
21282          <tr class="entries_header">
21283            <th class="th_details" colspan="5">Details</th>
21284          </tr>
21285          <tr class="entry_cont">
21286            <td class="entry_details" colspan="5">
21287              <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/>
21288If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
21289            </td>
21290          </tr>
21291
21292
21293          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21294           <!-- end of entry -->
21295
21296
21297          <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
21298            <td class="entry_name
21299             " rowspan="5">
21300              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
21301            </td>
21302            <td class="entry_type">
21303                <span class="entry_type_name">int32</span>
21304                <span class="entry_type_container">x</span>
21305
21306                <span class="entry_type_array">
21307                  2 x n
21308                </span>
21309              <span class="entry_type_visibility"> [public as point]</span>
21310
21311
21312
21313
21314                <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
21315
21316
21317            </td> <!-- entry_type -->
21318
21319            <td class="entry_description">
21320              <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
21321            </td>
21322
21323            <td class="entry_units">
21324            </td>
21325
21326            <td class="entry_range">
21327              <p>n &lt;= number of pixels on the sensor.<wbr/>
21328The <code>(x,<wbr/> y)</code> coordinates must be bounded by
21329<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21330            </td>
21331
21332            <td class="entry_tags">
21333              <ul class="entry_tags">
21334                  <li><a href="#tag_V1">V1</a></li>
21335                  <li><a href="#tag_RAW">RAW</a></li>
21336              </ul>
21337            </td>
21338
21339          </tr>
21340          <tr class="entries_header">
21341            <th class="th_details" colspan="5">Details</th>
21342          </tr>
21343          <tr class="entry_cont">
21344            <td class="entry_details" colspan="5">
21345              <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
21346<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
21347bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
21348height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/>
21349This may include hot pixels that lie outside of the active array
21350bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21351            </td>
21352          </tr>
21353
21354          <tr class="entries_header">
21355            <th class="th_details" colspan="5">HAL Implementation Details</th>
21356          </tr>
21357          <tr class="entry_cont">
21358            <td class="entry_details" colspan="5">
21359              <p>A hotpixel map contains the coordinates of pixels on the camera
21360sensor that do report valid values (usually due to defects in
21361the camera sensor).<wbr/> This includes pixels that are stuck at certain
21362values,<wbr/> or have a response that does not accuractly encode the
21363incoming light from the scene.<wbr/></p>
21364<p>To avoid performance issues,<wbr/> there should be significantly fewer hot
21365pixels than actual pixels on the camera sensor.<wbr/></p>
21366            </td>
21367          </tr>
21368
21369          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21370           <!-- end of entry -->
21371
21372
21373          <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
21374            <td class="entry_name
21375             " rowspan="3">
21376              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<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>Do not include a lens shading map in the capture result.<wbr/></p></span>
21392                  </li>
21393                  <li>
21394                    <span class="entry_type_enum_name">ON</span>
21395                    <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
21396                  </li>
21397                </ul>
21398
21399            </td> <!-- entry_type -->
21400
21401            <td class="entry_description">
21402              <p>Whether the camera device will output the lens
21403shading map in output result metadata.<wbr/></p>
21404            </td>
21405
21406            <td class="entry_units">
21407            </td>
21408
21409            <td class="entry_range">
21410            </td>
21411
21412            <td class="entry_tags">
21413              <ul class="entry_tags">
21414                  <li><a href="#tag_RAW">RAW</a></li>
21415              </ul>
21416            </td>
21417
21418          </tr>
21419          <tr class="entries_header">
21420            <th class="th_details" colspan="5">Details</th>
21421          </tr>
21422          <tr class="entry_cont">
21423            <td class="entry_details" colspan="5">
21424              <p>When set to ON,<wbr/>
21425<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
21426the output result metadata.<wbr/></p>
21427<p>ON is always supported on devices with the RAW capability.<wbr/></p>
21428            </td>
21429          </tr>
21430
21431
21432          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21433           <!-- end of entry -->
21434
21435
21436
21437      <!-- end of kind -->
21438      </tbody>
21439
21440  <!-- end of section -->
21441  <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr>
21442
21443
21444      <tr><td colspan="6" class="kind">controls</td></tr>
21445
21446      <thead class="entries_header">
21447        <tr>
21448          <th class="th_name">Property Name</th>
21449          <th class="th_type">Type</th>
21450          <th class="th_description">Description</th>
21451          <th class="th_units">Units</th>
21452          <th class="th_range">Range</th>
21453          <th class="th_tags">Tags</th>
21454        </tr>
21455      </thead>
21456
21457      <tbody>
21458
21459
21460
21461
21462
21463
21464
21465
21466
21467
21468          <tr class="entry" id="controls_android.tonemap.curveBlue">
21469            <td class="entry_name
21470             " rowspan="3">
21471              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
21472            </td>
21473            <td class="entry_type">
21474                <span class="entry_type_name">float</span>
21475                <span class="entry_type_container">x</span>
21476
21477                <span class="entry_type_array">
21478                  n x 2
21479                </span>
21480              <span class="entry_type_visibility"> [hidden]</span>
21481
21482
21483              <span class="entry_type_hwlevel">[full] </span>
21484
21485
21486                <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>
21487
21488
21489            </td> <!-- entry_type -->
21490
21491            <td class="entry_description">
21492              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
21493channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
21494CONTRAST_<wbr/>CURVE.<wbr/></p>
21495            </td>
21496
21497            <td class="entry_units">
21498            </td>
21499
21500            <td class="entry_range">
21501            </td>
21502
21503            <td class="entry_tags">
21504            </td>
21505
21506          </tr>
21507          <tr class="entries_header">
21508            <th class="th_details" colspan="5">Details</th>
21509          </tr>
21510          <tr class="entry_cont">
21511            <td class="entry_details" colspan="5">
21512              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
21513            </td>
21514          </tr>
21515
21516
21517          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21518           <!-- end of entry -->
21519
21520
21521          <tr class="entry" id="controls_android.tonemap.curveGreen">
21522            <td class="entry_name
21523             " rowspan="3">
21524              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
21525            </td>
21526            <td class="entry_type">
21527                <span class="entry_type_name">float</span>
21528                <span class="entry_type_container">x</span>
21529
21530                <span class="entry_type_array">
21531                  n x 2
21532                </span>
21533              <span class="entry_type_visibility"> [hidden]</span>
21534
21535
21536              <span class="entry_type_hwlevel">[full] </span>
21537
21538
21539                <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>
21540
21541
21542            </td> <!-- entry_type -->
21543
21544            <td class="entry_description">
21545              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
21546channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
21547CONTRAST_<wbr/>CURVE.<wbr/></p>
21548            </td>
21549
21550            <td class="entry_units">
21551            </td>
21552
21553            <td class="entry_range">
21554            </td>
21555
21556            <td class="entry_tags">
21557            </td>
21558
21559          </tr>
21560          <tr class="entries_header">
21561            <th class="th_details" colspan="5">Details</th>
21562          </tr>
21563          <tr class="entry_cont">
21564            <td class="entry_details" colspan="5">
21565              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
21566            </td>
21567          </tr>
21568
21569
21570          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21571           <!-- end of entry -->
21572
21573
21574          <tr class="entry" id="controls_android.tonemap.curveRed">
21575            <td class="entry_name
21576             " rowspan="5">
21577              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
21578            </td>
21579            <td class="entry_type">
21580                <span class="entry_type_name">float</span>
21581                <span class="entry_type_container">x</span>
21582
21583                <span class="entry_type_array">
21584                  n x 2
21585                </span>
21586              <span class="entry_type_visibility"> [hidden]</span>
21587
21588
21589              <span class="entry_type_hwlevel">[full] </span>
21590
21591
21592                <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>
21593
21594
21595            </td> <!-- entry_type -->
21596
21597            <td class="entry_description">
21598              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
21599channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
21600CONTRAST_<wbr/>CURVE.<wbr/></p>
21601            </td>
21602
21603            <td class="entry_units">
21604            </td>
21605
21606            <td class="entry_range">
21607              <p>0-1 on both input and output coordinates,<wbr/> normalized
21608as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
21609            </td>
21610
21611            <td class="entry_tags">
21612            </td>
21613
21614          </tr>
21615          <tr class="entries_header">
21616            <th class="th_details" colspan="5">Details</th>
21617          </tr>
21618          <tr class="entry_cont">
21619            <td class="entry_details" colspan="5">
21620              <p>Each channel's curve is defined by an array of control points:</p>
21621<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
21622  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
216232 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
21624<p>These are sorted in order of increasing <code>Pin</code>; it is
21625required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
21626define a complete mapping.<wbr/> For input values between control points,<wbr/>
21627the camera device must linearly interpolate between the control
21628points.<wbr/></p>
21629<p>Each curve can have an independent number of points,<wbr/> and the number
21630of points can be less than max (that is,<wbr/> the request doesn't have to
21631always provide a curve with number of points equivalent to
21632<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
21633<p>A few examples,<wbr/> and their corresponding graphical mappings; these
21634only specify the red channel and the precision is limited to 4
21635digits,<wbr/> for conciseness.<wbr/></p>
21636<p>Linear mapping:</p>
21637<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 ]
21638</code></pre>
21639<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
21640<p>Invert mapping:</p>
21641<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 ]
21642</code></pre>
21643<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
21644<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
21645<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
21646  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/>
21647  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/>
21648  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/>
21649  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 ]
21650</code></pre>
21651<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
21652<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
21653<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
21654  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/>
21655  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/>
21656  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/>
21657  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 ]
21658</code></pre>
21659<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
21660            </td>
21661          </tr>
21662
21663          <tr class="entries_header">
21664            <th class="th_details" colspan="5">HAL Implementation Details</th>
21665          </tr>
21666          <tr class="entry_cont">
21667            <td class="entry_details" colspan="5">
21668              <p>For good quality of mapping,<wbr/> at least 128 control points are
21669preferred.<wbr/></p>
21670<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
21671control points used as are available.<wbr/></p>
21672            </td>
21673          </tr>
21674
21675          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21676           <!-- end of entry -->
21677
21678
21679          <tr class="entry" id="controls_android.tonemap.curve">
21680            <td class="entry_name
21681             " rowspan="5">
21682              android.<wbr/>tonemap.<wbr/>curve
21683            </td>
21684            <td class="entry_type">
21685                <span class="entry_type_name">float</span>
21686
21687              <span class="entry_type_visibility"> [public as tonemapCurve]</span>
21688
21689              <span class="entry_type_synthetic">[synthetic] </span>
21690
21691              <span class="entry_type_hwlevel">[full] </span>
21692
21693
21694
21695
21696            </td> <!-- entry_type -->
21697
21698            <td class="entry_description">
21699              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
21700is CONTRAST_<wbr/>CURVE.<wbr/></p>
21701            </td>
21702
21703            <td class="entry_units">
21704            </td>
21705
21706            <td class="entry_range">
21707            </td>
21708
21709            <td class="entry_tags">
21710            </td>
21711
21712          </tr>
21713          <tr class="entries_header">
21714            <th class="th_details" colspan="5">Details</th>
21715          </tr>
21716          <tr class="entry_cont">
21717            <td class="entry_details" colspan="5">
21718              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
21719channels respectively.<wbr/> The following example uses the red channel as an
21720example.<wbr/> The same logic applies to green and blue channel.<wbr/>
21721Each channel's curve is defined by an array of control points:</p>
21722<pre><code>curveRed =
21723  [ 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) ]
217242 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
21725<p>These are sorted in order of increasing <code>Pin</code>; it is always
21726guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
21727define a complete mapping.<wbr/> For input values between control points,<wbr/>
21728the camera device must linearly interpolate between the control
21729points.<wbr/></p>
21730<p>Each curve can have an independent number of points,<wbr/> and the number
21731of points can be less than max (that is,<wbr/> the request doesn't have to
21732always provide a curve with number of points equivalent to
21733<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
21734<p>A few examples,<wbr/> and their corresponding graphical mappings; these
21735only specify the red channel and the precision is limited to 4
21736digits,<wbr/> for conciseness.<wbr/></p>
21737<p>Linear mapping:</p>
21738<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
21739</code></pre>
21740<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
21741<p>Invert mapping:</p>
21742<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
21743</code></pre>
21744<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
21745<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
21746<pre><code>curveRed = [
21747  (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/>
21748  (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/>
21749  (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/>
21750  (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) ]
21751</code></pre>
21752<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
21753<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
21754<pre><code>curveRed = [
21755  (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/>
21756  (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/>
21757  (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/>
21758  (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) ]
21759</code></pre>
21760<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
21761            </td>
21762          </tr>
21763
21764          <tr class="entries_header">
21765            <th class="th_details" colspan="5">HAL Implementation Details</th>
21766          </tr>
21767          <tr class="entry_cont">
21768            <td class="entry_details" colspan="5">
21769              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
21770curveBlue entries.<wbr/></p>
21771            </td>
21772          </tr>
21773
21774          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21775           <!-- end of entry -->
21776
21777
21778          <tr class="entry" id="controls_android.tonemap.mode">
21779            <td class="entry_name
21780             " rowspan="3">
21781              android.<wbr/>tonemap.<wbr/>mode
21782            </td>
21783            <td class="entry_type">
21784                <span class="entry_type_name entry_type_name_enum">byte</span>
21785
21786              <span class="entry_type_visibility"> [public]</span>
21787
21788
21789              <span class="entry_type_hwlevel">[full] </span>
21790
21791
21792
21793                <ul class="entry_type_enum">
21794                  <li>
21795                    <span class="entry_type_enum_name">CONTRAST_CURVE</span>
21796                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
21797the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
21798<p>All color enhancement and tonemapping must be disabled,<wbr/> except
21799for applying the tonemapping curve specified by
21800<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
21801<p>Must not slow down frame rate relative to raw
21802sensor output.<wbr/></p></span>
21803                  </li>
21804                  <li>
21805                    <span class="entry_type_enum_name">FAST</span>
21806                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
21807reducing frame rate compared to raw sensor output.<wbr/></p></span>
21808                  </li>
21809                  <li>
21810                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
21811                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
21812the cost of reduced frame rate compared to raw sensor output.<wbr/></p></span>
21813                  </li>
21814                </ul>
21815
21816            </td> <!-- entry_type -->
21817
21818            <td class="entry_description">
21819              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
21820            </td>
21821
21822            <td class="entry_units">
21823            </td>
21824
21825            <td class="entry_range">
21826              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
21827            </td>
21828
21829            <td class="entry_tags">
21830            </td>
21831
21832          </tr>
21833          <tr class="entries_header">
21834            <th class="th_details" colspan="5">Details</th>
21835          </tr>
21836          <tr class="entry_cont">
21837            <td class="entry_details" colspan="5">
21838              <p>When switching to an application-defined contrast curve by setting
21839<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
21840per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
21841mapping from input high-bit-depth pixel value to the output
21842low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
21843and output may change depending on the camera pipeline,<wbr/> the values
21844are specified by normalized floating-point numbers.<wbr/></p>
21845<p>More-complex color mapping operations such as 3D color look-up
21846tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
21847transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
21848CONTRAST_<wbr/>CURVE.<wbr/></p>
21849<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
21850emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
21851These values are always available,<wbr/> and as close as possible to the
21852actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
21853<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
21854provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
21855roughly the same.<wbr/></p>
21856            </td>
21857          </tr>
21858
21859
21860          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21861           <!-- end of entry -->
21862
21863
21864
21865      <!-- end of kind -->
21866      </tbody>
21867      <tr><td colspan="6" class="kind">static</td></tr>
21868
21869      <thead class="entries_header">
21870        <tr>
21871          <th class="th_name">Property Name</th>
21872          <th class="th_type">Type</th>
21873          <th class="th_description">Description</th>
21874          <th class="th_units">Units</th>
21875          <th class="th_range">Range</th>
21876          <th class="th_tags">Tags</th>
21877        </tr>
21878      </thead>
21879
21880      <tbody>
21881
21882
21883
21884
21885
21886
21887
21888
21889
21890
21891          <tr class="entry" id="static_android.tonemap.maxCurvePoints">
21892            <td class="entry_name
21893             " rowspan="5">
21894              android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
21895            </td>
21896            <td class="entry_type">
21897                <span class="entry_type_name">int32</span>
21898
21899              <span class="entry_type_visibility"> [public]</span>
21900
21901
21902              <span class="entry_type_hwlevel">[full] </span>
21903
21904
21905
21906
21907            </td> <!-- entry_type -->
21908
21909            <td class="entry_description">
21910              <p>Maximum number of supported points in the
21911tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
21912            </td>
21913
21914            <td class="entry_units">
21915            </td>
21916
21917            <td class="entry_range">
21918            </td>
21919
21920            <td class="entry_tags">
21921            </td>
21922
21923          </tr>
21924          <tr class="entries_header">
21925            <th class="th_details" colspan="5">Details</th>
21926          </tr>
21927          <tr class="entry_cont">
21928            <td class="entry_details" colspan="5">
21929              <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
21930less than this maximum,<wbr/> the camera device will resample the curve to its internal
21931representation,<wbr/> using linear interpolation.<wbr/></p>
21932<p>The output curves in the result metadata may have a different number
21933of points than the input curves,<wbr/> and will represent the actual
21934hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
21935            </td>
21936          </tr>
21937
21938          <tr class="entries_header">
21939            <th class="th_details" colspan="5">HAL Implementation Details</th>
21940          </tr>
21941          <tr class="entry_cont">
21942            <td class="entry_details" colspan="5">
21943              <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
21944            </td>
21945          </tr>
21946
21947          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21948           <!-- end of entry -->
21949
21950
21951          <tr class="entry" id="static_android.tonemap.availableToneMapModes">
21952            <td class="entry_name
21953             " rowspan="3">
21954              android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
21955            </td>
21956            <td class="entry_type">
21957                <span class="entry_type_name">byte</span>
21958                <span class="entry_type_container">x</span>
21959
21960                <span class="entry_type_array">
21961                  n
21962                </span>
21963              <span class="entry_type_visibility"> [public as enumList]</span>
21964
21965
21966              <span class="entry_type_hwlevel">[full] </span>
21967
21968
21969                <div class="entry_type_notes">list of enums</div>
21970
21971
21972            </td> <!-- entry_type -->
21973
21974            <td class="entry_description">
21975              <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
21976device.<wbr/></p>
21977            </td>
21978
21979            <td class="entry_units">
21980            </td>
21981
21982            <td class="entry_range">
21983              <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
21984            </td>
21985
21986            <td class="entry_tags">
21987            </td>
21988
21989          </tr>
21990          <tr class="entries_header">
21991            <th class="th_details" colspan="5">Details</th>
21992          </tr>
21993          <tr class="entry_cont">
21994            <td class="entry_details" colspan="5">
21995              <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
21996CONTRAST_<wbr/>CURVE and FAST.<wbr/> This includes all FULL level devices.<wbr/></p>
21997            </td>
21998          </tr>
21999
22000
22001          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22002           <!-- end of entry -->
22003
22004
22005
22006      <!-- end of kind -->
22007      </tbody>
22008      <tr><td colspan="6" class="kind">dynamic</td></tr>
22009
22010      <thead class="entries_header">
22011        <tr>
22012          <th class="th_name">Property Name</th>
22013          <th class="th_type">Type</th>
22014          <th class="th_description">Description</th>
22015          <th class="th_units">Units</th>
22016          <th class="th_range">Range</th>
22017          <th class="th_tags">Tags</th>
22018        </tr>
22019      </thead>
22020
22021      <tbody>
22022
22023
22024
22025
22026
22027
22028
22029
22030
22031
22032          <tr class="entry" id="dynamic_android.tonemap.curveBlue">
22033            <td class="entry_name
22034             " rowspan="3">
22035              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
22036            </td>
22037            <td class="entry_type">
22038                <span class="entry_type_name">float</span>
22039                <span class="entry_type_container">x</span>
22040
22041                <span class="entry_type_array">
22042                  n x 2
22043                </span>
22044              <span class="entry_type_visibility"> [hidden]</span>
22045
22046
22047              <span class="entry_type_hwlevel">[full] </span>
22048
22049
22050                <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>
22051
22052
22053            </td> <!-- entry_type -->
22054
22055            <td class="entry_description">
22056              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
22057channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
22058CONTRAST_<wbr/>CURVE.<wbr/></p>
22059            </td>
22060
22061            <td class="entry_units">
22062            </td>
22063
22064            <td class="entry_range">
22065            </td>
22066
22067            <td class="entry_tags">
22068            </td>
22069
22070          </tr>
22071          <tr class="entries_header">
22072            <th class="th_details" colspan="5">Details</th>
22073          </tr>
22074          <tr class="entry_cont">
22075            <td class="entry_details" colspan="5">
22076              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
22077            </td>
22078          </tr>
22079
22080
22081          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22082           <!-- end of entry -->
22083
22084
22085          <tr class="entry" id="dynamic_android.tonemap.curveGreen">
22086            <td class="entry_name
22087             " rowspan="3">
22088              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
22089            </td>
22090            <td class="entry_type">
22091                <span class="entry_type_name">float</span>
22092                <span class="entry_type_container">x</span>
22093
22094                <span class="entry_type_array">
22095                  n x 2
22096                </span>
22097              <span class="entry_type_visibility"> [hidden]</span>
22098
22099
22100              <span class="entry_type_hwlevel">[full] </span>
22101
22102
22103                <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>
22104
22105
22106            </td> <!-- entry_type -->
22107
22108            <td class="entry_description">
22109              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
22110channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
22111CONTRAST_<wbr/>CURVE.<wbr/></p>
22112            </td>
22113
22114            <td class="entry_units">
22115            </td>
22116
22117            <td class="entry_range">
22118            </td>
22119
22120            <td class="entry_tags">
22121            </td>
22122
22123          </tr>
22124          <tr class="entries_header">
22125            <th class="th_details" colspan="5">Details</th>
22126          </tr>
22127          <tr class="entry_cont">
22128            <td class="entry_details" colspan="5">
22129              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
22130            </td>
22131          </tr>
22132
22133
22134          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22135           <!-- end of entry -->
22136
22137
22138          <tr class="entry" id="dynamic_android.tonemap.curveRed">
22139            <td class="entry_name
22140             " rowspan="5">
22141              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
22142            </td>
22143            <td class="entry_type">
22144                <span class="entry_type_name">float</span>
22145                <span class="entry_type_container">x</span>
22146
22147                <span class="entry_type_array">
22148                  n x 2
22149                </span>
22150              <span class="entry_type_visibility"> [hidden]</span>
22151
22152
22153              <span class="entry_type_hwlevel">[full] </span>
22154
22155
22156                <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>
22157
22158
22159            </td> <!-- entry_type -->
22160
22161            <td class="entry_description">
22162              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
22163channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
22164CONTRAST_<wbr/>CURVE.<wbr/></p>
22165            </td>
22166
22167            <td class="entry_units">
22168            </td>
22169
22170            <td class="entry_range">
22171              <p>0-1 on both input and output coordinates,<wbr/> normalized
22172as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
22173            </td>
22174
22175            <td class="entry_tags">
22176            </td>
22177
22178          </tr>
22179          <tr class="entries_header">
22180            <th class="th_details" colspan="5">Details</th>
22181          </tr>
22182          <tr class="entry_cont">
22183            <td class="entry_details" colspan="5">
22184              <p>Each channel's curve is defined by an array of control points:</p>
22185<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
22186  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
221872 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
22188<p>These are sorted in order of increasing <code>Pin</code>; it is
22189required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
22190define a complete mapping.<wbr/> For input values between control points,<wbr/>
22191the camera device must linearly interpolate between the control
22192points.<wbr/></p>
22193<p>Each curve can have an independent number of points,<wbr/> and the number
22194of points can be less than max (that is,<wbr/> the request doesn't have to
22195always provide a curve with number of points equivalent to
22196<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
22197<p>A few examples,<wbr/> and their corresponding graphical mappings; these
22198only specify the red channel and the precision is limited to 4
22199digits,<wbr/> for conciseness.<wbr/></p>
22200<p>Linear mapping:</p>
22201<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 ]
22202</code></pre>
22203<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
22204<p>Invert mapping:</p>
22205<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 ]
22206</code></pre>
22207<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
22208<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
22209<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
22210  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/>
22211  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/>
22212  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/>
22213  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 ]
22214</code></pre>
22215<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
22216<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
22217<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
22218  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/>
22219  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/>
22220  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/>
22221  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 ]
22222</code></pre>
22223<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
22224            </td>
22225          </tr>
22226
22227          <tr class="entries_header">
22228            <th class="th_details" colspan="5">HAL Implementation Details</th>
22229          </tr>
22230          <tr class="entry_cont">
22231            <td class="entry_details" colspan="5">
22232              <p>For good quality of mapping,<wbr/> at least 128 control points are
22233preferred.<wbr/></p>
22234<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
22235control points used as are available.<wbr/></p>
22236            </td>
22237          </tr>
22238
22239          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22240           <!-- end of entry -->
22241
22242
22243          <tr class="entry" id="dynamic_android.tonemap.curve">
22244            <td class="entry_name
22245             " rowspan="5">
22246              android.<wbr/>tonemap.<wbr/>curve
22247            </td>
22248            <td class="entry_type">
22249                <span class="entry_type_name">float</span>
22250
22251              <span class="entry_type_visibility"> [public as tonemapCurve]</span>
22252
22253              <span class="entry_type_synthetic">[synthetic] </span>
22254
22255              <span class="entry_type_hwlevel">[full] </span>
22256
22257
22258
22259
22260            </td> <!-- entry_type -->
22261
22262            <td class="entry_description">
22263              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
22264is CONTRAST_<wbr/>CURVE.<wbr/></p>
22265            </td>
22266
22267            <td class="entry_units">
22268            </td>
22269
22270            <td class="entry_range">
22271            </td>
22272
22273            <td class="entry_tags">
22274            </td>
22275
22276          </tr>
22277          <tr class="entries_header">
22278            <th class="th_details" colspan="5">Details</th>
22279          </tr>
22280          <tr class="entry_cont">
22281            <td class="entry_details" colspan="5">
22282              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
22283channels respectively.<wbr/> The following example uses the red channel as an
22284example.<wbr/> The same logic applies to green and blue channel.<wbr/>
22285Each channel's curve is defined by an array of control points:</p>
22286<pre><code>curveRed =
22287  [ 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) ]
222882 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
22289<p>These are sorted in order of increasing <code>Pin</code>; it is always
22290guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
22291define a complete mapping.<wbr/> For input values between control points,<wbr/>
22292the camera device must linearly interpolate between the control
22293points.<wbr/></p>
22294<p>Each curve can have an independent number of points,<wbr/> and the number
22295of points can be less than max (that is,<wbr/> the request doesn't have to
22296always provide a curve with number of points equivalent to
22297<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
22298<p>A few examples,<wbr/> and their corresponding graphical mappings; these
22299only specify the red channel and the precision is limited to 4
22300digits,<wbr/> for conciseness.<wbr/></p>
22301<p>Linear mapping:</p>
22302<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
22303</code></pre>
22304<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
22305<p>Invert mapping:</p>
22306<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
22307</code></pre>
22308<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
22309<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
22310<pre><code>curveRed = [
22311  (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/>
22312  (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/>
22313  (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/>
22314  (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) ]
22315</code></pre>
22316<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
22317<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
22318<pre><code>curveRed = [
22319  (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/>
22320  (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/>
22321  (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/>
22322  (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) ]
22323</code></pre>
22324<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
22325            </td>
22326          </tr>
22327
22328          <tr class="entries_header">
22329            <th class="th_details" colspan="5">HAL Implementation Details</th>
22330          </tr>
22331          <tr class="entry_cont">
22332            <td class="entry_details" colspan="5">
22333              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
22334curveBlue entries.<wbr/></p>
22335            </td>
22336          </tr>
22337
22338          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22339           <!-- end of entry -->
22340
22341
22342          <tr class="entry" id="dynamic_android.tonemap.mode">
22343            <td class="entry_name
22344             " rowspan="3">
22345              android.<wbr/>tonemap.<wbr/>mode
22346            </td>
22347            <td class="entry_type">
22348                <span class="entry_type_name entry_type_name_enum">byte</span>
22349
22350              <span class="entry_type_visibility"> [public]</span>
22351
22352
22353              <span class="entry_type_hwlevel">[full] </span>
22354
22355
22356
22357                <ul class="entry_type_enum">
22358                  <li>
22359                    <span class="entry_type_enum_name">CONTRAST_CURVE</span>
22360                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
22361the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
22362<p>All color enhancement and tonemapping must be disabled,<wbr/> except
22363for applying the tonemapping curve specified by
22364<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
22365<p>Must not slow down frame rate relative to raw
22366sensor output.<wbr/></p></span>
22367                  </li>
22368                  <li>
22369                    <span class="entry_type_enum_name">FAST</span>
22370                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
22371reducing frame rate compared to raw sensor output.<wbr/></p></span>
22372                  </li>
22373                  <li>
22374                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
22375                    <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
22376the cost of reduced frame rate compared to raw sensor output.<wbr/></p></span>
22377                  </li>
22378                </ul>
22379
22380            </td> <!-- entry_type -->
22381
22382            <td class="entry_description">
22383              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
22384            </td>
22385
22386            <td class="entry_units">
22387            </td>
22388
22389            <td class="entry_range">
22390              <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
22391            </td>
22392
22393            <td class="entry_tags">
22394            </td>
22395
22396          </tr>
22397          <tr class="entries_header">
22398            <th class="th_details" colspan="5">Details</th>
22399          </tr>
22400          <tr class="entry_cont">
22401            <td class="entry_details" colspan="5">
22402              <p>When switching to an application-defined contrast curve by setting
22403<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
22404per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
22405mapping from input high-bit-depth pixel value to the output
22406low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
22407and output may change depending on the camera pipeline,<wbr/> the values
22408are specified by normalized floating-point numbers.<wbr/></p>
22409<p>More-complex color mapping operations such as 3D color look-up
22410tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
22411transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
22412CONTRAST_<wbr/>CURVE.<wbr/></p>
22413<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
22414emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
22415These values are always available,<wbr/> and as close as possible to the
22416actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
22417<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
22418provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
22419roughly the same.<wbr/></p>
22420            </td>
22421          </tr>
22422
22423
22424          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22425           <!-- end of entry -->
22426
22427
22428
22429      <!-- end of kind -->
22430      </tbody>
22431
22432  <!-- end of section -->
22433  <tr><td colspan="6" id="section_led" class="section">led</td></tr>
22434
22435
22436      <tr><td colspan="6" class="kind">controls</td></tr>
22437
22438      <thead class="entries_header">
22439        <tr>
22440          <th class="th_name">Property Name</th>
22441          <th class="th_type">Type</th>
22442          <th class="th_description">Description</th>
22443          <th class="th_units">Units</th>
22444          <th class="th_range">Range</th>
22445          <th class="th_tags">Tags</th>
22446        </tr>
22447      </thead>
22448
22449      <tbody>
22450
22451
22452
22453
22454
22455
22456
22457
22458
22459
22460          <tr class="entry" id="controls_android.led.transmit">
22461            <td class="entry_name
22462             " rowspan="1">
22463              android.<wbr/>led.<wbr/>transmit
22464            </td>
22465            <td class="entry_type">
22466                <span class="entry_type_name entry_type_name_enum">byte</span>
22467
22468              <span class="entry_type_visibility"> [hidden as boolean]</span>
22469
22470
22471
22472
22473
22474                <ul class="entry_type_enum">
22475                  <li>
22476                    <span class="entry_type_enum_name">OFF</span>
22477                  </li>
22478                  <li>
22479                    <span class="entry_type_enum_name">ON</span>
22480                  </li>
22481                </ul>
22482
22483            </td> <!-- entry_type -->
22484
22485            <td class="entry_description">
22486              <p>This LED is nominally used to indicate to the user
22487that the camera is powered on and may be streaming images back to the
22488Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
22489disable this when video is processed locally and not transmitted to
22490any untrusted applications.<wbr/></p>
22491<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
22492transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
22493data is stored locally on the device.<wbr/></p>
22494<p>The LED <em>may</em> be off if a trusted application is using the data that
22495doesn't violate the above rules.<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            </td>
22506
22507          </tr>
22508
22509
22510          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22511           <!-- end of entry -->
22512
22513
22514
22515      <!-- end of kind -->
22516      </tbody>
22517      <tr><td colspan="6" class="kind">dynamic</td></tr>
22518
22519      <thead class="entries_header">
22520        <tr>
22521          <th class="th_name">Property Name</th>
22522          <th class="th_type">Type</th>
22523          <th class="th_description">Description</th>
22524          <th class="th_units">Units</th>
22525          <th class="th_range">Range</th>
22526          <th class="th_tags">Tags</th>
22527        </tr>
22528      </thead>
22529
22530      <tbody>
22531
22532
22533
22534
22535
22536
22537
22538
22539
22540
22541          <tr class="entry" id="dynamic_android.led.transmit">
22542            <td class="entry_name
22543             " rowspan="1">
22544              android.<wbr/>led.<wbr/>transmit
22545            </td>
22546            <td class="entry_type">
22547                <span class="entry_type_name entry_type_name_enum">byte</span>
22548
22549              <span class="entry_type_visibility"> [hidden as boolean]</span>
22550
22551
22552
22553
22554
22555                <ul class="entry_type_enum">
22556                  <li>
22557                    <span class="entry_type_enum_name">OFF</span>
22558                  </li>
22559                  <li>
22560                    <span class="entry_type_enum_name">ON</span>
22561                  </li>
22562                </ul>
22563
22564            </td> <!-- entry_type -->
22565
22566            <td class="entry_description">
22567              <p>This LED is nominally used to indicate to the user
22568that the camera is powered on and may be streaming images back to the
22569Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
22570disable this when video is processed locally and not transmitted to
22571any untrusted applications.<wbr/></p>
22572<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
22573transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
22574data is stored locally on the device.<wbr/></p>
22575<p>The LED <em>may</em> be off if a trusted application is using the data that
22576doesn't violate the above rules.<wbr/></p>
22577            </td>
22578
22579            <td class="entry_units">
22580            </td>
22581
22582            <td class="entry_range">
22583            </td>
22584
22585            <td class="entry_tags">
22586            </td>
22587
22588          </tr>
22589
22590
22591          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22592           <!-- end of entry -->
22593
22594
22595
22596      <!-- end of kind -->
22597      </tbody>
22598      <tr><td colspan="6" class="kind">static</td></tr>
22599
22600      <thead class="entries_header">
22601        <tr>
22602          <th class="th_name">Property Name</th>
22603          <th class="th_type">Type</th>
22604          <th class="th_description">Description</th>
22605          <th class="th_units">Units</th>
22606          <th class="th_range">Range</th>
22607          <th class="th_tags">Tags</th>
22608        </tr>
22609      </thead>
22610
22611      <tbody>
22612
22613
22614
22615
22616
22617
22618
22619
22620
22621
22622          <tr class="entry" id="static_android.led.availableLeds">
22623            <td class="entry_name
22624             " rowspan="1">
22625              android.<wbr/>led.<wbr/>available<wbr/>Leds
22626            </td>
22627            <td class="entry_type">
22628                <span class="entry_type_name entry_type_name_enum">byte</span>
22629                <span class="entry_type_container">x</span>
22630
22631                <span class="entry_type_array">
22632                  n
22633                </span>
22634              <span class="entry_type_visibility"> [hidden]</span>
22635
22636
22637
22638
22639
22640                <ul class="entry_type_enum">
22641                  <li>
22642                    <span class="entry_type_enum_name">TRANSMIT</span>
22643                    <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>
22644                  </li>
22645                </ul>
22646
22647            </td> <!-- entry_type -->
22648
22649            <td class="entry_description">
22650              <p>A list of camera LEDs that are available on this system.<wbr/></p>
22651            </td>
22652
22653            <td class="entry_units">
22654            </td>
22655
22656            <td class="entry_range">
22657            </td>
22658
22659            <td class="entry_tags">
22660            </td>
22661
22662          </tr>
22663
22664
22665          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22666           <!-- end of entry -->
22667
22668
22669
22670      <!-- end of kind -->
22671      </tbody>
22672
22673  <!-- end of section -->
22674  <tr><td colspan="6" id="section_info" class="section">info</td></tr>
22675
22676
22677      <tr><td colspan="6" class="kind">static</td></tr>
22678
22679      <thead class="entries_header">
22680        <tr>
22681          <th class="th_name">Property Name</th>
22682          <th class="th_type">Type</th>
22683          <th class="th_description">Description</th>
22684          <th class="th_units">Units</th>
22685          <th class="th_range">Range</th>
22686          <th class="th_tags">Tags</th>
22687        </tr>
22688      </thead>
22689
22690      <tbody>
22691
22692
22693
22694
22695
22696
22697
22698
22699
22700
22701          <tr class="entry" id="static_android.info.supportedHardwareLevel">
22702            <td class="entry_name
22703             " rowspan="5">
22704              android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
22705            </td>
22706            <td class="entry_type">
22707                <span class="entry_type_name entry_type_name_enum">byte</span>
22708
22709              <span class="entry_type_visibility"> [public]</span>
22710
22711
22712              <span class="entry_type_hwlevel">[legacy] </span>
22713
22714
22715
22716                <ul class="entry_type_enum">
22717                  <li>
22718                    <span class="entry_type_enum_name">LIMITED</span>
22719                    <span class="entry_type_enum_notes"><p>This camera device has only limited capabilities.<wbr/></p></span>
22720                  </li>
22721                  <li>
22722                    <span class="entry_type_enum_name">FULL</span>
22723                    <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p></span>
22724                  </li>
22725                  <li>
22726                    <span class="entry_type_enum_name">LEGACY</span>
22727                    <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p></span>
22728                  </li>
22729                </ul>
22730
22731            </td> <!-- entry_type -->
22732
22733            <td class="entry_description">
22734              <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
22735            </td>
22736
22737            <td class="entry_units">
22738            </td>
22739
22740            <td class="entry_range">
22741            </td>
22742
22743            <td class="entry_tags">
22744            </td>
22745
22746          </tr>
22747          <tr class="entries_header">
22748            <th class="th_details" colspan="5">Details</th>
22749          </tr>
22750          <tr class="entry_cont">
22751            <td class="entry_details" colspan="5">
22752              <p>Camera devices will come in three flavors: LEGACY,<wbr/> LIMITED and FULL.<wbr/></p>
22753<p>A FULL device will support below capabilities:</p>
22754<ul>
22755<li>30fps operation at maximum resolution (== sensor resolution) is preferred,<wbr/> more than
22756  20fps is required,<wbr/> for at least uncompressed YUV
22757  output.<wbr/> (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains BURST_<wbr/>CAPTURE)</li>
22758<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>
22759<li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR)</li>
22760<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
22761  MANUAL_<wbr/>POST_<wbr/>PROCESSING)</li>
22762<li>Arbitrary cropping region (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>==</code> FREEFORM)</li>
22763<li>At least 3 processed (but not stalling) format output streams
22764  (<a href="#static_android.request.maxNumOutputProc">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc</a> <code>&gt;=</code> 3)</li>
22765<li>The required stream configuration defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a></li>
22766<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>
22767<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>
22768</ul>
22769<p>A LIMITED device may have some or none of the above characteristics.<wbr/>
22770To find out more refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
22771<p>Some features are not part of any particular hardware level or capability and must be
22772queried separately.<wbr/> These include:</p>
22773<ul>
22774<li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
22775<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>
22776<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>
22777<li>Optical or electrical image stabilization
22778  (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
22779   <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
22780</ul>
22781<p>A LEGACY device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
22782post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/></p>
22783<p>Each higher level supports everything the lower level supports
22784in this order: FULL <code>&gt;</code> LIMITED <code>&gt;</code> LEGACY.<wbr/></p>
22785            </td>
22786          </tr>
22787
22788          <tr class="entries_header">
22789            <th class="th_details" colspan="5">HAL Implementation Details</th>
22790          </tr>
22791          <tr class="entry_cont">
22792            <td class="entry_details" colspan="5">
22793              <p>The camera 3 HAL device can implement one of two possible
22794operational modes; limited and full.<wbr/> Full support is
22795expected from new higher-end devices.<wbr/> Limited mode has
22796hardware requirements roughly in line with those for a
22797camera HAL device v1 implementation,<wbr/> and is expected from
22798older or inexpensive devices.<wbr/> Full is a strict superset of
22799limited,<wbr/> and they share the same essential operational flow.<wbr/></p>
22800<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
22801<p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there
22802for backwards compatibility in the <code>android.<wbr/>hardware.<wbr/>camera2</code>
22803user-facing API only.<wbr/></p>
22804            </td>
22805          </tr>
22806
22807          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22808           <!-- end of entry -->
22809
22810
22811
22812      <!-- end of kind -->
22813      </tbody>
22814
22815  <!-- end of section -->
22816  <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr>
22817
22818
22819      <tr><td colspan="6" class="kind">controls</td></tr>
22820
22821      <thead class="entries_header">
22822        <tr>
22823          <th class="th_name">Property Name</th>
22824          <th class="th_type">Type</th>
22825          <th class="th_description">Description</th>
22826          <th class="th_units">Units</th>
22827          <th class="th_range">Range</th>
22828          <th class="th_tags">Tags</th>
22829        </tr>
22830      </thead>
22831
22832      <tbody>
22833
22834
22835
22836
22837
22838
22839
22840
22841
22842
22843          <tr class="entry" id="controls_android.blackLevel.lock">
22844            <td class="entry_name
22845             " rowspan="5">
22846              android.<wbr/>black<wbr/>Level.<wbr/>lock
22847            </td>
22848            <td class="entry_type">
22849                <span class="entry_type_name entry_type_name_enum">byte</span>
22850
22851              <span class="entry_type_visibility"> [public as boolean]</span>
22852
22853
22854              <span class="entry_type_hwlevel">[full] </span>
22855
22856
22857
22858                <ul class="entry_type_enum">
22859                  <li>
22860                    <span class="entry_type_enum_name">OFF</span>
22861                  </li>
22862                  <li>
22863                    <span class="entry_type_enum_name">ON</span>
22864                  </li>
22865                </ul>
22866
22867            </td> <!-- entry_type -->
22868
22869            <td class="entry_description">
22870              <p>Whether black-level compensation is locked
22871to its current values,<wbr/> or is free to vary.<wbr/></p>
22872            </td>
22873
22874            <td class="entry_units">
22875            </td>
22876
22877            <td class="entry_range">
22878            </td>
22879
22880            <td class="entry_tags">
22881              <ul class="entry_tags">
22882                  <li><a href="#tag_HAL2">HAL2</a></li>
22883              </ul>
22884            </td>
22885
22886          </tr>
22887          <tr class="entries_header">
22888            <th class="th_details" colspan="5">Details</th>
22889          </tr>
22890          <tr class="entry_cont">
22891            <td class="entry_details" colspan="5">
22892              <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
22893compensation will not change until the lock is set to
22894<code>false</code> (OFF).<wbr/></p>
22895<p>Since changes to certain capture parameters (such as
22896exposure time) may require resetting of black level
22897compensation,<wbr/> the camera device must report whether setting
22898the black level lock was successful in the output result
22899metadata.<wbr/></p>
22900<p>For example,<wbr/> if a sequence of requests is as follows:</p>
22901<ul>
22902<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
22903<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
22904<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
22905<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
22906<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
22907<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
22908</ul>
22909<p>And the exposure change in Request 4 requires the camera
22910device to reset the black level offsets,<wbr/> then the output
22911result metadata is expected to be:</p>
22912<ul>
22913<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
22914<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
22915<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
22916<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
22917<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
22918<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
22919</ul>
22920<p>This indicates to the application that on frame 4,<wbr/> black
22921levels were reset due to exposure value changes,<wbr/> and pixel
22922values may not be consistent across captures.<wbr/></p>
22923<p>The camera device will maintain the lock to the extent
22924possible,<wbr/> only overriding the lock to OFF when changes to
22925other request parameters require a black level recalculation
22926or reset.<wbr/></p>
22927            </td>
22928          </tr>
22929
22930          <tr class="entries_header">
22931            <th class="th_details" colspan="5">HAL Implementation Details</th>
22932          </tr>
22933          <tr class="entry_cont">
22934            <td class="entry_details" colspan="5">
22935              <p>If for some reason black level locking is no longer possible
22936(for example,<wbr/> the analog gain has changed,<wbr/> which forces
22937black level offsets to be recalculated),<wbr/> then the HAL must
22938override this request (and it must report 'OFF' when this
22939does happen) until the next capture for which locking is
22940possible again.<wbr/></p>
22941            </td>
22942          </tr>
22943
22944          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22945           <!-- end of entry -->
22946
22947
22948
22949      <!-- end of kind -->
22950      </tbody>
22951      <tr><td colspan="6" class="kind">dynamic</td></tr>
22952
22953      <thead class="entries_header">
22954        <tr>
22955          <th class="th_name">Property Name</th>
22956          <th class="th_type">Type</th>
22957          <th class="th_description">Description</th>
22958          <th class="th_units">Units</th>
22959          <th class="th_range">Range</th>
22960          <th class="th_tags">Tags</th>
22961        </tr>
22962      </thead>
22963
22964      <tbody>
22965
22966
22967
22968
22969
22970
22971
22972
22973
22974
22975          <tr class="entry" id="dynamic_android.blackLevel.lock">
22976            <td class="entry_name
22977             " rowspan="5">
22978              android.<wbr/>black<wbr/>Level.<wbr/>lock
22979            </td>
22980            <td class="entry_type">
22981                <span class="entry_type_name entry_type_name_enum">byte</span>
22982
22983              <span class="entry_type_visibility"> [public as boolean]</span>
22984
22985
22986              <span class="entry_type_hwlevel">[full] </span>
22987
22988
22989
22990                <ul class="entry_type_enum">
22991                  <li>
22992                    <span class="entry_type_enum_name">OFF</span>
22993                  </li>
22994                  <li>
22995                    <span class="entry_type_enum_name">ON</span>
22996                  </li>
22997                </ul>
22998
22999            </td> <!-- entry_type -->
23000
23001            <td class="entry_description">
23002              <p>Whether black-level compensation is locked
23003to its current values,<wbr/> or is free to vary.<wbr/></p>
23004            </td>
23005
23006            <td class="entry_units">
23007            </td>
23008
23009            <td class="entry_range">
23010            </td>
23011
23012            <td class="entry_tags">
23013              <ul class="entry_tags">
23014                  <li><a href="#tag_HAL2">HAL2</a></li>
23015              </ul>
23016            </td>
23017
23018          </tr>
23019          <tr class="entries_header">
23020            <th class="th_details" colspan="5">Details</th>
23021          </tr>
23022          <tr class="entry_cont">
23023            <td class="entry_details" colspan="5">
23024              <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
23025ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
23026a change in other capture settings forced the camera device to
23027perform a black level reset.<wbr/></p>
23028            </td>
23029          </tr>
23030
23031          <tr class="entries_header">
23032            <th class="th_details" colspan="5">HAL Implementation Details</th>
23033          </tr>
23034          <tr class="entry_cont">
23035            <td class="entry_details" colspan="5">
23036              <p>If for some reason black level locking is no longer possible
23037(for example,<wbr/> the analog gain has changed,<wbr/> which forces
23038black level offsets to be recalculated),<wbr/> then the HAL must
23039override this request (and it must report 'OFF' when this
23040does happen) until the next capture for which locking is
23041possible again.<wbr/></p>
23042            </td>
23043          </tr>
23044
23045          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23046           <!-- end of entry -->
23047
23048
23049
23050      <!-- end of kind -->
23051      </tbody>
23052
23053  <!-- end of section -->
23054  <tr><td colspan="6" id="section_sync" class="section">sync</td></tr>
23055
23056
23057      <tr><td colspan="6" class="kind">dynamic</td></tr>
23058
23059      <thead class="entries_header">
23060        <tr>
23061          <th class="th_name">Property Name</th>
23062          <th class="th_type">Type</th>
23063          <th class="th_description">Description</th>
23064          <th class="th_units">Units</th>
23065          <th class="th_range">Range</th>
23066          <th class="th_tags">Tags</th>
23067        </tr>
23068      </thead>
23069
23070      <tbody>
23071
23072
23073
23074
23075
23076
23077
23078
23079
23080
23081          <tr class="entry" id="dynamic_android.sync.frameNumber">
23082            <td class="entry_name
23083             " rowspan="5">
23084              android.<wbr/>sync.<wbr/>frame<wbr/>Number
23085            </td>
23086            <td class="entry_type">
23087                <span class="entry_type_name entry_type_name_enum">int64</span>
23088
23089              <span class="entry_type_visibility"> [hidden]</span>
23090
23091
23092              <span class="entry_type_hwlevel">[legacy] </span>
23093
23094
23095
23096                <ul class="entry_type_enum">
23097                  <li>
23098                    <span class="entry_type_enum_name">CONVERGING</span>
23099                    <span class="entry_type_enum_value">-1</span>
23100                    <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
23101<p>Synchronization is in progress,<wbr/> and reading metadata from this
23102result may include a mix of data that have taken effect since the
23103last synchronization time.<wbr/></p>
23104<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
23105this value will update to the actual frame number frame number
23106the result is guaranteed to be synchronized to (as long as the
23107request settings remain constant).<wbr/></p></span>
23108                  </li>
23109                  <li>
23110                    <span class="entry_type_enum_name">UNKNOWN</span>
23111                    <span class="entry_type_enum_value">-2</span>
23112                    <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
23113<p>The result may have already converged,<wbr/> or it may be in
23114progress.<wbr/>  Reading from this result may include some mix
23115of settings from past requests.<wbr/></p>
23116<p>After a settings change,<wbr/> the new settings will eventually all
23117take effect for the output buffers and results.<wbr/> However,<wbr/> this
23118value will not change when that happens.<wbr/> Altering settings
23119rapidly may provide outcomes using mixes of settings from recent
23120requests.<wbr/></p>
23121<p>This value is intended primarily for backwards compatibility with
23122the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
23123                  </li>
23124                </ul>
23125
23126            </td> <!-- entry_type -->
23127
23128            <td class="entry_description">
23129              <p>The frame number corresponding to the last request
23130with which the output result (metadata + buffers) has been fully
23131synchronized.<wbr/></p>
23132            </td>
23133
23134            <td class="entry_units">
23135            </td>
23136
23137            <td class="entry_range">
23138              <p>Either a non-negative value corresponding to a
23139<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
23140            </td>
23141
23142            <td class="entry_tags">
23143              <ul class="entry_tags">
23144                  <li><a href="#tag_V1">V1</a></li>
23145              </ul>
23146            </td>
23147
23148          </tr>
23149          <tr class="entries_header">
23150            <th class="th_details" colspan="5">Details</th>
23151          </tr>
23152          <tr class="entry_cont">
23153            <td class="entry_details" colspan="5">
23154              <p>When a request is submitted to the camera device,<wbr/> there is usually a
23155delay of several frames before the controls get applied.<wbr/> A camera
23156device may either choose to account for this delay by implementing a
23157pipeline and carefully submit well-timed atomic control updates,<wbr/> or
23158it may start streaming control changes that span over several frame
23159boundaries.<wbr/></p>
23160<p>In the latter case,<wbr/> whenever a request's settings change relative to
23161the previous submitted request,<wbr/> the full set of changes may take
23162multiple frame durations to fully take effect.<wbr/> Some settings may
23163take effect sooner (in less frame durations) than others.<wbr/></p>
23164<p>While a set of control changes are being propagated,<wbr/> this value
23165will be CONVERGING.<wbr/></p>
23166<p>Once it is fully known that a set of control changes have been
23167finished propagating,<wbr/> and the resulting updated control settings
23168have been read back by the camera device,<wbr/> this value will be set
23169to a non-negative frame number (corresponding to the request to
23170which the results have synchronized to).<wbr/></p>
23171<p>Older camera device implementations may not have a way to detect
23172when all camera controls have been applied,<wbr/> and will always set this
23173value to UNKNOWN.<wbr/></p>
23174<p>FULL capability devices will always have this value set to the
23175frame number of the request corresponding to this result.<wbr/></p>
23176<p><em>Further details</em>:</p>
23177<ul>
23178<li>Whenever a request differs from the last request,<wbr/> any future
23179results not yet returned may have this value set to CONVERGING (this
23180could include any in-progress captures not yet returned by the camera
23181device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
23182<li>Submitting a series of multiple requests that differ from the
23183previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
23184moves the new synchronization frame to the last non-repeating
23185request (using the smallest frame number from the contiguous list of
23186repeating requests).<wbr/></li>
23187<li>Submitting the same request repeatedly will not change this value
23188to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
23189<li>When this value changes to non-negative,<wbr/> that means that all of the
23190metadata controls from the request have been applied,<wbr/> all of the
23191metadata controls from the camera device have been read to the
23192updated values (into the result),<wbr/> and all of the graphics buffers
23193corresponding to this result are also synchronized to the request.<wbr/></li>
23194</ul>
23195<p><em>Pipeline considerations</em>:</p>
23196<p>Submitting a request with updated controls relative to the previously
23197submitted requests may also invalidate the synchronization state
23198of all the results corresponding to currently in-flight requests.<wbr/></p>
23199<p>In other words,<wbr/> results for this current request and up to
23200<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
23201<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
23202            </td>
23203          </tr>
23204
23205          <tr class="entries_header">
23206            <th class="th_details" colspan="5">HAL Implementation Details</th>
23207          </tr>
23208          <tr class="entry_cont">
23209            <td class="entry_details" colspan="5">
23210              <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
23211is also UNKNOWN.<wbr/></p>
23212<p>FULL capability devices should simply set this value to the
23213<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
23214            </td>
23215          </tr>
23216
23217          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23218           <!-- end of entry -->
23219
23220
23221
23222      <!-- end of kind -->
23223      </tbody>
23224      <tr><td colspan="6" class="kind">static</td></tr>
23225
23226      <thead class="entries_header">
23227        <tr>
23228          <th class="th_name">Property Name</th>
23229          <th class="th_type">Type</th>
23230          <th class="th_description">Description</th>
23231          <th class="th_units">Units</th>
23232          <th class="th_range">Range</th>
23233          <th class="th_tags">Tags</th>
23234        </tr>
23235      </thead>
23236
23237      <tbody>
23238
23239
23240
23241
23242
23243
23244
23245
23246
23247
23248          <tr class="entry" id="static_android.sync.maxLatency">
23249            <td class="entry_name
23250             " rowspan="5">
23251              android.<wbr/>sync.<wbr/>max<wbr/>Latency
23252            </td>
23253            <td class="entry_type">
23254                <span class="entry_type_name entry_type_name_enum">int32</span>
23255
23256              <span class="entry_type_visibility"> [public]</span>
23257
23258
23259              <span class="entry_type_hwlevel">[legacy] </span>
23260
23261
23262
23263                <ul class="entry_type_enum">
23264                  <li>
23265                    <span class="entry_type_enum_name">PER_FRAME_CONTROL</span>
23266                    <span class="entry_type_enum_value">0</span>
23267                    <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
23268<p>Furthermore for all results,<wbr/>
23269<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CaptureResult#getFrameNumber()</code></p>
23270<p>Changing controls over multiple requests one after another will
23271produce results that have those controls applied atomically
23272each frame.<wbr/></p>
23273<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
23274                  </li>
23275                  <li>
23276                    <span class="entry_type_enum_name">UNKNOWN</span>
23277                    <span class="entry_type_enum_value">-1</span>
23278                    <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
23279of the past requests applied to the camera settings.<wbr/></p>
23280<p>By submitting a series of identical requests,<wbr/> the camera device
23281will eventually have the camera settings applied,<wbr/> but it is
23282unknown when that exact point will be.<wbr/></p>
23283<p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
23284                  </li>
23285                </ul>
23286
23287            </td> <!-- entry_type -->
23288
23289            <td class="entry_description">
23290              <p>The maximum number of frames that can occur after a request
23291(different than the previous) has been submitted,<wbr/> and before the
23292result's state becomes synchronized (by setting
23293<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> to a non-negative value).<wbr/></p>
23294            </td>
23295
23296            <td class="entry_units">
23297              Frame counts
23298            </td>
23299
23300            <td class="entry_range">
23301              <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
23302            </td>
23303
23304            <td class="entry_tags">
23305              <ul class="entry_tags">
23306                  <li><a href="#tag_V1">V1</a></li>
23307              </ul>
23308            </td>
23309
23310          </tr>
23311          <tr class="entries_header">
23312            <th class="th_details" colspan="5">Details</th>
23313          </tr>
23314          <tr class="entry_cont">
23315            <td class="entry_details" colspan="5">
23316              <p>This defines the maximum distance (in number of metadata results),<wbr/>
23317between <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> and the equivalent
23318frame number for that result.<wbr/></p>
23319<p>In other words this acts as an upper boundary for how many frames
23320must occur before the camera device knows for a fact that the new
23321submitted camera settings have been applied in outgoing frames.<wbr/></p>
23322<p>For example if the distance was 2,<wbr/></p>
23323<pre><code>initial request = X (repeating)
23324request1 = X
23325request2 = Y
23326request3 = Y
23327request4 = Y
23328
23329where requestN has frameNumber N,<wbr/> and the first of the repeating
23330initial request's has frameNumber F (and F &lt; 1).<wbr/>
23331
23332initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
23333result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
23334result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
23335result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
23336result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
23337
23338where resultN has frameNumber N.<wbr/>
23339</code></pre>
23340<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
23341<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
23342<code>4 - 2 = 2</code>.<wbr/></p>
23343            </td>
23344          </tr>
23345
23346          <tr class="entries_header">
23347            <th class="th_details" colspan="5">HAL Implementation Details</th>
23348          </tr>
23349          <tr class="entry_cont">
23350            <td class="entry_details" colspan="5">
23351              <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
23352<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or <code>CaptureResult#getFrameNumber()</code>.<wbr/></p>
23353<p>LIMITED devices are strongly encouraged to use a non-negative
23354value.<wbr/> If UNKNOWN is used here then app developers do not have a way
23355to know when sensor settings have been applied.<wbr/></p>
23356            </td>
23357          </tr>
23358
23359          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23360           <!-- end of entry -->
23361
23362
23363
23364      <!-- end of kind -->
23365      </tbody>
23366
23367  <!-- end of section -->
23368<!-- </namespace> -->
23369  </table>
23370
23371  <div class="tags" id="tag_index">
23372    <h2>Tags</h2>
23373    <ul>
23374      <li id="tag_BC">BC -
23375        Needed for backwards compatibility with old Java API
23376
23377        <ul class="tags_entries">
23378          <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
23379          <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
23380          <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
23381          <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
23382          <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
23383          <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
23384          <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
23385          <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
23386          <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
23387          <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
23388          <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
23389          <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
23390          <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
23391          <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
23392          <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
23393          <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
23394          <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
23395          <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
23396          <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
23397          <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
23398          <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
23399          <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
23400          <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
23401          <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
23402          <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
23403          <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
23404          <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
23405          <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
23406          <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
23407          <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
23408          <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
23409          <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
23410          <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
23411          <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
23412          <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
23413          <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
23414          <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
23415          <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
23416          <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
23417          <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
23418          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
23419          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
23420          <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
23421          <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
23422          <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
23423          <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
23424          <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
23425          <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
23426          <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
23427          <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
23428          <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
23429          <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
23430          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
23431          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
23432          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
23433          <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
23434          <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
23435          <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
23436          <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
23437          <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
23438          <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
23439          <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
23440          <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
23441          <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
23442          <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
23443        </ul>
23444      </li> <!-- tag_BC -->
23445      <li id="tag_V1">V1 -
23446        New features for first camera 2 release (API1)
23447
23448        <ul class="tags_entries">
23449          <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
23450          <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
23451          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
23452          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
23453          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
23454          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
23455          <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
23456          <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
23457          <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
23458          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
23459          <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
23460          <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
23461          <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
23462          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
23463          <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
23464          <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
23465          <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
23466          <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
23467          <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
23468          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
23469          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
23470          <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
23471          <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
23472          <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
23473          <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
23474          <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
23475          <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
23476          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
23477          <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
23478          <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
23479          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
23480          <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
23481          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
23482          <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
23483          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
23484          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
23485          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
23486          <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
23487          <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
23488          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
23489          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
23490          <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
23491          <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
23492          <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
23493          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
23494        </ul>
23495      </li> <!-- tag_V1 -->
23496      <li id="tag_RAW">RAW -
23497        Needed for useful RAW image processing and DNG file support
23498
23499        <ul class="tags_entries">
23500          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
23501          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
23502          <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
23503          <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
23504          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
23505          <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
23506          <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
23507          <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
23508          <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
23509          <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
23510          <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
23511          <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
23512          <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
23513          <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
23514          <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
23515          <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
23516          <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
23517          <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
23518          <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
23519          <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
23520          <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
23521          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
23522          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
23523          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
23524          <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
23525          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
23526        </ul>
23527      </li> <!-- tag_RAW -->
23528      <li id="tag_HAL2">HAL2 -
23529        Entry is only used by camera device HAL 2.x
23530
23531        <ul class="tags_entries">
23532          <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
23533          <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
23534          <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
23535          <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
23536          <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
23537        </ul>
23538      </li> <!-- tag_HAL2 -->
23539      <li id="tag_FULL">FULL -
23540        Entry is required for full hardware level devices, and optional for other hardware levels
23541
23542        <ul class="tags_entries">
23543          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
23544        </ul>
23545      </li> <!-- tag_FULL -->
23546      <li id="tag_FUTURE">FUTURE -
23547        Entry is  under-specified and is not required for now. This is for book-keeping purpose,
23548        do not implement or use it, it may be revised for future.
23549
23550        <ul class="tags_entries">
23551          <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
23552          <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
23553          <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
23554          <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
23555          <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
23556          <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
23557          <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
23558          <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
23559          <li><a href="#static_android.lens.opticalAxisAngle">android.lens.opticalAxisAngle</a> (static)</li>
23560          <li><a href="#static_android.lens.position">android.lens.position</a> (static)</li>
23561          <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
23562          <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
23563          <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
23564          <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
23565          <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
23566          <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
23567          <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
23568          <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
23569          <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
23570          <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
23571          <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
23572          <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
23573          <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
23574        </ul>
23575      </li> <!-- tag_FUTURE -->
23576    </ul>
23577  </div>
23578
23579  [ <a href="#">top</a> ]
23580
23581</body>
23582</html>
23583