docs.html revision 59793d75a462bb7a4ac2a7b94da284e3e8516a88
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_deprecated { font-weight: bolder; color: #4D4D4D; }
64    .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
65    .entry_type_enum_notes:before { content:" - " }
66    .entry_type_enum_notes>p:first-child { display:inline; }
67    .entry_type_enum_value:before { content:" = " }
68    .entry_type_enum_value { font-family: monospace; }
69    .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; }
70    .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;}
71    .entry_range_deprecated { font-weight: bolder; }
72
73    /* Entry tags flair */
74    .entry_tags ul { list-style-type: none; }
75
76    /* Entry details (full docs) flair */
77    .entry_details_header { font-weight: bold; background-color: #dddddd;
78      text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; }
79
80    /* Entry spacer flair */
81    .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
82
83    /* TODO: generate abbr element for each tag link? */
84    /* TODO for each x.y.z try to link it to the entry */
85
86  </style>
87
88  <style>
89
90    {
91      /* broken...
92         supposedly there is a bug in chrome that it lays out tables before
93         it knows its being printed, so the page-break-* styles are ignored
94         */
95        tr { page-break-after: always; page-break-inside: avoid; }
96    }
97
98  </style>
99</head>
100
101
102
103<body>
104  <h1>Android Camera HAL3.2 Properties</h1>
105
106
107  <h2>Table of Contents</h2>
108  <ul class="toc">
109    <li><a href="#tag_index" class="toc_section_header">Tags</a></li>
110    <li>
111      <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span>
112      <ul class="toc_section">
113        <li>
114          <span class="toc_kind_header">controls</span>
115          <ul class="toc_section">
116            <li
117            ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
118            <li
119            ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
120            <li
121            ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
122          </ul>
123        </li>
124        <li>
125          <span class="toc_kind_header">dynamic</span>
126          <ul class="toc_section">
127            <li
128            ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
129            <li
130            ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
131            <li
132            ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
133          </ul>
134        </li>
135      </ul> <!-- toc_section -->
136    </li>
137    <li>
138      <span class="toc_section_header"><a href="#section_control">control</a></span>
139      <ul class="toc_section">
140        <li>
141          <span class="toc_kind_header">controls</span>
142          <ul class="toc_section">
143            <li
144            ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
145            <li
146            ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
147            <li
148            ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
149            <li
150            ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
151            <li
152            ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
153            <li
154            ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
155            <li
156            ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
157            <li
158            ><a href="#controls_android.control.afMode">android.control.afMode</a></li>
159            <li
160            ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
161            <li
162            ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
163            <li
164            ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
165            <li
166            ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
167            <li
168            ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
169            <li
170            ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
171            <li
172            ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
173            <li
174            ><a href="#controls_android.control.mode">android.control.mode</a></li>
175            <li
176            ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
177            <li
178            ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
179          </ul>
180        </li>
181        <li>
182          <span class="toc_kind_header">static</span>
183          <ul class="toc_section">
184            <li
185            ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
186            <li
187            ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
188            <li
189            ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
190            <li
191            ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
192            <li
193            ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
194            <li
195            ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
196            <li
197            ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
198            <li
199            ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
200            <li
201            ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
202            <li
203            ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
204            <li
205            ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
206            <li
207            ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
208            <li
209            ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
210            <li
211            ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
212            <li
213            ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
214          </ul>
215        </li>
216        <li>
217          <span class="toc_kind_header">dynamic</span>
218          <ul class="toc_section">
219            <li
220                class="toc_deprecated"
221            ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
222            <li
223            ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
224            <li
225            ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
226            <li
227            ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
228            <li
229            ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
230            <li
231            ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
232            <li
233            ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
234            <li
235            ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
236            <li
237            ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
238            <li
239            ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
240            <li
241            ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
242            <li
243            ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
244            <li
245            ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
246            <li
247                class="toc_deprecated"
248            ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
249            <li
250            ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
251            <li
252            ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
253            <li
254            ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
255            <li
256            ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
257            <li
258            ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
259            <li
260            ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
261            <li
262            ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
263            <li
264            ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
265            <li
266            ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
267          </ul>
268        </li>
269      </ul> <!-- toc_section -->
270    </li>
271    <li>
272      <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
273      <ul class="toc_section">
274        <li>
275          <span class="toc_kind_header">controls</span>
276          <ul class="toc_section">
277            <li
278            ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
279          </ul>
280        </li>
281      </ul> <!-- toc_section -->
282    </li>
283    <li>
284      <span class="toc_section_header"><a href="#section_edge">edge</a></span>
285      <ul class="toc_section">
286        <li>
287          <span class="toc_kind_header">controls</span>
288          <ul class="toc_section">
289            <li
290            ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
291            <li
292            ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
293          </ul>
294        </li>
295        <li>
296          <span class="toc_kind_header">static</span>
297          <ul class="toc_section">
298            <li
299            ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
300          </ul>
301        </li>
302        <li>
303          <span class="toc_kind_header">dynamic</span>
304          <ul class="toc_section">
305            <li
306            ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
307          </ul>
308        </li>
309      </ul> <!-- toc_section -->
310    </li>
311    <li>
312      <span class="toc_section_header"><a href="#section_flash">flash</a></span>
313      <ul class="toc_section">
314        <li>
315          <span class="toc_kind_header">controls</span>
316          <ul class="toc_section">
317            <li
318            ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
319            <li
320            ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
321            <li
322            ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
323          </ul>
324        </li>
325        <li>
326          <span class="toc_kind_header">static</span>
327          <ul class="toc_section">
328
329            <li
330            ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
331            <li
332            ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
333
334            <li
335            ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
336            <li
337            ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
338          </ul>
339        </li>
340        <li>
341          <span class="toc_kind_header">dynamic</span>
342          <ul class="toc_section">
343            <li
344            ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
345            <li
346            ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
347            <li
348            ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
349            <li
350            ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
351          </ul>
352        </li>
353      </ul> <!-- toc_section -->
354    </li>
355    <li>
356      <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
357      <ul class="toc_section">
358        <li>
359          <span class="toc_kind_header">controls</span>
360          <ul class="toc_section">
361            <li
362            ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
363          </ul>
364        </li>
365        <li>
366          <span class="toc_kind_header">static</span>
367          <ul class="toc_section">
368            <li
369            ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
370          </ul>
371        </li>
372        <li>
373          <span class="toc_kind_header">dynamic</span>
374          <ul class="toc_section">
375            <li
376            ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
377          </ul>
378        </li>
379      </ul> <!-- toc_section -->
380    </li>
381    <li>
382      <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
383      <ul class="toc_section">
384        <li>
385          <span class="toc_kind_header">controls</span>
386          <ul class="toc_section">
387            <li
388            ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
389            <li
390            ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
391            <li
392            ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
393            <li
394            ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
395            <li
396            ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
397            <li
398            ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
399            <li
400            ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
401            <li
402            ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
403          </ul>
404        </li>
405        <li>
406          <span class="toc_kind_header">static</span>
407          <ul class="toc_section">
408            <li
409            ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
410            <li
411            ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
412          </ul>
413        </li>
414        <li>
415          <span class="toc_kind_header">dynamic</span>
416          <ul class="toc_section">
417            <li
418            ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
419            <li
420            ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
421            <li
422            ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
423            <li
424            ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
425            <li
426            ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
427            <li
428            ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
429            <li
430            ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
431            <li
432            ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
433            <li
434            ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
435          </ul>
436        </li>
437      </ul> <!-- toc_section -->
438    </li>
439    <li>
440      <span class="toc_section_header"><a href="#section_lens">lens</a></span>
441      <ul class="toc_section">
442        <li>
443          <span class="toc_kind_header">controls</span>
444          <ul class="toc_section">
445            <li
446            ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
447            <li
448            ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
449            <li
450            ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
451            <li
452            ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
453            <li
454            ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
455          </ul>
456        </li>
457        <li>
458          <span class="toc_kind_header">static</span>
459          <ul class="toc_section">
460
461            <li
462            ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
463            <li
464            ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
465            <li
466            ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
467            <li
468            ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
469            <li
470            ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
471            <li
472            ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
473            <li
474            ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
475            <li
476            ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
477
478            <li
479            ><a href="#static_android.lens.facing">android.lens.facing</a></li>
480            <li
481            ><a href="#static_android.lens.opticalAxisAngle">android.lens.opticalAxisAngle</a></li>
482            <li
483            ><a href="#static_android.lens.position">android.lens.position</a></li>
484          </ul>
485        </li>
486        <li>
487          <span class="toc_kind_header">dynamic</span>
488          <ul class="toc_section">
489            <li
490            ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
491            <li
492            ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
493            <li
494            ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
495            <li
496            ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
497            <li
498            ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
499            <li
500            ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
501            <li
502            ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
503          </ul>
504        </li>
505      </ul> <!-- toc_section -->
506    </li>
507    <li>
508      <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
509      <ul class="toc_section">
510        <li>
511          <span class="toc_kind_header">controls</span>
512          <ul class="toc_section">
513            <li
514            ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
515            <li
516            ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
517          </ul>
518        </li>
519        <li>
520          <span class="toc_kind_header">static</span>
521          <ul class="toc_section">
522            <li
523            ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
524          </ul>
525        </li>
526        <li>
527          <span class="toc_kind_header">dynamic</span>
528          <ul class="toc_section">
529            <li
530            ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
531          </ul>
532        </li>
533      </ul> <!-- toc_section -->
534    </li>
535    <li>
536      <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
537      <ul class="toc_section">
538        <li>
539          <span class="toc_kind_header">static</span>
540          <ul class="toc_section">
541            <li
542                class="toc_deprecated"
543            ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
544            <li
545                class="toc_deprecated"
546            ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
547            <li
548                class="toc_deprecated"
549            ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
550            <li
551                class="toc_deprecated"
552            ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
553          </ul>
554        </li>
555        <li>
556          <span class="toc_kind_header">dynamic</span>
557          <ul class="toc_section">
558            <li
559                class="toc_deprecated"
560            ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
561          </ul>
562        </li>
563      </ul> <!-- toc_section -->
564    </li>
565    <li>
566      <span class="toc_section_header"><a href="#section_request">request</a></span>
567      <ul class="toc_section">
568        <li>
569          <span class="toc_kind_header">controls</span>
570          <ul class="toc_section">
571            <li
572                class="toc_deprecated"
573            ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
574            <li
575            ><a href="#controls_android.request.id">android.request.id</a></li>
576            <li
577                class="toc_deprecated"
578            ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
579            <li
580            ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
581            <li
582                class="toc_deprecated"
583            ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
584            <li
585                class="toc_deprecated"
586            ><a href="#controls_android.request.type">android.request.type</a></li>
587          </ul>
588        </li>
589        <li>
590          <span class="toc_kind_header">static</span>
591          <ul class="toc_section">
592            <li
593            ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
594            <li
595            ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
596            <li
597            ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
598            <li
599            ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
600            <li
601                class="toc_deprecated"
602            ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
603            <li
604            ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
605            <li
606            ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
607            <li
608            ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
609            <li
610            ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
611            <li
612            ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
613            <li
614            ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
615            <li
616            ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
617          </ul>
618        </li>
619        <li>
620          <span class="toc_kind_header">dynamic</span>
621          <ul class="toc_section">
622            <li
623            ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
624            <li
625            ><a href="#dynamic_android.request.id">android.request.id</a></li>
626            <li
627            ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
628            <li
629                class="toc_deprecated"
630            ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
631            <li
632            ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
633          </ul>
634        </li>
635      </ul> <!-- toc_section -->
636    </li>
637    <li>
638      <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
639      <ul class="toc_section">
640        <li>
641          <span class="toc_kind_header">controls</span>
642          <ul class="toc_section">
643            <li
644            ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
645          </ul>
646        </li>
647        <li>
648          <span class="toc_kind_header">static</span>
649          <ul class="toc_section">
650            <li
651                class="toc_deprecated"
652            ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
653            <li
654                class="toc_deprecated"
655            ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
656            <li
657                class="toc_deprecated"
658            ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
659            <li
660            ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
661            <li
662                class="toc_deprecated"
663            ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
664            <li
665                class="toc_deprecated"
666            ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
667            <li
668                class="toc_deprecated"
669            ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
670            <li
671                class="toc_deprecated"
672            ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
673            <li
674            ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
675            <li
676            ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
677            <li
678            ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
679            <li
680            ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
681            <li
682            ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
683            <li
684            ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
685          </ul>
686        </li>
687        <li>
688          <span class="toc_kind_header">dynamic</span>
689          <ul class="toc_section">
690            <li
691            ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
692          </ul>
693        </li>
694      </ul> <!-- toc_section -->
695    </li>
696    <li>
697      <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
698      <ul class="toc_section">
699        <li>
700          <span class="toc_kind_header">controls</span>
701          <ul class="toc_section">
702            <li
703            ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
704            <li
705            ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
706            <li
707            ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
708            <li
709            ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
710            <li
711            ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
712          </ul>
713        </li>
714        <li>
715          <span class="toc_kind_header">static</span>
716          <ul class="toc_section">
717
718            <li
719            ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
720            <li
721            ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
722            <li
723            ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
724            <li
725            ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
726            <li
727            ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
728            <li
729            ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
730            <li
731            ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
732            <li
733            ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
734
735            <li
736            ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
737            <li
738            ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
739            <li
740            ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
741            <li
742            ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
743            <li
744            ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
745            <li
746            ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
747            <li
748            ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
749            <li
750            ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
751            <li
752            ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
753            <li
754            ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
755            <li
756            ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
757            <li
758            ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
759            <li
760            ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
761            <li
762            ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
763          </ul>
764        </li>
765        <li>
766          <span class="toc_kind_header">dynamic</span>
767          <ul class="toc_section">
768            <li
769            ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
770            <li
771            ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
772            <li
773            ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
774            <li
775            ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
776            <li
777            ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
778            <li
779            ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
780            <li
781            ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
782            <li
783            ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
784            <li
785            ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
786            <li
787            ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
788            <li
789            ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
790          </ul>
791        </li>
792      </ul> <!-- toc_section -->
793    </li>
794    <li>
795      <span class="toc_section_header"><a href="#section_shading">shading</a></span>
796      <ul class="toc_section">
797        <li>
798          <span class="toc_kind_header">controls</span>
799          <ul class="toc_section">
800            <li
801            ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
802            <li
803            ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
804          </ul>
805        </li>
806        <li>
807          <span class="toc_kind_header">dynamic</span>
808          <ul class="toc_section">
809            <li
810            ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
811          </ul>
812        </li>
813      </ul> <!-- toc_section -->
814    </li>
815    <li>
816      <span class="toc_section_header"><a href="#section_statistics">statistics</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.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
823            <li
824            ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
825            <li
826            ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
827            <li
828            ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
829            <li
830            ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
831          </ul>
832        </li>
833        <li>
834          <span class="toc_kind_header">static</span>
835          <ul class="toc_section">
836
837            <li
838            ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
839            <li
840            ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
841            <li
842            ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
843            <li
844            ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
845            <li
846            ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
847            <li
848            ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
849            <li
850            ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
851
852          </ul>
853        </li>
854        <li>
855          <span class="toc_kind_header">dynamic</span>
856          <ul class="toc_section">
857            <li
858            ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
859            <li
860            ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
861            <li
862            ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
863            <li
864            ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
865            <li
866            ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
867            <li
868            ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
869            <li
870            ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
871            <li
872            ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
873            <li
874            ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
875            <li
876            ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
877            <li
878            ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
879            <li
880            ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
881            <li
882                class="toc_deprecated"
883            ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
884            <li
885                class="toc_deprecated"
886            ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
887            <li
888            ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
889            <li
890            ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
891            <li
892            ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
893            <li
894            ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
895          </ul>
896        </li>
897      </ul> <!-- toc_section -->
898    </li>
899    <li>
900      <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
901      <ul class="toc_section">
902        <li>
903          <span class="toc_kind_header">controls</span>
904          <ul class="toc_section">
905            <li
906            ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
907            <li
908            ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
909            <li
910            ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
911            <li
912            ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
913            <li
914            ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
915          </ul>
916        </li>
917        <li>
918          <span class="toc_kind_header">static</span>
919          <ul class="toc_section">
920            <li
921            ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
922            <li
923            ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
924          </ul>
925        </li>
926        <li>
927          <span class="toc_kind_header">dynamic</span>
928          <ul class="toc_section">
929            <li
930            ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
931            <li
932            ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
933            <li
934            ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
935            <li
936            ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
937            <li
938            ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
939          </ul>
940        </li>
941      </ul> <!-- toc_section -->
942    </li>
943    <li>
944      <span class="toc_section_header"><a href="#section_led">led</a></span>
945      <ul class="toc_section">
946        <li>
947          <span class="toc_kind_header">controls</span>
948          <ul class="toc_section">
949            <li
950            ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
951          </ul>
952        </li>
953        <li>
954          <span class="toc_kind_header">dynamic</span>
955          <ul class="toc_section">
956            <li
957            ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
958          </ul>
959        </li>
960        <li>
961          <span class="toc_kind_header">static</span>
962          <ul class="toc_section">
963            <li
964            ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
965          </ul>
966        </li>
967      </ul> <!-- toc_section -->
968    </li>
969    <li>
970      <span class="toc_section_header"><a href="#section_info">info</a></span>
971      <ul class="toc_section">
972        <li>
973          <span class="toc_kind_header">static</span>
974          <ul class="toc_section">
975            <li
976            ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
977          </ul>
978        </li>
979      </ul> <!-- toc_section -->
980    </li>
981    <li>
982      <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
983      <ul class="toc_section">
984        <li>
985          <span class="toc_kind_header">controls</span>
986          <ul class="toc_section">
987            <li
988            ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
989          </ul>
990        </li>
991        <li>
992          <span class="toc_kind_header">dynamic</span>
993          <ul class="toc_section">
994            <li
995            ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
996          </ul>
997        </li>
998      </ul> <!-- toc_section -->
999    </li>
1000    <li>
1001      <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1002      <ul class="toc_section">
1003        <li>
1004          <span class="toc_kind_header">dynamic</span>
1005          <ul class="toc_section">
1006            <li
1007            ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1008          </ul>
1009        </li>
1010        <li>
1011          <span class="toc_kind_header">static</span>
1012          <ul class="toc_section">
1013            <li
1014            ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1015          </ul>
1016        </li>
1017      </ul> <!-- toc_section -->
1018    </li>
1019  </ul>
1020
1021
1022  <h1>Properties</h1>
1023  <table class="properties">
1024
1025    <thead class="thead_dummy">
1026      <tr>
1027        <th class="th_name">Property Name</th>
1028        <th class="th_type">Type</th>
1029        <th class="th_description">Description</th>
1030        <th class="th_units">Units</th>
1031        <th class="th_range">Range</th>
1032        <th class="th_tags">Tags</th>
1033      </tr>
1034    </thead> <!-- so that the first occurrence of thead is not
1035                         above the first occurrence of tr -->
1036<!-- <namespace name="android"> -->
1037  <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1038
1039
1040      <tr><td colspan="6" class="kind">controls</td></tr>
1041
1042      <thead class="entries_header">
1043        <tr>
1044          <th class="th_name">Property Name</th>
1045          <th class="th_type">Type</th>
1046          <th class="th_description">Description</th>
1047          <th class="th_units">Units</th>
1048          <th class="th_range">Range</th>
1049          <th class="th_tags">Tags</th>
1050        </tr>
1051      </thead>
1052
1053      <tbody>
1054
1055        
1056
1057        
1058
1059        
1060
1061        
1062
1063                
1064          <tr class="entry" id="controls_android.colorCorrection.mode">
1065            <td class="entry_name
1066             " rowspan="3">
1067              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1068            </td>
1069            <td class="entry_type">
1070                <span class="entry_type_name entry_type_name_enum">byte</span>
1071
1072              <span class="entry_type_visibility"> [public]</span>
1073
1074
1075
1076
1077                <ul class="entry_type_enum">
1078                  <li>
1079                    <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1080                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1081and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1082<p>All advanced white balance adjustments (not specified
1083by our white balance pipeline) must be disabled.<wbr/></p>
1084<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
1085TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1086this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1087                  </li>
1088                  <li>
1089                    <span class="entry_type_enum_name">FAST</span>
1090                    <span class="entry_type_enum_notes"><p>Must not slow down capture rate relative to sensor raw
1091output.<wbr/></p>
1092<p>Advanced white balance adjustments above and beyond
1093the specified white balance pipeline may be applied.<wbr/></p>
1094<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
1095the camera device uses the last frame's AWB values
1096(or defaults if AWB has never been run).<wbr/></p></span>
1097                  </li>
1098                  <li>
1099                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1100                    <span class="entry_type_enum_notes"><p>Capture rate (relative to sensor raw output)
1101may be reduced by high quality.<wbr/></p>
1102<p>Advanced white balance adjustments above and beyond
1103the specified white balance pipeline may be applied.<wbr/></p>
1104<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
1105the camera device uses the last frame's AWB values
1106(or defaults if AWB has never been run).<wbr/></p></span>
1107                  </li>
1108                </ul>
1109
1110            </td> <!-- entry_type -->
1111
1112            <td class="entry_description">
1113              <p>The mode control selects how the image data is converted from the
1114sensor's native color into linear sRGB color.<wbr/></p>
1115            </td>
1116
1117            <td class="entry_units">
1118            </td>
1119
1120            <td class="entry_range">
1121            </td>
1122
1123            <td class="entry_tags">
1124            </td>
1125
1126          </tr>
1127          <tr class="entries_header">
1128            <th class="th_details" colspan="5">Details</th>
1129          </tr>
1130          <tr class="entry_cont">
1131            <td class="entry_details" colspan="5">
1132              <p>When auto-white balance is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
1133control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1134application controls how the color mapping is performed.<wbr/></p>
1135<p>We define the expected processing pipeline below.<wbr/> For consistency
1136across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1137<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1138do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1139<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1140camera device (in the results) and be roughly correct.<wbr/></p>
1141<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1142FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1143as what was produced by the camera device in the earlier frame.<wbr/></p>
1144<p>The expected processing pipeline is as follows:</p>
1145<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1146<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1147gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1148matrix (applied after demosaic).<wbr/></p>
1149<p>The 4-channel white-balance gains are defined as:</p>
1150<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1151</code></pre>
1152<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1153output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1154These may be identical for a given camera device implementation; if
1155the camera device does not support a separate gain for even/<wbr/>odd green
1156channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1157<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1158<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1159<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 ]
1160</code></pre>
1161<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1162to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1163<p>with colors as follows:</p>
1164<pre><code>r' = I0r + I1g + I2b
1165g' = I3r + I4g + I5b
1166b' = I6r + I7g + I8b
1167</code></pre>
1168<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1169values are clipped to fit within the range.<wbr/></p>
1170            </td>
1171          </tr>
1172
1173
1174          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1175           <!-- end of entry -->
1176        
1177                
1178          <tr class="entry" id="controls_android.colorCorrection.transform">
1179            <td class="entry_name
1180             " rowspan="3">
1181              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1182            </td>
1183            <td class="entry_type">
1184                <span class="entry_type_name">rational</span>
1185                <span class="entry_type_container">x</span>
1186
1187                <span class="entry_type_array">
1188                  3 x 3
1189                </span>
1190              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1191
1192
1193
1194                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1195
1196
1197            </td> <!-- entry_type -->
1198
1199            <td class="entry_description">
1200              <p>A color transform matrix to use to transform
1201from sensor RGB color space to output linear sRGB color space</p>
1202            </td>
1203
1204            <td class="entry_units">
1205            </td>
1206
1207            <td class="entry_range">
1208            </td>
1209
1210            <td class="entry_tags">
1211            </td>
1212
1213          </tr>
1214          <tr class="entries_header">
1215            <th class="th_details" colspan="5">Details</th>
1216          </tr>
1217          <tr class="entry_cont">
1218            <td class="entry_details" colspan="5">
1219              <p>This matrix is either set by the camera device when the request
1220<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1221directly by the application in the request when the
1222<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1223<p>In the latter case,<wbr/> the camera device may round the matrix to account
1224for precision issues; the final rounded matrix should be reported back
1225in this matrix result metadata.<wbr/> The transform should keep the magnitude
1226of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1227values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1228            </td>
1229          </tr>
1230
1231
1232          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1233           <!-- end of entry -->
1234        
1235                
1236          <tr class="entry" id="controls_android.colorCorrection.gains">
1237            <td class="entry_name
1238             " rowspan="5">
1239              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1240            </td>
1241            <td class="entry_type">
1242                <span class="entry_type_name">float</span>
1243                <span class="entry_type_container">x</span>
1244
1245                <span class="entry_type_array">
1246                  4
1247                </span>
1248              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1249
1250
1251
1252                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1253
1254
1255            </td> <!-- entry_type -->
1256
1257            <td class="entry_description">
1258              <p>Gains applying to Bayer raw color channels for
1259white-balance.<wbr/></p>
1260            </td>
1261
1262            <td class="entry_units">
1263            </td>
1264
1265            <td class="entry_range">
1266            </td>
1267
1268            <td class="entry_tags">
1269            </td>
1270
1271          </tr>
1272          <tr class="entries_header">
1273            <th class="th_details" colspan="5">Details</th>
1274          </tr>
1275          <tr class="entry_cont">
1276            <td class="entry_details" colspan="5">
1277              <p>These per-channel gains are either set by the camera device
1278when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1279TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1280request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1281TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1282<p>The gains in the result metadata are the gains actually
1283applied by the camera device to the current frame.<wbr/></p>
1284            </td>
1285          </tr>
1286
1287          <tr class="entries_header">
1288            <th class="th_details" colspan="5">HAL Implementation Details</th>
1289          </tr>
1290          <tr class="entry_cont">
1291            <td class="entry_details" colspan="5">
1292              <p>The 4-channel white-balance gains are defined in
1293the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1294for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1295is the gain for green pixels on the odd rows.<wbr/></p>
1296<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1297channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1298<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1299            </td>
1300          </tr>
1301
1302          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1303           <!-- end of entry -->
1304        
1305        
1306
1307      <!-- end of kind -->
1308      </tbody>
1309      <tr><td colspan="6" class="kind">dynamic</td></tr>
1310
1311      <thead class="entries_header">
1312        <tr>
1313          <th class="th_name">Property Name</th>
1314          <th class="th_type">Type</th>
1315          <th class="th_description">Description</th>
1316          <th class="th_units">Units</th>
1317          <th class="th_range">Range</th>
1318          <th class="th_tags">Tags</th>
1319        </tr>
1320      </thead>
1321
1322      <tbody>
1323
1324        
1325
1326        
1327
1328        
1329
1330        
1331
1332                
1333          <tr class="entry" id="dynamic_android.colorCorrection.mode">
1334            <td class="entry_name
1335             " rowspan="3">
1336              android.<wbr/>color<wbr/>Correction.<wbr/>mode
1337            </td>
1338            <td class="entry_type">
1339                <span class="entry_type_name entry_type_name_enum">byte</span>
1340
1341              <span class="entry_type_visibility"> [public]</span>
1342
1343
1344
1345
1346                <ul class="entry_type_enum">
1347                  <li>
1348                    <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1349                    <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1350and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1351<p>All advanced white balance adjustments (not specified
1352by our white balance pipeline) must be disabled.<wbr/></p>
1353<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
1354TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1355this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1356                  </li>
1357                  <li>
1358                    <span class="entry_type_enum_name">FAST</span>
1359                    <span class="entry_type_enum_notes"><p>Must not slow down capture rate relative to sensor raw
1360output.<wbr/></p>
1361<p>Advanced white balance adjustments above and beyond
1362the specified white balance pipeline may be applied.<wbr/></p>
1363<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
1364the camera device uses the last frame's AWB values
1365(or defaults if AWB has never been run).<wbr/></p></span>
1366                  </li>
1367                  <li>
1368                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
1369                    <span class="entry_type_enum_notes"><p>Capture rate (relative to sensor raw output)
1370may be reduced by high quality.<wbr/></p>
1371<p>Advanced white balance adjustments above and beyond
1372the specified white balance pipeline may be applied.<wbr/></p>
1373<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
1374the camera device uses the last frame's AWB values
1375(or defaults if AWB has never been run).<wbr/></p></span>
1376                  </li>
1377                </ul>
1378
1379            </td> <!-- entry_type -->
1380
1381            <td class="entry_description">
1382              <p>The mode control selects how the image data is converted from the
1383sensor's native color into linear sRGB color.<wbr/></p>
1384            </td>
1385
1386            <td class="entry_units">
1387            </td>
1388
1389            <td class="entry_range">
1390            </td>
1391
1392            <td class="entry_tags">
1393            </td>
1394
1395          </tr>
1396          <tr class="entries_header">
1397            <th class="th_details" colspan="5">Details</th>
1398          </tr>
1399          <tr class="entry_cont">
1400            <td class="entry_details" colspan="5">
1401              <p>When auto-white balance is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
1402control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1403application controls how the color mapping is performed.<wbr/></p>
1404<p>We define the expected processing pipeline below.<wbr/> For consistency
1405across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1406<p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1407do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1408<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1409camera device (in the results) and be roughly correct.<wbr/></p>
1410<p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1411FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1412as what was produced by the camera device in the earlier frame.<wbr/></p>
1413<p>The expected processing pipeline is as follows:</p>
1414<p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1415<p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1416gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1417matrix (applied after demosaic).<wbr/></p>
1418<p>The 4-channel white-balance gains are defined as:</p>
1419<pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1420</code></pre>
1421<p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1422output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1423These may be identical for a given camera device implementation; if
1424the camera device does not support a separate gain for even/<wbr/>odd green
1425channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1426<code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1427<p>The matrices for color transforms are defined as a 9-entry vector:</p>
1428<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 ]
1429</code></pre>
1430<p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1431to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1432<p>with colors as follows:</p>
1433<pre><code>r' = I0r + I1g + I2b
1434g' = I3r + I4g + I5b
1435b' = I6r + I7g + I8b
1436</code></pre>
1437<p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1438values are clipped to fit within the range.<wbr/></p>
1439            </td>
1440          </tr>
1441
1442
1443          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1444           <!-- end of entry -->
1445        
1446                
1447          <tr class="entry" id="dynamic_android.colorCorrection.transform">
1448            <td class="entry_name
1449             " rowspan="3">
1450              android.<wbr/>color<wbr/>Correction.<wbr/>transform
1451            </td>
1452            <td class="entry_type">
1453                <span class="entry_type_name">rational</span>
1454                <span class="entry_type_container">x</span>
1455
1456                <span class="entry_type_array">
1457                  3 x 3
1458                </span>
1459              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1460
1461
1462
1463                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1464
1465
1466            </td> <!-- entry_type -->
1467
1468            <td class="entry_description">
1469              <p>A color transform matrix to use to transform
1470from sensor RGB color space to output linear sRGB color space</p>
1471            </td>
1472
1473            <td class="entry_units">
1474            </td>
1475
1476            <td class="entry_range">
1477            </td>
1478
1479            <td class="entry_tags">
1480            </td>
1481
1482          </tr>
1483          <tr class="entries_header">
1484            <th class="th_details" colspan="5">Details</th>
1485          </tr>
1486          <tr class="entry_cont">
1487            <td class="entry_details" colspan="5">
1488              <p>This matrix is either set by the camera device when the request
1489<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1490directly by the application in the request when the
1491<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1492<p>In the latter case,<wbr/> the camera device may round the matrix to account
1493for precision issues; the final rounded matrix should be reported back
1494in this matrix result metadata.<wbr/> The transform should keep the magnitude
1495of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1496values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1497            </td>
1498          </tr>
1499
1500
1501          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1502           <!-- end of entry -->
1503        
1504                
1505          <tr class="entry" id="dynamic_android.colorCorrection.gains">
1506            <td class="entry_name
1507             " rowspan="5">
1508              android.<wbr/>color<wbr/>Correction.<wbr/>gains
1509            </td>
1510            <td class="entry_type">
1511                <span class="entry_type_name">float</span>
1512                <span class="entry_type_container">x</span>
1513
1514                <span class="entry_type_array">
1515                  4
1516                </span>
1517              <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1518
1519
1520
1521                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1522
1523
1524            </td> <!-- entry_type -->
1525
1526            <td class="entry_description">
1527              <p>Gains applying to Bayer raw color channels for
1528white-balance.<wbr/></p>
1529            </td>
1530
1531            <td class="entry_units">
1532            </td>
1533
1534            <td class="entry_range">
1535            </td>
1536
1537            <td class="entry_tags">
1538            </td>
1539
1540          </tr>
1541          <tr class="entries_header">
1542            <th class="th_details" colspan="5">Details</th>
1543          </tr>
1544          <tr class="entry_cont">
1545            <td class="entry_details" colspan="5">
1546              <p>These per-channel gains are either set by the camera device
1547when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1548TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1549request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1550TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1551<p>The gains in the result metadata are the gains actually
1552applied by the camera device to the current frame.<wbr/></p>
1553            </td>
1554          </tr>
1555
1556          <tr class="entries_header">
1557            <th class="th_details" colspan="5">HAL Implementation Details</th>
1558          </tr>
1559          <tr class="entry_cont">
1560            <td class="entry_details" colspan="5">
1561              <p>The 4-channel white-balance gains are defined in
1562the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1563for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1564is the gain for green pixels on the odd rows.<wbr/></p>
1565<p>If a HAL does not support a separate gain for even/<wbr/>odd green
1566channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1567<code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1568            </td>
1569          </tr>
1570
1571          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1572           <!-- end of entry -->
1573        
1574        
1575
1576      <!-- end of kind -->
1577      </tbody>
1578
1579  <!-- end of section -->
1580  <tr><td colspan="6" id="section_control" class="section">control</td></tr>
1581
1582
1583      <tr><td colspan="6" class="kind">controls</td></tr>
1584
1585      <thead class="entries_header">
1586        <tr>
1587          <th class="th_name">Property Name</th>
1588          <th class="th_type">Type</th>
1589          <th class="th_description">Description</th>
1590          <th class="th_units">Units</th>
1591          <th class="th_range">Range</th>
1592          <th class="th_tags">Tags</th>
1593        </tr>
1594      </thead>
1595
1596      <tbody>
1597
1598        
1599
1600        
1601
1602        
1603
1604        
1605
1606                
1607          <tr class="entry" id="controls_android.control.aeAntibandingMode">
1608            <td class="entry_name
1609             " rowspan="5">
1610              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
1611            </td>
1612            <td class="entry_type">
1613                <span class="entry_type_name entry_type_name_enum">byte</span>
1614
1615              <span class="entry_type_visibility"> [public]</span>
1616
1617
1618
1619
1620                <ul class="entry_type_enum">
1621                  <li>
1622                    <span class="entry_type_enum_name">OFF</span>
1623                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
1624avoid banding problems.<wbr/></p></span>
1625                  </li>
1626                  <li>
1627                    <span class="entry_type_enum_name">50HZ</span>
1628                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
1629avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
1630                  </li>
1631                  <li>
1632                    <span class="entry_type_enum_name">60HZ</span>
1633                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
1634avoid banding problems with 60Hz illumination
1635sources.<wbr/></p></span>
1636                  </li>
1637                  <li>
1638                    <span class="entry_type_enum_name">AUTO</span>
1639                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
1640antibanding routine to the current illumination
1641conditions.<wbr/> This is the default.<wbr/></p></span>
1642                  </li>
1643                </ul>
1644
1645            </td> <!-- entry_type -->
1646
1647            <td class="entry_description">
1648              <p>The desired setting for the camera device's auto-exposure
1649algorithm's antibanding compensation.<wbr/></p>
1650            </td>
1651
1652            <td class="entry_units">
1653            </td>
1654
1655            <td class="entry_range">
1656              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
1657            </td>
1658
1659            <td class="entry_tags">
1660              <ul class="entry_tags">
1661                  <li><a href="#tag_BC">BC</a></li>
1662              </ul>
1663            </td>
1664
1665          </tr>
1666          <tr class="entries_header">
1667            <th class="th_details" colspan="5">Details</th>
1668          </tr>
1669          <tr class="entry_cont">
1670            <td class="entry_details" colspan="5">
1671              <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
1672lights,<wbr/> flicker at the rate of the power supply frequency
1673(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
1674typically not noticeable to a person,<wbr/> it can be visible to
1675a camera device.<wbr/> If a camera sets its exposure time to the
1676wrong value,<wbr/> the flicker may become visible in the
1677viewfinder as flicker or in a final captured image,<wbr/> as a
1678set of variable-brightness bands across the image.<wbr/></p>
1679<p>Therefore,<wbr/> the auto-exposure routines of camera devices
1680include antibanding routines that ensure that the chosen
1681exposure value will not cause such banding.<wbr/> The choice of
1682exposure time depends on the rate of flicker,<wbr/> which the
1683camera device can detect automatically,<wbr/> or the expected
1684rate can be selected by the application using this
1685control.<wbr/></p>
1686<p>A given camera device may not support all of the possible
1687options for the antibanding mode.<wbr/> The
1688<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
1689the available modes for a given camera device.<wbr/></p>
1690<p>The default mode is AUTO,<wbr/> which must be supported by all
1691camera devices.<wbr/></p>
1692<p>If manual exposure control is enabled (by setting
1693<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/>
1694then this setting has no effect,<wbr/> and the application must
1695ensure it selects exposure times that do not cause banding
1696issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
1697the application in this.<wbr/></p>
1698            </td>
1699          </tr>
1700
1701          <tr class="entries_header">
1702            <th class="th_details" colspan="5">HAL Implementation Details</th>
1703          </tr>
1704          <tr class="entry_cont">
1705            <td class="entry_details" colspan="5">
1706              <p>For all capture request templates,<wbr/> this field must be set
1707to AUTO.<wbr/>  AUTO is the only mode that must supported;
1708OFF,<wbr/> 50HZ,<wbr/> 60HZ are all optional.<wbr/></p>
1709<p>If manual exposure control is enabled (by setting
1710<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/>
1711then the exposure values provided by the application must not be
1712adjusted for antibanding.<wbr/></p>
1713            </td>
1714          </tr>
1715
1716          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1717           <!-- end of entry -->
1718        
1719                
1720          <tr class="entry" id="controls_android.control.aeExposureCompensation">
1721            <td class="entry_name
1722             " rowspan="3">
1723              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
1724            </td>
1725            <td class="entry_type">
1726                <span class="entry_type_name">int32</span>
1727
1728              <span class="entry_type_visibility"> [public]</span>
1729
1730
1731
1732
1733
1734            </td> <!-- entry_type -->
1735
1736            <td class="entry_description">
1737              <p>Adjustment to AE target image
1738brightness</p>
1739            </td>
1740
1741            <td class="entry_units">
1742              count of positive/<wbr/>negative EV steps
1743            </td>
1744
1745            <td class="entry_range">
1746            </td>
1747
1748            <td class="entry_tags">
1749              <ul class="entry_tags">
1750                  <li><a href="#tag_BC">BC</a></li>
1751              </ul>
1752            </td>
1753
1754          </tr>
1755          <tr class="entries_header">
1756            <th class="th_details" colspan="5">Details</th>
1757          </tr>
1758          <tr class="entry_cont">
1759            <td class="entry_details" colspan="5">
1760              <p>For example,<wbr/> if EV step is 0.<wbr/>333,<wbr/> '6' will mean an
1761exposure compensation of +2 EV; -3 will mean an exposure
1762compensation of -1 EV.<wbr/> Note that this control will only be effective
1763if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control will take effect even when
1764<a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
1765<p>In the event of exposure compensation value being changed,<wbr/> camera device
1766may take several frames to reach the newly requested exposure target.<wbr/>
1767During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
1768state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
1769change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
1770FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
1771            </td>
1772          </tr>
1773
1774
1775          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1776           <!-- end of entry -->
1777        
1778                
1779          <tr class="entry" id="controls_android.control.aeLock">
1780            <td class="entry_name
1781             " rowspan="3">
1782              android.<wbr/>control.<wbr/>ae<wbr/>Lock
1783            </td>
1784            <td class="entry_type">
1785                <span class="entry_type_name entry_type_name_enum">byte</span>
1786
1787              <span class="entry_type_visibility"> [public as boolean]</span>
1788
1789
1790
1791
1792                <ul class="entry_type_enum">
1793                  <li>
1794                    <span class="entry_type_enum_name">OFF</span>
1795                    <span class="entry_type_enum_notes"><p>Autoexposure lock is disabled; the AE algorithm
1796is free to update its parameters.<wbr/></p></span>
1797                  </li>
1798                  <li>
1799                    <span class="entry_type_enum_name">ON</span>
1800                    <span class="entry_type_enum_notes"><p>Autoexposure lock is enabled; the AE algorithm
1801must not update the exposure and sensitivity parameters
1802while the lock is active.<wbr/>
1803<a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
1804will still take effect while auto-exposure is locked.<wbr/></p></span>
1805                  </li>
1806                </ul>
1807
1808            </td> <!-- entry_type -->
1809
1810            <td class="entry_description">
1811              <p>Whether AE is currently locked to its latest
1812calculated values.<wbr/></p>
1813            </td>
1814
1815            <td class="entry_units">
1816            </td>
1817
1818            <td class="entry_range">
1819            </td>
1820
1821            <td class="entry_tags">
1822              <ul class="entry_tags">
1823                  <li><a href="#tag_BC">BC</a></li>
1824              </ul>
1825            </td>
1826
1827          </tr>
1828          <tr class="entries_header">
1829            <th class="th_details" colspan="5">Details</th>
1830          </tr>
1831          <tr class="entry_cont">
1832            <td class="entry_details" colspan="5">
1833              <p>Note that even when AE is locked,<wbr/> the flash may be
1834fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/>
1835ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
1836<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
1837is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
1838<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
1839when AE is already locked,<wbr/> the camera device will not change the exposure time
1840(<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>)
1841parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
1842is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
1843<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>
1844<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>
1845            </td>
1846          </tr>
1847
1848
1849          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1850           <!-- end of entry -->
1851        
1852                
1853          <tr class="entry" id="controls_android.control.aeMode">
1854            <td class="entry_name
1855             " rowspan="3">
1856              android.<wbr/>control.<wbr/>ae<wbr/>Mode
1857            </td>
1858            <td class="entry_type">
1859                <span class="entry_type_name entry_type_name_enum">byte</span>
1860
1861              <span class="entry_type_visibility"> [public]</span>
1862
1863
1864
1865
1866                <ul class="entry_type_enum">
1867                  <li>
1868                    <span class="entry_type_enum_name">OFF</span>
1869                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled;
1870the application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
1871<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
1872<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
1873device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
1874a flash unit for this camera device.<wbr/></p></span>
1875                  </li>
1876                  <li>
1877                    <span class="entry_type_enum_name">ON</span>
1878                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
1879with no flash control.<wbr/> The application's values for
1880<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
1881<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
1882<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
1883application has control over the various
1884android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
1885                  </li>
1886                  <li>
1887                    <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
1888                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
1889the camera's flash unit,<wbr/> firing it in low-light
1890conditions.<wbr/> The flash may be fired during a
1891precapture sequence (triggered by
1892<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and may be fired
1893for captures for which the
1894<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
1895STILL_<wbr/>CAPTURE</p></span>
1896                  </li>
1897                  <li>
1898                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
1899                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
1900the camera's flash unit,<wbr/> always firing it for still
1901captures.<wbr/> The flash may be fired during a precapture
1902sequence (triggered by
1903<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and will always
1904be fired for captures for which the
1905<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
1906STILL_<wbr/>CAPTURE</p></span>
1907                  </li>
1908                  <li>
1909                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
1910                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
1911reduction.<wbr/> If deemed necessary by the camera device,<wbr/>
1912a red eye reduction flash will fire during the
1913precapture sequence.<wbr/></p></span>
1914                  </li>
1915                </ul>
1916
1917            </td> <!-- entry_type -->
1918
1919            <td class="entry_description">
1920              <p>The desired mode for the camera device's
1921auto-exposure routine.<wbr/></p>
1922            </td>
1923
1924            <td class="entry_units">
1925            </td>
1926
1927            <td class="entry_range">
1928              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
1929            </td>
1930
1931            <td class="entry_tags">
1932              <ul class="entry_tags">
1933                  <li><a href="#tag_BC">BC</a></li>
1934              </ul>
1935            </td>
1936
1937          </tr>
1938          <tr class="entries_header">
1939            <th class="th_details" colspan="5">Details</th>
1940          </tr>
1941          <tr class="entry_cont">
1942            <td class="entry_details" colspan="5">
1943              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
1944AUTO.<wbr/></p>
1945<p>When set to any of the ON modes,<wbr/> the camera device's
1946auto-exposure routine is enabled,<wbr/> overriding the
1947application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
1948and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
1949<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
1950<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
1951is selected,<wbr/> the camera device's flash unit controls are
1952also overridden.<wbr/></p>
1953<p>The FLASH modes are only available if the camera device
1954has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
1955<p>If flash TORCH mode is desired,<wbr/> this field must be set to
1956ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
1957<p>When set to any of the ON modes,<wbr/> the values chosen by the
1958camera device auto-exposure routine for the overridden
1959fields for a given capture will be available in its
1960CaptureResult.<wbr/></p>
1961            </td>
1962          </tr>
1963
1964
1965          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1966           <!-- end of entry -->
1967        
1968                
1969          <tr class="entry" id="controls_android.control.aeRegions">
1970            <td class="entry_name
1971             " rowspan="5">
1972              android.<wbr/>control.<wbr/>ae<wbr/>Regions
1973            </td>
1974            <td class="entry_type">
1975                <span class="entry_type_name">int32</span>
1976                <span class="entry_type_container">x</span>
1977
1978                <span class="entry_type_array">
1979                  5 x area_count
1980                </span>
1981              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
1982
1983
1984
1985
1986
1987            </td> <!-- entry_type -->
1988
1989            <td class="entry_description">
1990              <p>List of areas to use for
1991metering.<wbr/></p>
1992            </td>
1993
1994            <td class="entry_units">
1995            </td>
1996
1997            <td class="entry_range">
1998              <p><code>area_<wbr/>count &lt;= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[0]</code></p>
1999            </td>
2000
2001            <td class="entry_tags">
2002              <ul class="entry_tags">
2003                  <li><a href="#tag_BC">BC</a></li>
2004              </ul>
2005            </td>
2006
2007          </tr>
2008          <tr class="entries_header">
2009            <th class="th_details" colspan="5">Details</th>
2010          </tr>
2011          <tr class="entry_cont">
2012            <td class="entry_details" colspan="5">
2013              <p>The coordinate system is based on the active pixel array,<wbr/>
2014with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2015(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2016<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2017bottom-right pixel in the active pixel array.<wbr/></p>
2018<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
2019for every pixel in the area.<wbr/> This means that a large metering area
2020with the same weight as a smaller area will have more effect in
2021the metering result.<wbr/> Metering areas can partially overlap and the
2022camera device will add the weights in the overlap region.<wbr/></p>
2023<p>If all regions have 0 weight,<wbr/> then no specific metering area
2024needs to be used by the camera device.<wbr/> If the metering region is
2025outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in capture result metadata,<wbr/>
2026the camera device will ignore the sections outside the region and output the
2027used sections in the result metadata.<wbr/></p>
2028            </td>
2029          </tr>
2030
2031          <tr class="entries_header">
2032            <th class="th_details" colspan="5">HAL Implementation Details</th>
2033          </tr>
2034          <tr class="entry_cont">
2035            <td class="entry_details" colspan="5">
2036              <p>The HAL level representation of MeteringRectangle[] is a
2037int[5 * area_<wbr/>count].<wbr/>
2038Every five elements represent a metering region of
2039(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2040The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2041exclusive on xmax and ymax.<wbr/></p>
2042            </td>
2043          </tr>
2044
2045          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2046           <!-- end of entry -->
2047        
2048                
2049          <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2050            <td class="entry_name
2051             " rowspan="3">
2052              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2053            </td>
2054            <td class="entry_type">
2055                <span class="entry_type_name">int32</span>
2056                <span class="entry_type_container">x</span>
2057
2058                <span class="entry_type_array">
2059                  2
2060                </span>
2061              <span class="entry_type_visibility"> [public as rangeInt]</span>
2062
2063
2064
2065
2066
2067            </td> <!-- entry_type -->
2068
2069            <td class="entry_description">
2070              <p>Range over which fps can be adjusted to
2071maintain exposure</p>
2072            </td>
2073
2074            <td class="entry_units">
2075            </td>
2076
2077            <td class="entry_range">
2078              <p><a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p>
2079            </td>
2080
2081            <td class="entry_tags">
2082              <ul class="entry_tags">
2083                  <li><a href="#tag_BC">BC</a></li>
2084              </ul>
2085            </td>
2086
2087          </tr>
2088          <tr class="entries_header">
2089            <th class="th_details" colspan="5">Details</th>
2090          </tr>
2091          <tr class="entry_cont">
2092            <td class="entry_details" colspan="5">
2093              <p>Only constrains AE algorithm,<wbr/> not manual control
2094of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></p>
2095            </td>
2096          </tr>
2097
2098
2099          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2100           <!-- end of entry -->
2101        
2102                
2103          <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2104            <td class="entry_name
2105             " rowspan="3">
2106              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2107            </td>
2108            <td class="entry_type">
2109                <span class="entry_type_name entry_type_name_enum">byte</span>
2110
2111              <span class="entry_type_visibility"> [public]</span>
2112
2113
2114
2115
2116                <ul class="entry_type_enum">
2117                  <li>
2118                    <span class="entry_type_enum_name">IDLE</span>
2119                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2120                  </li>
2121                  <li>
2122                    <span class="entry_type_enum_name">START</span>
2123                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2124by the camera device.<wbr/> The exact effect of the precapture
2125trigger depends on the current AE mode and state.<wbr/></p></span>
2126                  </li>
2127                </ul>
2128
2129            </td> <!-- entry_type -->
2130
2131            <td class="entry_description">
2132              <p>Whether the camera device will trigger a precapture
2133metering sequence when it processes this request.<wbr/></p>
2134            </td>
2135
2136            <td class="entry_units">
2137            </td>
2138
2139            <td class="entry_range">
2140            </td>
2141
2142            <td class="entry_tags">
2143              <ul class="entry_tags">
2144                  <li><a href="#tag_BC">BC</a></li>
2145              </ul>
2146            </td>
2147
2148          </tr>
2149          <tr class="entries_header">
2150            <th class="th_details" colspan="5">Details</th>
2151          </tr>
2152          <tr class="entry_cont">
2153            <td class="entry_details" colspan="5">
2154              <p>This entry is normally set to IDLE,<wbr/> or is not
2155included at all in the request settings.<wbr/> When included and
2156set to START,<wbr/> the camera device will trigger the autoexposure
2157precapture metering sequence.<wbr/></p>
2158<p>The effect of AE precapture trigger depends on the current
2159AE mode and state; see <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture
2160state transition details.<wbr/></p>
2161            </td>
2162          </tr>
2163
2164
2165          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2166           <!-- end of entry -->
2167        
2168                
2169          <tr class="entry" id="controls_android.control.afMode">
2170            <td class="entry_name
2171             " rowspan="5">
2172              android.<wbr/>control.<wbr/>af<wbr/>Mode
2173            </td>
2174            <td class="entry_type">
2175                <span class="entry_type_name entry_type_name_enum">byte</span>
2176
2177              <span class="entry_type_visibility"> [public]</span>
2178
2179
2180
2181
2182                <ul class="entry_type_enum">
2183                  <li>
2184                    <span class="entry_type_enum_name">OFF</span>
2185                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2186<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2187application</p></span>
2188                  </li>
2189                  <li>
2190                    <span class="entry_type_enum_name">AUTO</span>
2191                    <span class="entry_type_enum_notes"><p>If lens is not fixed focus.<wbr/></p>
2192<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
2193is fixed-focus.<wbr/> In this mode,<wbr/> the lens does not move unless
2194the autofocus trigger action is called.<wbr/> When that trigger
2195is activated,<wbr/> AF must transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2196the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2197<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2198and sets the AF state to INACTIVE.<wbr/></p></span>
2199                  </li>
2200                  <li>
2201                    <span class="entry_type_enum_name">MACRO</span>
2202                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the lens does not move unless the
2203autofocus trigger action is called.<wbr/></p>
2204<p>When that trigger is activated,<wbr/> AF must transition to
2205ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2206NOT_<wbr/>FOCUSED).<wbr/>  Triggering cancel AF resets the lens
2207position to default,<wbr/> and sets the AF state to
2208INACTIVE.<wbr/></p></span>
2209                  </li>
2210                  <li>
2211                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
2212                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2213position continually to attempt to provide a
2214constantly-in-focus image stream.<wbr/></p>
2215<p>The focusing behavior should be suitable for good quality
2216video recording; typically this means slower focus
2217movement and no overshoots.<wbr/> When the AF trigger is not
2218involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2219and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2220states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2221the algorithm should immediately transition into
2222AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2223lens position until a cancel AF trigger is received.<wbr/></p>
2224<p>Once cancel is received,<wbr/> the algorithm should transition
2225back to INACTIVE and resume passive scan.<wbr/> Note that this
2226behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2227ongoing PASSIVE_<wbr/>SCAN must immediately be
2228canceled.<wbr/></p></span>
2229                  </li>
2230                  <li>
2231                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
2232                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2233position continually to attempt to provide a
2234constantly-in-focus image stream.<wbr/></p>
2235<p>The focusing behavior should be suitable for still image
2236capture; typically this means focusing as fast as
2237possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2238algorithm should start in INACTIVE state,<wbr/> and then
2239transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2240appropriate as it attempts to maintain focus.<wbr/> When the AF
2241trigger is activated,<wbr/> the algorithm should finish its
2242PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2243AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2244lens position until a cancel AF trigger is received.<wbr/></p>
2245<p>When the AF cancel trigger is activated,<wbr/> the algorithm
2246should transition back to INACTIVE and then act as if it
2247has just been started.<wbr/></p></span>
2248                  </li>
2249                  <li>
2250                    <span class="entry_type_enum_name">EDOF</span>
2251                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus).<wbr/> AF
2252trigger is ignored,<wbr/> AF state should always be
2253INACTIVE.<wbr/></p></span>
2254                  </li>
2255                </ul>
2256
2257            </td> <!-- entry_type -->
2258
2259            <td class="entry_description">
2260              <p>Whether AF is currently enabled,<wbr/> and what
2261mode it is set to</p>
2262            </td>
2263
2264            <td class="entry_units">
2265            </td>
2266
2267            <td class="entry_range">
2268              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2269            </td>
2270
2271            <td class="entry_tags">
2272              <ul class="entry_tags">
2273                  <li><a href="#tag_BC">BC</a></li>
2274              </ul>
2275            </td>
2276
2277          </tr>
2278          <tr class="entries_header">
2279            <th class="th_details" colspan="5">Details</th>
2280          </tr>
2281          <tr class="entry_cont">
2282            <td class="entry_details" colspan="5">
2283              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2284(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/></p>
2285<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2286the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2287in result metadata.<wbr/></p>
2288            </td>
2289          </tr>
2290
2291          <tr class="entries_header">
2292            <th class="th_details" colspan="5">HAL Implementation Details</th>
2293          </tr>
2294          <tr class="entry_cont">
2295            <td class="entry_details" colspan="5">
2296              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2297request (<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
2298up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2299<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
2300locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2301after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2302the same focal plane remains in focus.<wbr/></p>
2303<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2304scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2305(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
2306same lock behavior as above.<wbr/></p>
2307<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2308focus 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/>
2309However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2310manual control.<wbr/></p>
2311<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2312camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
2313remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
2314by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
2315that will arise on camera modules with open-loop VCMs.<wbr/></p>
2316            </td>
2317          </tr>
2318
2319          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2320           <!-- end of entry -->
2321        
2322                
2323          <tr class="entry" id="controls_android.control.afRegions">
2324            <td class="entry_name
2325             " rowspan="5">
2326              android.<wbr/>control.<wbr/>af<wbr/>Regions
2327            </td>
2328            <td class="entry_type">
2329                <span class="entry_type_name">int32</span>
2330                <span class="entry_type_container">x</span>
2331
2332                <span class="entry_type_array">
2333                  5 x area_count
2334                </span>
2335              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2336
2337
2338
2339
2340
2341            </td> <!-- entry_type -->
2342
2343            <td class="entry_description">
2344              <p>List of areas to use for focus
2345estimation.<wbr/></p>
2346            </td>
2347
2348            <td class="entry_units">
2349            </td>
2350
2351            <td class="entry_range">
2352              <p><code>area_<wbr/>count &lt;= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[2]</code></p>
2353            </td>
2354
2355            <td class="entry_tags">
2356              <ul class="entry_tags">
2357                  <li><a href="#tag_BC">BC</a></li>
2358              </ul>
2359            </td>
2360
2361          </tr>
2362          <tr class="entries_header">
2363            <th class="th_details" colspan="5">Details</th>
2364          </tr>
2365          <tr class="entry_cont">
2366            <td class="entry_details" colspan="5">
2367              <p>The coordinate system is based on the active pixel array,<wbr/>
2368with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2369(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2370<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2371bottom-right pixel in the active pixel array.<wbr/></p>
2372<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
2373for every pixel in the area.<wbr/> This means that a large metering area
2374with the same weight as a smaller area will have more effect in
2375the metering result.<wbr/> Metering areas can partially overlap and the
2376camera device will add the weights in the overlap region.<wbr/></p>
2377<p>If all regions have 0 weight,<wbr/> then no specific metering area
2378needs to be used by the camera device.<wbr/> If the metering region is
2379outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in capture result metadata,<wbr/>
2380the camera device will ignore the sections outside the region and output the
2381used sections in the result metadata.<wbr/></p>
2382            </td>
2383          </tr>
2384
2385          <tr class="entries_header">
2386            <th class="th_details" colspan="5">HAL Implementation Details</th>
2387          </tr>
2388          <tr class="entry_cont">
2389            <td class="entry_details" colspan="5">
2390              <p>The HAL level representation of MeteringRectangle[] is a
2391int[5 * area_<wbr/>count].<wbr/>
2392Every five elements represent a metering region of
2393(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2394The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2395exclusive on xmax and ymax.<wbr/></p>
2396            </td>
2397          </tr>
2398
2399          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2400           <!-- end of entry -->
2401        
2402                
2403          <tr class="entry" id="controls_android.control.afTrigger">
2404            <td class="entry_name
2405             " rowspan="3">
2406              android.<wbr/>control.<wbr/>af<wbr/>Trigger
2407            </td>
2408            <td class="entry_type">
2409                <span class="entry_type_name entry_type_name_enum">byte</span>
2410
2411              <span class="entry_type_visibility"> [public]</span>
2412
2413
2414
2415
2416                <ul class="entry_type_enum">
2417                  <li>
2418                    <span class="entry_type_enum_name">IDLE</span>
2419                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2420                  </li>
2421                  <li>
2422                    <span class="entry_type_enum_name">START</span>
2423                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
2424                  </li>
2425                  <li>
2426                    <span class="entry_type_enum_name">CANCEL</span>
2427                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
2428state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
2429                  </li>
2430                </ul>
2431
2432            </td> <!-- entry_type -->
2433
2434            <td class="entry_description">
2435              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
2436            </td>
2437
2438            <td class="entry_units">
2439            </td>
2440
2441            <td class="entry_range">
2442            </td>
2443
2444            <td class="entry_tags">
2445              <ul class="entry_tags">
2446                  <li><a href="#tag_BC">BC</a></li>
2447              </ul>
2448            </td>
2449
2450          </tr>
2451          <tr class="entries_header">
2452            <th class="th_details" colspan="5">Details</th>
2453          </tr>
2454          <tr class="entry_cont">
2455            <td class="entry_details" colspan="5">
2456              <p>This entry is normally set to IDLE,<wbr/> or is not
2457included at all in the request settings.<wbr/></p>
2458<p>When included and set to START,<wbr/> the camera device will trigger the
2459autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
2460<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
2461and return to its initial AF state.<wbr/></p>
2462<p>See <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for what that means for each AF mode.<wbr/></p>
2463            </td>
2464          </tr>
2465
2466
2467          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2468           <!-- end of entry -->
2469        
2470                
2471          <tr class="entry" id="controls_android.control.awbLock">
2472            <td class="entry_name
2473             " rowspan="3">
2474              android.<wbr/>control.<wbr/>awb<wbr/>Lock
2475            </td>
2476            <td class="entry_type">
2477                <span class="entry_type_name entry_type_name_enum">byte</span>
2478
2479              <span class="entry_type_visibility"> [public as boolean]</span>
2480
2481
2482
2483
2484                <ul class="entry_type_enum">
2485                  <li>
2486                    <span class="entry_type_enum_name">OFF</span>
2487                    <span class="entry_type_enum_notes"><p>Auto-whitebalance lock is disabled; the AWB
2488algorithm is free to update its parameters if in AUTO
2489mode.<wbr/></p></span>
2490                  </li>
2491                  <li>
2492                    <span class="entry_type_enum_name">ON</span>
2493                    <span class="entry_type_enum_notes"><p>Auto-whitebalance lock is enabled; the AWB
2494algorithm must not update its parameters while the lock
2495is active.<wbr/></p></span>
2496                  </li>
2497                </ul>
2498
2499            </td> <!-- entry_type -->
2500
2501            <td class="entry_description">
2502              <p>Whether AWB is currently locked to its
2503latest calculated values.<wbr/></p>
2504            </td>
2505
2506            <td class="entry_units">
2507            </td>
2508
2509            <td class="entry_range">
2510            </td>
2511
2512            <td class="entry_tags">
2513              <ul class="entry_tags">
2514                  <li><a href="#tag_BC">BC</a></li>
2515              </ul>
2516            </td>
2517
2518          </tr>
2519          <tr class="entries_header">
2520            <th class="th_details" colspan="5">Details</th>
2521          </tr>
2522          <tr class="entry_cont">
2523            <td class="entry_details" colspan="5">
2524              <p>Note that AWB lock is only meaningful for AUTO
2525mode; in other modes,<wbr/> AWB is already fixed to a specific
2526setting.<wbr/></p>
2527            </td>
2528          </tr>
2529
2530
2531          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2532           <!-- end of entry -->
2533        
2534                
2535          <tr class="entry" id="controls_android.control.awbMode">
2536            <td class="entry_name
2537             " rowspan="3">
2538              android.<wbr/>control.<wbr/>awb<wbr/>Mode
2539            </td>
2540            <td class="entry_type">
2541                <span class="entry_type_name entry_type_name_enum">byte</span>
2542
2543              <span class="entry_type_visibility"> [public]</span>
2544
2545
2546
2547
2548                <ul class="entry_type_enum">
2549                  <li>
2550                    <span class="entry_type_enum_name">OFF</span>
2551                    <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled;
2552the application-selected color transform matrix
2553(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
2554(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
2555device for manual white balance control.<wbr/></p></span>
2556                  </li>
2557                  <li>
2558                    <span class="entry_type_enum_name">AUTO</span>
2559                    <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is active;
2560the application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
2561and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/></p></span>
2562                  </li>
2563                  <li>
2564                    <span class="entry_type_enum_name">INCANDESCENT</span>
2565                    <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled;
2566the camera device uses incandescent light as the assumed scene
2567illumination for white balance.<wbr/> While the exact white balance
2568transforms are up to the camera device,<wbr/> they will approximately
2569match the CIE standard illuminant A.<wbr/></p></span>
2570                  </li>
2571                  <li>
2572                    <span class="entry_type_enum_name">FLUORESCENT</span>
2573                    <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled;
2574the camera device uses fluorescent light as the assumed scene
2575illumination for white balance.<wbr/> While the exact white balance
2576transforms are up to the camera device,<wbr/> they will approximately
2577match the CIE standard illuminant F2.<wbr/></p></span>
2578                  </li>
2579                  <li>
2580                    <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
2581                    <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled;
2582the camera device uses warm fluorescent light as the assumed scene
2583illumination for white balance.<wbr/> While the exact white balance
2584transforms are up to the camera device,<wbr/> they will approximately
2585match the CIE standard illuminant F4.<wbr/></p></span>
2586                  </li>
2587                  <li>
2588                    <span class="entry_type_enum_name">DAYLIGHT</span>
2589                    <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled;
2590the camera device uses daylight light as the assumed scene
2591illumination for white balance.<wbr/> While the exact white balance
2592transforms are up to the camera device,<wbr/> they will approximately
2593match the CIE standard illuminant D65.<wbr/></p></span>
2594                  </li>
2595                  <li>
2596                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
2597                    <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled;
2598the camera device uses cloudy daylight light as the assumed scene
2599illumination for white balance.<wbr/></p></span>
2600                  </li>
2601                  <li>
2602                    <span class="entry_type_enum_name">TWILIGHT</span>
2603                    <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled;
2604the camera device uses twilight light as the assumed scene
2605illumination for white balance.<wbr/></p></span>
2606                  </li>
2607                  <li>
2608                    <span class="entry_type_enum_name">SHADE</span>
2609                    <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled;
2610the camera device uses shade light as the assumed scene
2611illumination for white balance.<wbr/></p></span>
2612                  </li>
2613                </ul>
2614
2615            </td> <!-- entry_type -->
2616
2617            <td class="entry_description">
2618              <p>Whether AWB is currently setting the color
2619transform fields,<wbr/> and what its illumination target
2620is.<wbr/></p>
2621            </td>
2622
2623            <td class="entry_units">
2624            </td>
2625
2626            <td class="entry_range">
2627              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
2628            </td>
2629
2630            <td class="entry_tags">
2631              <ul class="entry_tags">
2632                  <li><a href="#tag_BC">BC</a></li>
2633              </ul>
2634            </td>
2635
2636          </tr>
2637          <tr class="entries_header">
2638            <th class="th_details" colspan="5">Details</th>
2639          </tr>
2640          <tr class="entry_cont">
2641            <td class="entry_details" colspan="5">
2642              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
2643<p>When set to the ON mode,<wbr/> the camera device's auto white balance
2644routine is enabled,<wbr/> overriding the application's selected
2645<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
2646<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
2647<p>When set to the OFF mode,<wbr/> the camera device's auto white balance
2648routine is disabled.<wbr/> The application manually controls the white
2649balance 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>
2650and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
2651<p>When set to any other modes,<wbr/> the camera device's auto white balance
2652routine is disabled.<wbr/> The camera device uses each particular illumination
2653target for white balance adjustment.<wbr/></p>
2654            </td>
2655          </tr>
2656
2657
2658          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2659           <!-- end of entry -->
2660        
2661                
2662          <tr class="entry" id="controls_android.control.awbRegions">
2663            <td class="entry_name
2664             " rowspan="5">
2665              android.<wbr/>control.<wbr/>awb<wbr/>Regions
2666            </td>
2667            <td class="entry_type">
2668                <span class="entry_type_name">int32</span>
2669                <span class="entry_type_container">x</span>
2670
2671                <span class="entry_type_array">
2672                  5 x area_count
2673                </span>
2674              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2675
2676
2677
2678
2679
2680            </td> <!-- entry_type -->
2681
2682            <td class="entry_description">
2683              <p>List of areas to use for illuminant
2684estimation.<wbr/></p>
2685            </td>
2686
2687            <td class="entry_units">
2688            </td>
2689
2690            <td class="entry_range">
2691              <p><code>area_<wbr/>count &lt;= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[1]</code></p>
2692            </td>
2693
2694            <td class="entry_tags">
2695              <ul class="entry_tags">
2696                  <li><a href="#tag_BC">BC</a></li>
2697              </ul>
2698            </td>
2699
2700          </tr>
2701          <tr class="entries_header">
2702            <th class="th_details" colspan="5">Details</th>
2703          </tr>
2704          <tr class="entry_cont">
2705            <td class="entry_details" colspan="5">
2706              <p>The coordinate system is based on the active pixel array,<wbr/>
2707with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2708(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2709<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2710bottom-right pixel in the active pixel array.<wbr/></p>
2711<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
2712for every pixel in the area.<wbr/> This means that a large metering area
2713with the same weight as a smaller area will have more effect in
2714the metering result.<wbr/> Metering areas can partially overlap and the
2715camera device will add the weights in the overlap region.<wbr/></p>
2716<p>If all regions have 0 weight,<wbr/> then no specific metering area
2717needs to be used by the camera device.<wbr/> If the metering region is
2718outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in capture result metadata,<wbr/>
2719the camera device will ignore the sections outside the region and output the
2720used sections in the result metadata.<wbr/></p>
2721            </td>
2722          </tr>
2723
2724          <tr class="entries_header">
2725            <th class="th_details" colspan="5">HAL Implementation Details</th>
2726          </tr>
2727          <tr class="entry_cont">
2728            <td class="entry_details" colspan="5">
2729              <p>The HAL level representation of MeteringRectangle[] is a
2730int[5 * area_<wbr/>count].<wbr/>
2731Every five elements represent a metering region of
2732(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2733The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2734exclusive on xmax and ymax.<wbr/></p>
2735            </td>
2736          </tr>
2737
2738          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2739           <!-- end of entry -->
2740        
2741                
2742          <tr class="entry" id="controls_android.control.captureIntent">
2743            <td class="entry_name
2744             " rowspan="3">
2745              android.<wbr/>control.<wbr/>capture<wbr/>Intent
2746            </td>
2747            <td class="entry_type">
2748                <span class="entry_type_name entry_type_name_enum">byte</span>
2749
2750              <span class="entry_type_visibility"> [public]</span>
2751
2752
2753
2754
2755                <ul class="entry_type_enum">
2756                  <li>
2757                    <span class="entry_type_enum_name">CUSTOM</span>
2758                    <span class="entry_type_enum_notes"><p>This request doesn't fall into the other
2759categories.<wbr/> Default to preview-like
2760behavior.<wbr/></p></span>
2761                  </li>
2762                  <li>
2763                    <span class="entry_type_enum_name">PREVIEW</span>
2764                    <span class="entry_type_enum_notes"><p>This request is for a preview-like usecase.<wbr/> The
2765precapture trigger may be used to start off a metering
2766w/<wbr/>flash sequence</p></span>
2767                  </li>
2768                  <li>
2769                    <span class="entry_type_enum_name">STILL_CAPTURE</span>
2770                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
2771usecase.<wbr/></p></span>
2772                  </li>
2773                  <li>
2774                    <span class="entry_type_enum_name">VIDEO_RECORD</span>
2775                    <span class="entry_type_enum_notes"><p>This request is for a video recording
2776usecase.<wbr/></p></span>
2777                  </li>
2778                  <li>
2779                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
2780                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
2781image while recording video) usecase</p></span>
2782                  </li>
2783                  <li>
2784                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
2785                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
2786application will stream full-resolution images and
2787reprocess one or several later for a final
2788capture</p></span>
2789                  </li>
2790                  <li>
2791                    <span class="entry_type_enum_name">MANUAL</span>
2792                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
2793the applications want to directly control the capture parameters
2794(e.<wbr/>g.<wbr/> <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> etc.<wbr/>).<wbr/></p></span>
2795                  </li>
2796                </ul>
2797
2798            </td> <!-- entry_type -->
2799
2800            <td class="entry_description">
2801              <p>Information to the camera device 3A (auto-exposure,<wbr/>
2802auto-focus,<wbr/> auto-white balance) routines about the purpose
2803of this capture,<wbr/> to help the camera device to decide optimal 3A
2804strategy.<wbr/></p>
2805            </td>
2806
2807            <td class="entry_units">
2808            </td>
2809
2810            <td class="entry_range">
2811              <p>All must be supported except for ZERO_<wbr/>SHUTTER_<wbr/>LAG and MANUAL.<wbr/></p>
2812            </td>
2813
2814            <td class="entry_tags">
2815              <ul class="entry_tags">
2816                  <li><a href="#tag_BC">BC</a></li>
2817              </ul>
2818            </td>
2819
2820          </tr>
2821          <tr class="entries_header">
2822            <th class="th_details" colspan="5">Details</th>
2823          </tr>
2824          <tr class="entry_cont">
2825            <td class="entry_details" colspan="5">
2826              <p>This control (except for MANUAL) is only effective if
2827<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
2828<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG must be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
2829contains ZSL.<wbr/> MANUAL must be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
2830contains MANUAL_<wbr/>SENSOR.<wbr/></p>
2831            </td>
2832          </tr>
2833
2834
2835          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2836           <!-- end of entry -->
2837        
2838                
2839          <tr class="entry" id="controls_android.control.effectMode">
2840            <td class="entry_name
2841             " rowspan="3">
2842              android.<wbr/>control.<wbr/>effect<wbr/>Mode
2843            </td>
2844            <td class="entry_type">
2845                <span class="entry_type_name entry_type_name_enum">byte</span>
2846
2847              <span class="entry_type_visibility"> [public]</span>
2848
2849
2850
2851
2852                <ul class="entry_type_enum">
2853                  <li>
2854                    <span class="entry_type_enum_name">OFF</span>
2855                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
2856                  </li>
2857                  <li>
2858                    <span class="entry_type_enum_name">MONO</span>
2859                    <span class="entry_type_enum_optional">optional</span>
2860                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
2861a single color.<wbr/>  This will typically be grayscale.<wbr/></p></span>
2862                  </li>
2863                  <li>
2864                    <span class="entry_type_enum_name">NEGATIVE</span>
2865                    <span class="entry_type_enum_optional">optional</span>
2866                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
2867are inverted.<wbr/></p></span>
2868                  </li>
2869                  <li>
2870                    <span class="entry_type_enum_name">SOLARIZE</span>
2871                    <span class="entry_type_enum_optional">optional</span>
2872                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
2873image is wholly or partially reversed in
2874tone.<wbr/></p></span>
2875                  </li>
2876                  <li>
2877                    <span class="entry_type_enum_name">SEPIA</span>
2878                    <span class="entry_type_enum_optional">optional</span>
2879                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
2880gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
2881                  </li>
2882                  <li>
2883                    <span class="entry_type_enum_name">POSTERIZE</span>
2884                    <span class="entry_type_enum_optional">optional</span>
2885                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
2886discrete regions of tone rather than a continuous
2887gradient of tones.<wbr/></p></span>
2888                  </li>
2889                  <li>
2890                    <span class="entry_type_enum_name">WHITEBOARD</span>
2891                    <span class="entry_type_enum_optional">optional</span>
2892                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
2893as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
2894                  </li>
2895                  <li>
2896                    <span class="entry_type_enum_name">BLACKBOARD</span>
2897                    <span class="entry_type_enum_optional">optional</span>
2898                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
2899as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
2900                  </li>
2901                  <li>
2902                    <span class="entry_type_enum_name">AQUA</span>
2903                    <span class="entry_type_enum_optional">optional</span>
2904                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
2905                  </li>
2906                </ul>
2907
2908            </td> <!-- entry_type -->
2909
2910            <td class="entry_description">
2911              <p>A special color effect to apply.<wbr/></p>
2912            </td>
2913
2914            <td class="entry_units">
2915            </td>
2916
2917            <td class="entry_range">
2918              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
2919            </td>
2920
2921            <td class="entry_tags">
2922              <ul class="entry_tags">
2923                  <li><a href="#tag_BC">BC</a></li>
2924              </ul>
2925            </td>
2926
2927          </tr>
2928          <tr class="entries_header">
2929            <th class="th_details" colspan="5">Details</th>
2930          </tr>
2931          <tr class="entry_cont">
2932            <td class="entry_details" colspan="5">
2933              <p>When this mode is set,<wbr/> a color effect will be applied
2934to images produced by the camera device.<wbr/> The interpretation
2935and implementation of these color effects is left to the
2936implementor of the camera device,<wbr/> and should not be
2937depended on to be consistent (or present) across all
2938devices.<wbr/></p>
2939<p>A color effect will only be applied if
2940<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/></p>
2941            </td>
2942          </tr>
2943
2944
2945          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2946           <!-- end of entry -->
2947        
2948                
2949          <tr class="entry" id="controls_android.control.mode">
2950            <td class="entry_name
2951             " rowspan="3">
2952              android.<wbr/>control.<wbr/>mode
2953            </td>
2954            <td class="entry_type">
2955                <span class="entry_type_name entry_type_name_enum">byte</span>
2956
2957              <span class="entry_type_visibility"> [public]</span>
2958
2959
2960
2961
2962                <ul class="entry_type_enum">
2963                  <li>
2964                    <span class="entry_type_enum_name">OFF</span>
2965                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/> All 3A
2966routines are disabled,<wbr/> no other settings in
2967android.<wbr/>control.<wbr/>* have any effect</p></span>
2968                  </li>
2969                  <li>
2970                    <span class="entry_type_enum_name">AUTO</span>
2971                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/>
2972Manual control of capture parameters is disabled.<wbr/> All
2973controls in android.<wbr/>control.<wbr/>* besides sceneMode take
2974effect</p></span>
2975                  </li>
2976                  <li>
2977                    <span class="entry_type_enum_name">USE_SCENE_MODE</span>
2978                    <span class="entry_type_enum_notes"><p>Use specific scene mode.<wbr/> Enabling this disables
2979control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and control.<wbr/>afMode
2980controls; the camera device will ignore those settings while
2981USE_<wbr/>SCENE_<wbr/>MODE is active (except for FACE_<wbr/>PRIORITY
2982scene mode).<wbr/> Other control entries are still active.<wbr/>
2983This setting can only be used if scene mode is supported
2984(i.<wbr/>e.<wbr/> <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> contain some modes
2985other than DISABLED).<wbr/></p></span>
2986                  </li>
2987                  <li>
2988                    <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
2989                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
2990used by camera device background auto-exposure,<wbr/> auto-white balance and
2991auto-focus algorithms to update their statistics.<wbr/></p></span>
2992                  </li>
2993                </ul>
2994
2995            </td> <!-- entry_type -->
2996
2997            <td class="entry_description">
2998              <p>Overall mode of 3A control
2999routines.<wbr/></p>
3000            </td>
3001
3002            <td class="entry_units">
3003            </td>
3004
3005            <td class="entry_range">
3006              <p>all must be supported</p>
3007            </td>
3008
3009            <td class="entry_tags">
3010              <ul class="entry_tags">
3011                  <li><a href="#tag_BC">BC</a></li>
3012              </ul>
3013            </td>
3014
3015          </tr>
3016          <tr class="entries_header">
3017            <th class="th_details" colspan="5">Details</th>
3018          </tr>
3019          <tr class="entry_cont">
3020            <td class="entry_details" colspan="5">
3021              <p>High-level 3A control.<wbr/> When set to OFF,<wbr/> all 3A control
3022by the camera device is disabled.<wbr/> The application must set the fields for
3023capture parameters itself.<wbr/></p>
3024<p>When set to AUTO,<wbr/> the individual algorithm controls in
3025android.<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>
3026<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3027android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
3028one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
3029as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
3030<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
3031<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3032is that this frame will not be used by camera device background 3A statistics
3033update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3034where the application doesn't want a 3A manual control capture to affect
3035the subsequent auto 3A capture results.<wbr/></p>
3036            </td>
3037          </tr>
3038
3039
3040          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3041           <!-- end of entry -->
3042        
3043                
3044          <tr class="entry" id="controls_android.control.sceneMode">
3045            <td class="entry_name
3046             " rowspan="5">
3047              android.<wbr/>control.<wbr/>scene<wbr/>Mode
3048            </td>
3049            <td class="entry_type">
3050                <span class="entry_type_name entry_type_name_enum">byte</span>
3051
3052              <span class="entry_type_visibility"> [public]</span>
3053
3054
3055
3056
3057                <ul class="entry_type_enum">
3058                  <li>
3059                    <span class="entry_type_enum_name">DISABLED</span>
3060                    <span class="entry_type_enum_value">0</span>
3061                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3062                  </li>
3063                  <li>
3064                    <span class="entry_type_enum_name">FACE_PRIORITY</span>
3065                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3066detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3067auto-exposure routines.<wbr/> If face detection statistics are
3068disabled (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/>
3069this should still operate correctly (but will not return
3070face detection statistics to the framework).<wbr/></p>
3071<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3072<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>
3073remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3074                  </li>
3075                  <li>
3076                    <span class="entry_type_enum_name">ACTION</span>
3077                    <span class="entry_type_enum_optional">optional</span>
3078                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/>
3079Similar to SPORTS.<wbr/></p></span>
3080                  </li>
3081                  <li>
3082                    <span class="entry_type_enum_name">PORTRAIT</span>
3083                    <span class="entry_type_enum_optional">optional</span>
3084                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3085                  </li>
3086                  <li>
3087                    <span class="entry_type_enum_name">LANDSCAPE</span>
3088                    <span class="entry_type_enum_optional">optional</span>
3089                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3090                  </li>
3091                  <li>
3092                    <span class="entry_type_enum_name">NIGHT</span>
3093                    <span class="entry_type_enum_optional">optional</span>
3094                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3095                  </li>
3096                  <li>
3097                    <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
3098                    <span class="entry_type_enum_optional">optional</span>
3099                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3100settings.<wbr/></p></span>
3101                  </li>
3102                  <li>
3103                    <span class="entry_type_enum_name">THEATRE</span>
3104                    <span class="entry_type_enum_optional">optional</span>
3105                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3106remain off.<wbr/></p></span>
3107                  </li>
3108                  <li>
3109                    <span class="entry_type_enum_name">BEACH</span>
3110                    <span class="entry_type_enum_optional">optional</span>
3111                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3112                  </li>
3113                  <li>
3114                    <span class="entry_type_enum_name">SNOW</span>
3115                    <span class="entry_type_enum_optional">optional</span>
3116                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3117                  </li>
3118                  <li>
3119                    <span class="entry_type_enum_name">SUNSET</span>
3120                    <span class="entry_type_enum_optional">optional</span>
3121                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3122                  </li>
3123                  <li>
3124                    <span class="entry_type_enum_name">STEADYPHOTO</span>
3125                    <span class="entry_type_enum_optional">optional</span>
3126                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
3127device motion (for example: due to hand shake).<wbr/></p></span>
3128                  </li>
3129                  <li>
3130                    <span class="entry_type_enum_name">FIREWORKS</span>
3131                    <span class="entry_type_enum_optional">optional</span>
3132                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
3133                  </li>
3134                  <li>
3135                    <span class="entry_type_enum_name">SPORTS</span>
3136                    <span class="entry_type_enum_optional">optional</span>
3137                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/>
3138Similar to ACTION.<wbr/></p></span>
3139                  </li>
3140                  <li>
3141                    <span class="entry_type_enum_name">PARTY</span>
3142                    <span class="entry_type_enum_optional">optional</span>
3143                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
3144people.<wbr/></p></span>
3145                  </li>
3146                  <li>
3147                    <span class="entry_type_enum_name">CANDLELIGHT</span>
3148                    <span class="entry_type_enum_optional">optional</span>
3149                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
3150is a flame.<wbr/></p></span>
3151                  </li>
3152                  <li>
3153                    <span class="entry_type_enum_name">BARCODE</span>
3154                    <span class="entry_type_enum_optional">optional</span>
3155                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
3156for use by camera applications that wish to read the
3157barcode value.<wbr/></p></span>
3158                  </li>
3159                </ul>
3160
3161            </td> <!-- entry_type -->
3162
3163            <td class="entry_description">
3164              <p>A camera mode optimized for conditions typical in a particular
3165capture setting.<wbr/></p>
3166            </td>
3167
3168            <td class="entry_units">
3169            </td>
3170
3171            <td class="entry_range">
3172              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
3173            </td>
3174
3175            <td class="entry_tags">
3176              <ul class="entry_tags">
3177                  <li><a href="#tag_BC">BC</a></li>
3178              </ul>
3179            </td>
3180
3181          </tr>
3182          <tr class="entries_header">
3183            <th class="th_details" colspan="5">Details</th>
3184          </tr>
3185          <tr class="entry_cont">
3186            <td class="entry_details" colspan="5">
3187              <p>This is the mode that that is active when
3188<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/>
3189these modes will disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3190<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>
3191<p>The interpretation and implementation of these scene modes is left
3192to the implementor of the camera device.<wbr/> Their behavior will not be
3193consistent across all devices,<wbr/> and any given device may only implement
3194a subset of these modes.<wbr/></p>
3195            </td>
3196          </tr>
3197
3198          <tr class="entries_header">
3199            <th class="th_details" colspan="5">HAL Implementation Details</th>
3200          </tr>
3201          <tr class="entry_cont">
3202            <td class="entry_details" colspan="5">
3203              <p>HAL implementations that include scene modes are expected to provide
3204the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3205<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
3206<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<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.videoStabilizationMode">
3215            <td class="entry_name
3216             " rowspan="3">
3217              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
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
3226
3227                <ul class="entry_type_enum">
3228                  <li>
3229                    <span class="entry_type_enum_name">OFF</span>
3230                  </li>
3231                  <li>
3232                    <span class="entry_type_enum_name">ON</span>
3233                  </li>
3234                </ul>
3235
3236            </td> <!-- entry_type -->
3237
3238            <td class="entry_description">
3239              <p>Whether video stabilization is
3240active</p>
3241            </td>
3242
3243            <td class="entry_units">
3244            </td>
3245
3246            <td class="entry_range">
3247            </td>
3248
3249            <td class="entry_tags">
3250              <ul class="entry_tags">
3251                  <li><a href="#tag_BC">BC</a></li>
3252              </ul>
3253            </td>
3254
3255          </tr>
3256          <tr class="entries_header">
3257            <th class="th_details" colspan="5">Details</th>
3258          </tr>
3259          <tr class="entry_cont">
3260            <td class="entry_details" colspan="5">
3261              <p>If enabled,<wbr/> video stabilization can modify the
3262<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream
3263stabilized</p>
3264            </td>
3265          </tr>
3266
3267
3268          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3269           <!-- end of entry -->
3270        
3271        
3272
3273      <!-- end of kind -->
3274      </tbody>
3275      <tr><td colspan="6" class="kind">static</td></tr>
3276
3277      <thead class="entries_header">
3278        <tr>
3279          <th class="th_name">Property Name</th>
3280          <th class="th_type">Type</th>
3281          <th class="th_description">Description</th>
3282          <th class="th_units">Units</th>
3283          <th class="th_range">Range</th>
3284          <th class="th_tags">Tags</th>
3285        </tr>
3286      </thead>
3287
3288      <tbody>
3289
3290        
3291
3292        
3293
3294        
3295
3296        
3297
3298                
3299          <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
3300            <td class="entry_name
3301             " rowspan="3">
3302              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
3303            </td>
3304            <td class="entry_type">
3305                <span class="entry_type_name">byte</span>
3306                <span class="entry_type_container">x</span>
3307
3308                <span class="entry_type_array">
3309                  n
3310                </span>
3311              <span class="entry_type_visibility"> [public as enumList]</span>
3312
3313
3314
3315                <div class="entry_type_notes">list of enums</div>
3316
3317
3318            </td> <!-- entry_type -->
3319
3320            <td class="entry_description">
3321              <p>The set of auto-exposure antibanding modes that are
3322supported by this camera device.<wbr/></p>
3323            </td>
3324
3325            <td class="entry_units">
3326            </td>
3327
3328            <td class="entry_range">
3329            </td>
3330
3331            <td class="entry_tags">
3332              <ul class="entry_tags">
3333                  <li><a href="#tag_BC">BC</a></li>
3334              </ul>
3335            </td>
3336
3337          </tr>
3338          <tr class="entries_header">
3339            <th class="th_details" colspan="5">Details</th>
3340          </tr>
3341          <tr class="entry_cont">
3342            <td class="entry_details" colspan="5">
3343              <p>Not all of the auto-exposure anti-banding modes may be
3344supported by a given camera device.<wbr/> This field lists the
3345valid anti-banding modes that the application may request
3346for this camera device; they must include AUTO.<wbr/></p>
3347            </td>
3348          </tr>
3349
3350
3351          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3352           <!-- end of entry -->
3353        
3354                
3355          <tr class="entry" id="static_android.control.aeAvailableModes">
3356            <td class="entry_name
3357             " rowspan="3">
3358              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
3359            </td>
3360            <td class="entry_type">
3361                <span class="entry_type_name">byte</span>
3362                <span class="entry_type_container">x</span>
3363
3364                <span class="entry_type_array">
3365                  n
3366                </span>
3367              <span class="entry_type_visibility"> [public as enumList]</span>
3368
3369
3370
3371                <div class="entry_type_notes">list of enums</div>
3372
3373
3374            </td> <!-- entry_type -->
3375
3376            <td class="entry_description">
3377              <p>The set of auto-exposure modes that are supported by this
3378camera device.<wbr/></p>
3379            </td>
3380
3381            <td class="entry_units">
3382            </td>
3383
3384            <td class="entry_range">
3385            </td>
3386
3387            <td class="entry_tags">
3388              <ul class="entry_tags">
3389                  <li><a href="#tag_BC">BC</a></li>
3390              </ul>
3391            </td>
3392
3393          </tr>
3394          <tr class="entries_header">
3395            <th class="th_details" colspan="5">Details</th>
3396          </tr>
3397          <tr class="entry_cont">
3398            <td class="entry_details" colspan="5">
3399              <p>Not all the auto-exposure modes may be supported by a
3400given camera device,<wbr/> especially if no flash unit is
3401available.<wbr/> This entry lists the valid modes for
3402<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
3403<p>All camera devices support ON,<wbr/> and all camera devices with
3404flash units support ON_<wbr/>AUTO_<wbr/>FLASH and
3405ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
3406<p>FULL mode camera devices always support OFF mode,<wbr/>
3407which enables application control of camera exposure time,<wbr/>
3408sensitivity,<wbr/> and frame duration.<wbr/></p>
3409            </td>
3410          </tr>
3411
3412
3413          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3414           <!-- end of entry -->
3415        
3416                
3417          <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
3418            <td class="entry_name
3419             " rowspan="1">
3420              android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
3421            </td>
3422            <td class="entry_type">
3423                <span class="entry_type_name">int32</span>
3424                <span class="entry_type_container">x</span>
3425
3426                <span class="entry_type_array">
3427                  2 x n
3428                </span>
3429              <span class="entry_type_visibility"> [public as rangeInt]</span>
3430
3431
3432
3433                <div class="entry_type_notes">list of pairs of frame rates</div>
3434
3435
3436            </td> <!-- entry_type -->
3437
3438            <td class="entry_description">
3439              <p>List of frame rate ranges supported by the
3440AE algorithm/<wbr/>hardware</p>
3441            </td>
3442
3443            <td class="entry_units">
3444            </td>
3445
3446            <td class="entry_range">
3447            </td>
3448
3449            <td class="entry_tags">
3450              <ul class="entry_tags">
3451                  <li><a href="#tag_BC">BC</a></li>
3452              </ul>
3453            </td>
3454
3455          </tr>
3456
3457
3458          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3459           <!-- end of entry -->
3460        
3461                
3462          <tr class="entry" id="static_android.control.aeCompensationRange">
3463            <td class="entry_name
3464             " rowspan="1">
3465              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
3466            </td>
3467            <td class="entry_type">
3468                <span class="entry_type_name">int32</span>
3469                <span class="entry_type_container">x</span>
3470
3471                <span class="entry_type_array">
3472                  2
3473                </span>
3474              <span class="entry_type_visibility"> [public as rangeInt]</span>
3475
3476
3477
3478
3479
3480            </td> <!-- entry_type -->
3481
3482            <td class="entry_description">
3483              <p>Maximum and minimum exposure compensation
3484setting,<wbr/> in counts of
3485<a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a>.<wbr/></p>
3486            </td>
3487
3488            <td class="entry_units">
3489            </td>
3490
3491            <td class="entry_range">
3492              <p>At least (-2,<wbr/>2)/<wbr/>(exp compensation step
3493size)</p>
3494            </td>
3495
3496            <td class="entry_tags">
3497              <ul class="entry_tags">
3498                  <li><a href="#tag_BC">BC</a></li>
3499              </ul>
3500            </td>
3501
3502          </tr>
3503
3504
3505          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3506           <!-- end of entry -->
3507        
3508                
3509          <tr class="entry" id="static_android.control.aeCompensationStep">
3510            <td class="entry_name
3511             " rowspan="1">
3512              android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
3513            </td>
3514            <td class="entry_type">
3515                <span class="entry_type_name">rational</span>
3516
3517              <span class="entry_type_visibility"> [public]</span>
3518
3519
3520
3521
3522
3523            </td> <!-- entry_type -->
3524
3525            <td class="entry_description">
3526              <p>Smallest step by which exposure compensation
3527can be changed</p>
3528            </td>
3529
3530            <td class="entry_units">
3531            </td>
3532
3533            <td class="entry_range">
3534              <p>&lt;= 1/<wbr/>2</p>
3535            </td>
3536
3537            <td class="entry_tags">
3538              <ul class="entry_tags">
3539                  <li><a href="#tag_BC">BC</a></li>
3540              </ul>
3541            </td>
3542
3543          </tr>
3544
3545
3546          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3547           <!-- end of entry -->
3548        
3549                
3550          <tr class="entry" id="static_android.control.afAvailableModes">
3551            <td class="entry_name
3552             " rowspan="3">
3553              android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
3554            </td>
3555            <td class="entry_type">
3556                <span class="entry_type_name">byte</span>
3557                <span class="entry_type_container">x</span>
3558
3559                <span class="entry_type_array">
3560                  n
3561                </span>
3562              <span class="entry_type_visibility"> [public as enumList]</span>
3563
3564
3565
3566                <div class="entry_type_notes">List of enums</div>
3567
3568
3569            </td> <!-- entry_type -->
3570
3571            <td class="entry_description">
3572              <p>List of AF modes that can be
3573selected with <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p>
3574            </td>
3575
3576            <td class="entry_units">
3577            </td>
3578
3579            <td class="entry_range">
3580            </td>
3581
3582            <td class="entry_tags">
3583              <ul class="entry_tags">
3584                  <li><a href="#tag_BC">BC</a></li>
3585              </ul>
3586            </td>
3587
3588          </tr>
3589          <tr class="entries_header">
3590            <th class="th_details" colspan="5">Details</th>
3591          </tr>
3592          <tr class="entry_cont">
3593            <td class="entry_details" colspan="5">
3594              <p>Not all the auto-focus modes may be supported by a
3595given camera device.<wbr/> This entry lists the valid modes for
3596<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
3597<p>All camera devices will support OFF mode,<wbr/> and all camera devices with
3598adjustable focuser units (<code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> &gt; 0</code>)
3599will support AUTO mode.<wbr/></p>
3600            </td>
3601          </tr>
3602
3603
3604          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3605           <!-- end of entry -->
3606        
3607                
3608          <tr class="entry" id="static_android.control.availableEffects">
3609            <td class="entry_name
3610             " rowspan="3">
3611              android.<wbr/>control.<wbr/>available<wbr/>Effects
3612            </td>
3613            <td class="entry_type">
3614                <span class="entry_type_name">byte</span>
3615                <span class="entry_type_container">x</span>
3616
3617                <span class="entry_type_array">
3618                  n
3619                </span>
3620              <span class="entry_type_visibility"> [public as enumList]</span>
3621
3622
3623
3624                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
3625
3626
3627            </td> <!-- entry_type -->
3628
3629            <td class="entry_description">
3630              <p>List containing the subset of color effects
3631specified in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a> that is supported by
3632this device.<wbr/></p>
3633            </td>
3634
3635            <td class="entry_units">
3636            </td>
3637
3638            <td class="entry_range">
3639              <p>Any subset of enums from those specified in
3640<a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a>.<wbr/>  OFF must be included in any subset.<wbr/></p>
3641            </td>
3642
3643            <td class="entry_tags">
3644              <ul class="entry_tags">
3645                  <li><a href="#tag_BC">BC</a></li>
3646              </ul>
3647            </td>
3648
3649          </tr>
3650          <tr class="entries_header">
3651            <th class="th_details" colspan="5">Details</th>
3652          </tr>
3653          <tr class="entry_cont">
3654            <td class="entry_details" colspan="5">
3655              <p>This list contains the color effect modes that can be applied to
3656images produced by the camera device.<wbr/> Only modes that have
3657been fully implemented for the current device may be included here.<wbr/>
3658Implementations are not expected to be consistent across all devices.<wbr/>
3659If no color effect modes are available for a device,<wbr/> this should
3660simply be set to OFF.<wbr/></p>
3661<p>A color effect will only be applied if
3662<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/></p>
3663            </td>
3664          </tr>
3665
3666
3667          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3668           <!-- end of entry -->
3669        
3670                
3671          <tr class="entry" id="static_android.control.availableSceneModes">
3672            <td class="entry_name
3673             " rowspan="3">
3674              android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
3675            </td>
3676            <td class="entry_type">
3677                <span class="entry_type_name">byte</span>
3678                <span class="entry_type_container">x</span>
3679
3680                <span class="entry_type_array">
3681                  n
3682                </span>
3683              <span class="entry_type_visibility"> [public as enumList]</span>
3684
3685
3686
3687                <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
3688
3689
3690            </td> <!-- entry_type -->
3691
3692            <td class="entry_description">
3693              <p>List containing a subset of scene modes
3694specified in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a>.<wbr/></p>
3695            </td>
3696
3697            <td class="entry_units">
3698            </td>
3699
3700            <td class="entry_range">
3701              <p>Any subset of the enums specified in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a>
3702not including DISABLED,<wbr/> or solely DISABLED if no
3703scene modes are available.<wbr/> FACE_<wbr/>PRIORITY must be included
3704if face detection is supported (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; 0</code>).<wbr/></p>
3705            </td>
3706
3707            <td class="entry_tags">
3708              <ul class="entry_tags">
3709                  <li><a href="#tag_BC">BC</a></li>
3710              </ul>
3711            </td>
3712
3713          </tr>
3714          <tr class="entries_header">
3715            <th class="th_details" colspan="5">Details</th>
3716          </tr>
3717          <tr class="entry_cont">
3718            <td class="entry_details" colspan="5">
3719              <p>This list contains scene modes that can be set for the camera device.<wbr/>
3720Only scene modes that have been fully implemented for the
3721camera device may be included here.<wbr/> Implementations are not expected
3722to be consistent across all devices.<wbr/> If no scene modes are supported
3723by the camera device,<wbr/> this will be set to <code>[DISABLED]</code>.<wbr/></p>
3724            </td>
3725          </tr>
3726
3727
3728          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3729           <!-- end of entry -->
3730        
3731                
3732          <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
3733            <td class="entry_name
3734             " rowspan="1">
3735              android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
3736            </td>
3737            <td class="entry_type">
3738                <span class="entry_type_name">byte</span>
3739                <span class="entry_type_container">x</span>
3740
3741                <span class="entry_type_array">
3742                  n
3743                </span>
3744              <span class="entry_type_visibility"> [public as enumList]</span>
3745
3746
3747
3748                <div class="entry_type_notes">List of enums.<wbr/></div>
3749
3750
3751            </td> <!-- entry_type -->
3752
3753            <td class="entry_description">
3754              <p>List of video stabilization modes that can
3755be supported</p>
3756            </td>
3757
3758            <td class="entry_units">
3759            </td>
3760
3761            <td class="entry_range">
3762              <p>OFF must be included</p>
3763            </td>
3764
3765            <td class="entry_tags">
3766              <ul class="entry_tags">
3767                  <li><a href="#tag_BC">BC</a></li>
3768              </ul>
3769            </td>
3770
3771          </tr>
3772
3773
3774          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3775           <!-- end of entry -->
3776        
3777                
3778          <tr class="entry" id="static_android.control.awbAvailableModes">
3779            <td class="entry_name
3780             " rowspan="3">
3781              android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
3782            </td>
3783            <td class="entry_type">
3784                <span class="entry_type_name">byte</span>
3785                <span class="entry_type_container">x</span>
3786
3787                <span class="entry_type_array">
3788                  n
3789                </span>
3790              <span class="entry_type_visibility"> [public as enumList]</span>
3791
3792
3793
3794                <div class="entry_type_notes">List of enums</div>
3795
3796
3797            </td> <!-- entry_type -->
3798
3799            <td class="entry_description">
3800              <p>The set of auto-white-balance modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)
3801that are supported by this camera device.<wbr/></p>
3802            </td>
3803
3804            <td class="entry_units">
3805            </td>
3806
3807            <td class="entry_range">
3808            </td>
3809
3810            <td class="entry_tags">
3811              <ul class="entry_tags">
3812                  <li><a href="#tag_BC">BC</a></li>
3813              </ul>
3814            </td>
3815
3816          </tr>
3817          <tr class="entries_header">
3818            <th class="th_details" colspan="5">Details</th>
3819          </tr>
3820          <tr class="entry_cont">
3821            <td class="entry_details" colspan="5">
3822              <p>Not all the auto-white-balance modes may be supported by a
3823given camera device.<wbr/> This entry lists the valid modes for
3824<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
3825<p>All camera devices will support ON mode.<wbr/></p>
3826<p>FULL mode camera devices will always support OFF mode,<wbr/>
3827which enables application control of white balance,<wbr/> by using
3828<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/></p>
3829            </td>
3830          </tr>
3831
3832
3833          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3834           <!-- end of entry -->
3835        
3836                
3837          <tr class="entry" id="static_android.control.maxRegions">
3838            <td class="entry_name
3839             " rowspan="1">
3840              android.<wbr/>control.<wbr/>max<wbr/>Regions
3841            </td>
3842            <td class="entry_type">
3843                <span class="entry_type_name">int32</span>
3844                <span class="entry_type_container">x</span>
3845
3846                <span class="entry_type_array">
3847                  3
3848                </span>
3849              <span class="entry_type_visibility"> [hidden]</span>
3850
3851
3852
3853
3854
3855            </td> <!-- entry_type -->
3856
3857            <td class="entry_description">
3858              <p>List of the maximum number of regions that can be used for metering in
3859auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
3860this corresponds to the the maximum number of elements in
3861<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/>
3862and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
3863            </td>
3864
3865            <td class="entry_units">
3866            </td>
3867
3868            <td class="entry_range">
3869              <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
3870this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
3871<code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
3872            </td>
3873
3874            <td class="entry_tags">
3875              <ul class="entry_tags">
3876                  <li><a href="#tag_BC">BC</a></li>
3877              </ul>
3878            </td>
3879
3880          </tr>
3881
3882
3883          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3884           <!-- end of entry -->
3885        
3886                
3887          <tr class="entry" id="static_android.control.maxRegionsAe">
3888            <td class="entry_name
3889             " rowspan="3">
3890              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
3891            </td>
3892            <td class="entry_type">
3893                <span class="entry_type_name">int32</span>
3894
3895              <span class="entry_type_visibility"> [public]</span>
3896
3897              <span class="entry_type_synthetic">[synthetic] </span>
3898
3899
3900
3901
3902            </td> <!-- entry_type -->
3903
3904            <td class="entry_description">
3905              <p>List of the maximum number of regions that can be used for metering in
3906auto-exposure (AE);
3907this corresponds to the the maximum number of elements in
3908<a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
3909            </td>
3910
3911            <td class="entry_units">
3912            </td>
3913
3914            <td class="entry_range">
3915              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
3916value will be &gt;= 1.<wbr/></p>
3917            </td>
3918
3919            <td class="entry_tags">
3920            </td>
3921
3922          </tr>
3923
3924          <tr class="entries_header">
3925            <th class="th_details" colspan="5">HAL Implementation Details</th>
3926          </tr>
3927          <tr class="entry_cont">
3928            <td class="entry_details" colspan="5">
3929              <p>This entry is private to the framework.<wbr/> Fill in
3930maxRegions to have this entry be automatically populated.<wbr/></p>
3931            </td>
3932          </tr>
3933
3934          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3935           <!-- end of entry -->
3936        
3937                
3938          <tr class="entry" id="static_android.control.maxRegionsAwb">
3939            <td class="entry_name
3940             " rowspan="3">
3941              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
3942            </td>
3943            <td class="entry_type">
3944                <span class="entry_type_name">int32</span>
3945
3946              <span class="entry_type_visibility"> [public]</span>
3947
3948              <span class="entry_type_synthetic">[synthetic] </span>
3949
3950
3951
3952
3953            </td> <!-- entry_type -->
3954
3955            <td class="entry_description">
3956              <p>List of the maximum number of regions that can be used for metering in
3957auto-white balance (AWB);
3958this corresponds to the the maximum number of elements in
3959<a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
3960            </td>
3961
3962            <td class="entry_units">
3963            </td>
3964
3965            <td class="entry_range">
3966              <p>Value will be &gt;= 0.<wbr/></p>
3967            </td>
3968
3969            <td class="entry_tags">
3970            </td>
3971
3972          </tr>
3973
3974          <tr class="entries_header">
3975            <th class="th_details" colspan="5">HAL Implementation Details</th>
3976          </tr>
3977          <tr class="entry_cont">
3978            <td class="entry_details" colspan="5">
3979              <p>This entry is private to the framework.<wbr/> Fill in
3980maxRegions to have this entry be automatically populated.<wbr/></p>
3981            </td>
3982          </tr>
3983
3984          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3985           <!-- end of entry -->
3986        
3987                
3988          <tr class="entry" id="static_android.control.maxRegionsAf">
3989            <td class="entry_name
3990             " rowspan="3">
3991              android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
3992            </td>
3993            <td class="entry_type">
3994                <span class="entry_type_name">int32</span>
3995
3996              <span class="entry_type_visibility"> [public]</span>
3997
3998              <span class="entry_type_synthetic">[synthetic] </span>
3999
4000
4001
4002
4003            </td> <!-- entry_type -->
4004
4005            <td class="entry_description">
4006              <p>List of the maximum number of regions that can be used for metering in
4007auto-focus (AF);
4008this corresponds to the the maximum number of elements in
4009<a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
4010            </td>
4011
4012            <td class="entry_units">
4013            </td>
4014
4015            <td class="entry_range">
4016              <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
4017value will be &gt;= 1.<wbr/></p>
4018            </td>
4019
4020            <td class="entry_tags">
4021            </td>
4022
4023          </tr>
4024
4025          <tr class="entries_header">
4026            <th class="th_details" colspan="5">HAL Implementation Details</th>
4027          </tr>
4028          <tr class="entry_cont">
4029            <td class="entry_details" colspan="5">
4030              <p>This entry is private to the framework.<wbr/> Fill in
4031maxRegions to have this entry be automatically populated.<wbr/></p>
4032            </td>
4033          </tr>
4034
4035          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4036           <!-- end of entry -->
4037        
4038                
4039          <tr class="entry" id="static_android.control.sceneModeOverrides">
4040            <td class="entry_name
4041             " rowspan="5">
4042              android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
4043            </td>
4044            <td class="entry_type">
4045                <span class="entry_type_name">byte</span>
4046                <span class="entry_type_container">x</span>
4047
4048                <span class="entry_type_array">
4049                  3 x length(availableSceneModes)
4050                </span>
4051              <span class="entry_type_visibility"> [system]</span>
4052
4053
4054
4055
4056
4057            </td> <!-- entry_type -->
4058
4059            <td class="entry_description">
4060              <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
4061settings to use with each available scene mode.<wbr/></p>
4062            </td>
4063
4064            <td class="entry_units">
4065            </td>
4066
4067            <td class="entry_range">
4068              <p>For each available scene mode,<wbr/> the list must contain three
4069entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4070<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
4071by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
4072where aeMode has the lowest index position.<wbr/></p>
4073            </td>
4074
4075            <td class="entry_tags">
4076              <ul class="entry_tags">
4077                  <li><a href="#tag_BC">BC</a></li>
4078              </ul>
4079            </td>
4080
4081          </tr>
4082          <tr class="entries_header">
4083            <th class="th_details" colspan="5">Details</th>
4084          </tr>
4085          <tr class="entry_cont">
4086            <td class="entry_details" colspan="5">
4087              <p>When a scene mode is enabled,<wbr/> the camera device is expected
4088to 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/>
4089and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
4090that scene mode.<wbr/></p>
4091<p>The order of this list matches that of availableSceneModes,<wbr/>
4092with 3 entries for each mode.<wbr/>  The overrides listed
4093for FACE_<wbr/>PRIORITY are ignored,<wbr/> since for that
4094mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4095<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
4096used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
4097is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY
4098overrides should be set to 0.<wbr/></p>
4099<p>For example,<wbr/> if availableSceneModes contains
4100<code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
4101expects sceneModeOverrides to have 9 entries formatted like:
4102<code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
4103ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
4104            </td>
4105          </tr>
4106
4107          <tr class="entries_header">
4108            <th class="th_details" colspan="5">HAL Implementation Details</th>
4109          </tr>
4110          <tr class="entry_cont">
4111            <td class="entry_details" colspan="5">
4112              <p>To maintain backward compatibility,<wbr/> this list will be made available
4113in the static metadata of the camera service.<wbr/>  The camera service will
4114use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4115<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
4116mode other than FACE_<wbr/>PRIORITY.<wbr/></p>
4117            </td>
4118          </tr>
4119
4120          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4121           <!-- end of entry -->
4122        
4123        
4124
4125      <!-- end of kind -->
4126      </tbody>
4127      <tr><td colspan="6" class="kind">dynamic</td></tr>
4128
4129      <thead class="entries_header">
4130        <tr>
4131          <th class="th_name">Property Name</th>
4132          <th class="th_type">Type</th>
4133          <th class="th_description">Description</th>
4134          <th class="th_units">Units</th>
4135          <th class="th_range">Range</th>
4136          <th class="th_tags">Tags</th>
4137        </tr>
4138      </thead>
4139
4140      <tbody>
4141
4142        
4143
4144        
4145
4146        
4147
4148        
4149
4150                
4151          <tr class="entry" id="dynamic_android.control.aePrecaptureId">
4152            <td class="entry_name
4153                entry_name_deprecated
4154             " rowspan="3">
4155              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
4156            </td>
4157            <td class="entry_type">
4158                <span class="entry_type_name">int32</span>
4159
4160              <span class="entry_type_visibility"> [system]</span>
4161
4162
4163              <span class="entry_type_deprecated">[deprecated] </span>
4164
4165
4166
4167            </td> <!-- entry_type -->
4168
4169            <td class="entry_description">
4170              <p>The ID sent with the latest
4171CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
4172            </td>
4173
4174            <td class="entry_units">
4175            </td>
4176
4177            <td class="entry_range">
4178              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
4179            </td>
4180
4181            <td class="entry_tags">
4182            </td>
4183
4184          </tr>
4185          <tr class="entries_header">
4186            <th class="th_details" colspan="5">Details</th>
4187          </tr>
4188          <tr class="entry_cont">
4189            <td class="entry_details" colspan="5">
4190              <p>Must be 0 if no
4191CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
4192by HAL.<wbr/> Always updated even if AE algorithm ignores the
4193trigger</p>
4194            </td>
4195          </tr>
4196
4197
4198          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4199           <!-- end of entry -->
4200        
4201                
4202          <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
4203            <td class="entry_name
4204             " rowspan="5">
4205              android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
4206            </td>
4207            <td class="entry_type">
4208                <span class="entry_type_name entry_type_name_enum">byte</span>
4209
4210              <span class="entry_type_visibility"> [public]</span>
4211
4212
4213
4214
4215                <ul class="entry_type_enum">
4216                  <li>
4217                    <span class="entry_type_enum_name">OFF</span>
4218                    <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
4219avoid banding problems.<wbr/></p></span>
4220                  </li>
4221                  <li>
4222                    <span class="entry_type_enum_name">50HZ</span>
4223                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
4224avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
4225                  </li>
4226                  <li>
4227                    <span class="entry_type_enum_name">60HZ</span>
4228                    <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
4229avoid banding problems with 60Hz illumination
4230sources.<wbr/></p></span>
4231                  </li>
4232                  <li>
4233                    <span class="entry_type_enum_name">AUTO</span>
4234                    <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
4235antibanding routine to the current illumination
4236conditions.<wbr/> This is the default.<wbr/></p></span>
4237                  </li>
4238                </ul>
4239
4240            </td> <!-- entry_type -->
4241
4242            <td class="entry_description">
4243              <p>The desired setting for the camera device's auto-exposure
4244algorithm's antibanding compensation.<wbr/></p>
4245            </td>
4246
4247            <td class="entry_units">
4248            </td>
4249
4250            <td class="entry_range">
4251              <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</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>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
4267lights,<wbr/> flicker at the rate of the power supply frequency
4268(60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
4269typically not noticeable to a person,<wbr/> it can be visible to
4270a camera device.<wbr/> If a camera sets its exposure time to the
4271wrong value,<wbr/> the flicker may become visible in the
4272viewfinder as flicker or in a final captured image,<wbr/> as a
4273set of variable-brightness bands across the image.<wbr/></p>
4274<p>Therefore,<wbr/> the auto-exposure routines of camera devices
4275include antibanding routines that ensure that the chosen
4276exposure value will not cause such banding.<wbr/> The choice of
4277exposure time depends on the rate of flicker,<wbr/> which the
4278camera device can detect automatically,<wbr/> or the expected
4279rate can be selected by the application using this
4280control.<wbr/></p>
4281<p>A given camera device may not support all of the possible
4282options for the antibanding mode.<wbr/> The
4283<a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
4284the available modes for a given camera device.<wbr/></p>
4285<p>The default mode is AUTO,<wbr/> which must be supported by all
4286camera devices.<wbr/></p>
4287<p>If manual exposure control is enabled (by setting
4288<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/>
4289then this setting has no effect,<wbr/> and the application must
4290ensure it selects exposure times that do not cause banding
4291issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
4292the application in this.<wbr/></p>
4293            </td>
4294          </tr>
4295
4296          <tr class="entries_header">
4297            <th class="th_details" colspan="5">HAL Implementation Details</th>
4298          </tr>
4299          <tr class="entry_cont">
4300            <td class="entry_details" colspan="5">
4301              <p>For all capture request templates,<wbr/> this field must be set
4302to AUTO.<wbr/>  AUTO is the only mode that must supported;
4303OFF,<wbr/> 50HZ,<wbr/> 60HZ are all optional.<wbr/></p>
4304<p>If manual exposure control is enabled (by setting
4305<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/>
4306then the exposure values provided by the application must not be
4307adjusted for antibanding.<wbr/></p>
4308            </td>
4309          </tr>
4310
4311          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4312           <!-- end of entry -->
4313        
4314                
4315          <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
4316            <td class="entry_name
4317             " rowspan="3">
4318              android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
4319            </td>
4320            <td class="entry_type">
4321                <span class="entry_type_name">int32</span>
4322
4323              <span class="entry_type_visibility"> [public]</span>
4324
4325
4326
4327
4328
4329            </td> <!-- entry_type -->
4330
4331            <td class="entry_description">
4332              <p>Adjustment to AE target image
4333brightness</p>
4334            </td>
4335
4336            <td class="entry_units">
4337              count of positive/<wbr/>negative EV steps
4338            </td>
4339
4340            <td class="entry_range">
4341            </td>
4342
4343            <td class="entry_tags">
4344              <ul class="entry_tags">
4345                  <li><a href="#tag_BC">BC</a></li>
4346              </ul>
4347            </td>
4348
4349          </tr>
4350          <tr class="entries_header">
4351            <th class="th_details" colspan="5">Details</th>
4352          </tr>
4353          <tr class="entry_cont">
4354            <td class="entry_details" colspan="5">
4355              <p>For example,<wbr/> if EV step is 0.<wbr/>333,<wbr/> '6' will mean an
4356exposure compensation of +2 EV; -3 will mean an exposure
4357compensation of -1 EV.<wbr/> Note that this control will only be effective
4358if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control will take effect even when
4359<a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
4360<p>In the event of exposure compensation value being changed,<wbr/> camera device
4361may take several frames to reach the newly requested exposure target.<wbr/>
4362During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
4363state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
4364change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
4365FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
4366            </td>
4367          </tr>
4368
4369
4370          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4371           <!-- end of entry -->
4372        
4373                
4374          <tr class="entry" id="dynamic_android.control.aeLock">
4375            <td class="entry_name
4376             " rowspan="3">
4377              android.<wbr/>control.<wbr/>ae<wbr/>Lock
4378            </td>
4379            <td class="entry_type">
4380                <span class="entry_type_name entry_type_name_enum">byte</span>
4381
4382              <span class="entry_type_visibility"> [public as boolean]</span>
4383
4384
4385
4386
4387                <ul class="entry_type_enum">
4388                  <li>
4389                    <span class="entry_type_enum_name">OFF</span>
4390                    <span class="entry_type_enum_notes"><p>Autoexposure lock is disabled; the AE algorithm
4391is free to update its parameters.<wbr/></p></span>
4392                  </li>
4393                  <li>
4394                    <span class="entry_type_enum_name">ON</span>
4395                    <span class="entry_type_enum_notes"><p>Autoexposure lock is enabled; the AE algorithm
4396must not update the exposure and sensitivity parameters
4397while the lock is active.<wbr/>
4398<a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
4399will still take effect while auto-exposure is locked.<wbr/></p></span>
4400                  </li>
4401                </ul>
4402
4403            </td> <!-- entry_type -->
4404
4405            <td class="entry_description">
4406              <p>Whether AE is currently locked to its latest
4407calculated values.<wbr/></p>
4408            </td>
4409
4410            <td class="entry_units">
4411            </td>
4412
4413            <td class="entry_range">
4414            </td>
4415
4416            <td class="entry_tags">
4417              <ul class="entry_tags">
4418                  <li><a href="#tag_BC">BC</a></li>
4419              </ul>
4420            </td>
4421
4422          </tr>
4423          <tr class="entries_header">
4424            <th class="th_details" colspan="5">Details</th>
4425          </tr>
4426          <tr class="entry_cont">
4427            <td class="entry_details" colspan="5">
4428              <p>Note that even when AE is locked,<wbr/> the flash may be
4429fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/> ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/>
4430ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
4431<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
4432is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
4433<p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
4434when AE is already locked,<wbr/> the camera device will not change the exposure time
4435(<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>)
4436parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
4437is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
4438<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>
4439<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>
4440            </td>
4441          </tr>
4442
4443
4444          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4445           <!-- end of entry -->
4446        
4447                
4448          <tr class="entry" id="dynamic_android.control.aeMode">
4449            <td class="entry_name
4450             " rowspan="3">
4451              android.<wbr/>control.<wbr/>ae<wbr/>Mode
4452            </td>
4453            <td class="entry_type">
4454                <span class="entry_type_name entry_type_name_enum">byte</span>
4455
4456              <span class="entry_type_visibility"> [public]</span>
4457
4458
4459
4460
4461                <ul class="entry_type_enum">
4462                  <li>
4463                    <span class="entry_type_enum_name">OFF</span>
4464                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled;
4465the application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
4466<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
4467<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
4468device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
4469a flash unit for this camera device.<wbr/></p></span>
4470                  </li>
4471                  <li>
4472                    <span class="entry_type_enum_name">ON</span>
4473                    <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
4474with no flash control.<wbr/> The application's values for
4475<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
4476<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
4477<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
4478application has control over the various
4479android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
4480                  </li>
4481                  <li>
4482                    <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
4483                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
4484the camera's flash unit,<wbr/> firing it in low-light
4485conditions.<wbr/> The flash may be fired during a
4486precapture sequence (triggered by
4487<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and may be fired
4488for captures for which the
4489<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
4490STILL_<wbr/>CAPTURE</p></span>
4491                  </li>
4492                  <li>
4493                    <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
4494                    <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
4495the camera's flash unit,<wbr/> always firing it for still
4496captures.<wbr/> The flash may be fired during a precapture
4497sequence (triggered by
4498<a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and will always
4499be fired for captures for which the
4500<a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
4501STILL_<wbr/>CAPTURE</p></span>
4502                  </li>
4503                  <li>
4504                    <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
4505                    <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
4506reduction.<wbr/> If deemed necessary by the camera device,<wbr/>
4507a red eye reduction flash will fire during the
4508precapture sequence.<wbr/></p></span>
4509                  </li>
4510                </ul>
4511
4512            </td> <!-- entry_type -->
4513
4514            <td class="entry_description">
4515              <p>The desired mode for the camera device's
4516auto-exposure routine.<wbr/></p>
4517            </td>
4518
4519            <td class="entry_units">
4520            </td>
4521
4522            <td class="entry_range">
4523              <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
4524            </td>
4525
4526            <td class="entry_tags">
4527              <ul class="entry_tags">
4528                  <li><a href="#tag_BC">BC</a></li>
4529              </ul>
4530            </td>
4531
4532          </tr>
4533          <tr class="entries_header">
4534            <th class="th_details" colspan="5">Details</th>
4535          </tr>
4536          <tr class="entry_cont">
4537            <td class="entry_details" colspan="5">
4538              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
4539AUTO.<wbr/></p>
4540<p>When set to any of the ON modes,<wbr/> the camera device's
4541auto-exposure routine is enabled,<wbr/> overriding the
4542application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
4543and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
4544<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
4545<a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
4546is selected,<wbr/> the camera device's flash unit controls are
4547also overridden.<wbr/></p>
4548<p>The FLASH modes are only available if the camera device
4549has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
4550<p>If flash TORCH mode is desired,<wbr/> this field must be set to
4551ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
4552<p>When set to any of the ON modes,<wbr/> the values chosen by the
4553camera device auto-exposure routine for the overridden
4554fields for a given capture will be available in its
4555CaptureResult.<wbr/></p>
4556            </td>
4557          </tr>
4558
4559
4560          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4561           <!-- end of entry -->
4562        
4563                
4564          <tr class="entry" id="dynamic_android.control.aeRegions">
4565            <td class="entry_name
4566             " rowspan="5">
4567              android.<wbr/>control.<wbr/>ae<wbr/>Regions
4568            </td>
4569            <td class="entry_type">
4570                <span class="entry_type_name">int32</span>
4571                <span class="entry_type_container">x</span>
4572
4573                <span class="entry_type_array">
4574                  5 x area_count
4575                </span>
4576              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
4577
4578
4579
4580
4581
4582            </td> <!-- entry_type -->
4583
4584            <td class="entry_description">
4585              <p>List of areas to use for
4586metering.<wbr/></p>
4587            </td>
4588
4589            <td class="entry_units">
4590            </td>
4591
4592            <td class="entry_range">
4593              <p><code>area_<wbr/>count &lt;= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[0]</code></p>
4594            </td>
4595
4596            <td class="entry_tags">
4597              <ul class="entry_tags">
4598                  <li><a href="#tag_BC">BC</a></li>
4599              </ul>
4600            </td>
4601
4602          </tr>
4603          <tr class="entries_header">
4604            <th class="th_details" colspan="5">Details</th>
4605          </tr>
4606          <tr class="entry_cont">
4607            <td class="entry_details" colspan="5">
4608              <p>The coordinate system is based on the active pixel array,<wbr/>
4609with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
4610(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
4611<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
4612bottom-right pixel in the active pixel array.<wbr/></p>
4613<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
4614for every pixel in the area.<wbr/> This means that a large metering area
4615with the same weight as a smaller area will have more effect in
4616the metering result.<wbr/> Metering areas can partially overlap and the
4617camera device will add the weights in the overlap region.<wbr/></p>
4618<p>If all regions have 0 weight,<wbr/> then no specific metering area
4619needs to be used by the camera device.<wbr/> If the metering region is
4620outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in capture result metadata,<wbr/>
4621the camera device will ignore the sections outside the region and output the
4622used sections in the result metadata.<wbr/></p>
4623            </td>
4624          </tr>
4625
4626          <tr class="entries_header">
4627            <th class="th_details" colspan="5">HAL Implementation Details</th>
4628          </tr>
4629          <tr class="entry_cont">
4630            <td class="entry_details" colspan="5">
4631              <p>The HAL level representation of MeteringRectangle[] is a
4632int[5 * area_<wbr/>count].<wbr/>
4633Every five elements represent a metering region of
4634(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
4635The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
4636exclusive on xmax and ymax.<wbr/></p>
4637            </td>
4638          </tr>
4639
4640          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4641           <!-- end of entry -->
4642        
4643                
4644          <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
4645            <td class="entry_name
4646             " rowspan="3">
4647              android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
4648            </td>
4649            <td class="entry_type">
4650                <span class="entry_type_name">int32</span>
4651                <span class="entry_type_container">x</span>
4652
4653                <span class="entry_type_array">
4654                  2
4655                </span>
4656              <span class="entry_type_visibility"> [public as rangeInt]</span>
4657
4658
4659
4660
4661
4662            </td> <!-- entry_type -->
4663
4664            <td class="entry_description">
4665              <p>Range over which fps can be adjusted to
4666maintain exposure</p>
4667            </td>
4668
4669            <td class="entry_units">
4670            </td>
4671
4672            <td class="entry_range">
4673              <p><a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p>
4674            </td>
4675
4676            <td class="entry_tags">
4677              <ul class="entry_tags">
4678                  <li><a href="#tag_BC">BC</a></li>
4679              </ul>
4680            </td>
4681
4682          </tr>
4683          <tr class="entries_header">
4684            <th class="th_details" colspan="5">Details</th>
4685          </tr>
4686          <tr class="entry_cont">
4687            <td class="entry_details" colspan="5">
4688              <p>Only constrains AE algorithm,<wbr/> not manual control
4689of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></p>
4690            </td>
4691          </tr>
4692
4693
4694          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4695           <!-- end of entry -->
4696        
4697                
4698          <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
4699            <td class="entry_name
4700             " rowspan="3">
4701              android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
4702            </td>
4703            <td class="entry_type">
4704                <span class="entry_type_name entry_type_name_enum">byte</span>
4705
4706              <span class="entry_type_visibility"> [public]</span>
4707
4708
4709
4710
4711                <ul class="entry_type_enum">
4712                  <li>
4713                    <span class="entry_type_enum_name">IDLE</span>
4714                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
4715                  </li>
4716                  <li>
4717                    <span class="entry_type_enum_name">START</span>
4718                    <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
4719by the camera device.<wbr/> The exact effect of the precapture
4720trigger depends on the current AE mode and state.<wbr/></p></span>
4721                  </li>
4722                </ul>
4723
4724            </td> <!-- entry_type -->
4725
4726            <td class="entry_description">
4727              <p>Whether the camera device will trigger a precapture
4728metering sequence when it processes this request.<wbr/></p>
4729            </td>
4730
4731            <td class="entry_units">
4732            </td>
4733
4734            <td class="entry_range">
4735            </td>
4736
4737            <td class="entry_tags">
4738              <ul class="entry_tags">
4739                  <li><a href="#tag_BC">BC</a></li>
4740              </ul>
4741            </td>
4742
4743          </tr>
4744          <tr class="entries_header">
4745            <th class="th_details" colspan="5">Details</th>
4746          </tr>
4747          <tr class="entry_cont">
4748            <td class="entry_details" colspan="5">
4749              <p>This entry is normally set to IDLE,<wbr/> or is not
4750included at all in the request settings.<wbr/> When included and
4751set to START,<wbr/> the camera device will trigger the autoexposure
4752precapture metering sequence.<wbr/></p>
4753<p>The effect of AE precapture trigger depends on the current
4754AE mode and state; see <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture
4755state transition details.<wbr/></p>
4756            </td>
4757          </tr>
4758
4759
4760          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4761           <!-- end of entry -->
4762        
4763                
4764          <tr class="entry" id="dynamic_android.control.aeState">
4765            <td class="entry_name
4766             " rowspan="3">
4767              android.<wbr/>control.<wbr/>ae<wbr/>State
4768            </td>
4769            <td class="entry_type">
4770                <span class="entry_type_name entry_type_name_enum">byte</span>
4771
4772              <span class="entry_type_visibility"> [public]</span>
4773
4774
4775
4776
4777                <ul class="entry_type_enum">
4778                  <li>
4779                    <span class="entry_type_enum_name">INACTIVE</span>
4780                    <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/> When a camera device is opened,<wbr/> it starts in
4781this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
4782this state in capture result.<wbr/></p></span>
4783                  </li>
4784                  <li>
4785                    <span class="entry_type_enum_name">SEARCHING</span>
4786                    <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
4787for the current scene.<wbr/> This is a transient state,<wbr/> the camera device may skip
4788reporting this state in capture result.<wbr/></p></span>
4789                  </li>
4790                  <li>
4791                    <span class="entry_type_enum_name">CONVERGED</span>
4792                    <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
4793current scene.<wbr/></p></span>
4794                  </li>
4795                  <li>
4796                    <span class="entry_type_enum_name">LOCKED</span>
4797                    <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
4798                  </li>
4799                  <li>
4800                    <span class="entry_type_enum_name">FLASH_REQUIRED</span>
4801                    <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
4802needs to be fired for good quality still
4803capture.<wbr/></p></span>
4804                  </li>
4805                  <li>
4806                    <span class="entry_type_enum_name">PRECAPTURE</span>
4807                    <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
4808(through the <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> START),<wbr/>
4809and is currently executing it.<wbr/> Once PRECAPTURE
4810completes,<wbr/> AE will transition to CONVERGED or
4811FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient state,<wbr/> the
4812camera device may skip reporting this state in capture result.<wbr/></p></span>
4813                  </li>
4814                </ul>
4815
4816            </td> <!-- entry_type -->
4817
4818            <td class="entry_description">
4819              <p>Current state of AE algorithm</p>
4820            </td>
4821
4822            <td class="entry_units">
4823            </td>
4824
4825            <td class="entry_range">
4826            </td>
4827
4828            <td class="entry_tags">
4829            </td>
4830
4831          </tr>
4832          <tr class="entries_header">
4833            <th class="th_details" colspan="5">Details</th>
4834          </tr>
4835          <tr class="entry_cont">
4836            <td class="entry_details" colspan="5">
4837              <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
4838resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
4839or <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
4840the algorithm states to INACTIVE.<wbr/></p>
4841<p>The camera device can do several state transitions between two results,<wbr/> if it is
4842allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
4843seen in a result.<wbr/></p>
4844<p>The state in the result is the state for this image (in sync with this image): if
4845AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
4846be good to use.<wbr/></p>
4847<p>Below are state transition tables for different AE modes.<wbr/></p>
4848<table>
4849<thead>
4850<tr>
4851<th align="center">State</th>
4852<th align="center">Transition Cause</th>
4853<th align="center">New State</th>
4854<th align="center">Notes</th>
4855</tr>
4856</thead>
4857<tbody>
4858<tr>
4859<td align="center">INACTIVE</td>
4860<td align="center"></td>
4861<td align="center">INACTIVE</td>
4862<td align="center">Camera device auto exposure algorithm is disabled</td>
4863</tr>
4864</tbody>
4865</table>
4866<p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p>
4867<table>
4868<thead>
4869<tr>
4870<th align="center">State</th>
4871<th align="center">Transition Cause</th>
4872<th align="center">New State</th>
4873<th align="center">Notes</th>
4874</tr>
4875</thead>
4876<tbody>
4877<tr>
4878<td align="center">INACTIVE</td>
4879<td align="center">Camera device initiates AE scan</td>
4880<td align="center">SEARCHING</td>
4881<td align="center">Values changing</td>
4882</tr>
4883<tr>
4884<td align="center">INACTIVE</td>
4885<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
4886<td align="center">LOCKED</td>
4887<td align="center">Values locked</td>
4888</tr>
4889<tr>
4890<td align="center">SEARCHING</td>
4891<td align="center">Camera device finishes AE scan</td>
4892<td align="center">CONVERGED</td>
4893<td align="center">Good values,<wbr/> not changing</td>
4894</tr>
4895<tr>
4896<td align="center">SEARCHING</td>
4897<td align="center">Camera device finishes AE scan</td>
4898<td align="center">FLASH_<wbr/>REQUIRED</td>
4899<td align="center">Converged but too dark w/<wbr/>o flash</td>
4900</tr>
4901<tr>
4902<td align="center">SEARCHING</td>
4903<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
4904<td align="center">LOCKED</td>
4905<td align="center">Values locked</td>
4906</tr>
4907<tr>
4908<td align="center">CONVERGED</td>
4909<td align="center">Camera device initiates AE scan</td>
4910<td align="center">SEARCHING</td>
4911<td align="center">Values changing</td>
4912</tr>
4913<tr>
4914<td align="center">CONVERGED</td>
4915<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
4916<td align="center">LOCKED</td>
4917<td align="center">Values locked</td>
4918</tr>
4919<tr>
4920<td align="center">FLASH_<wbr/>REQUIRED</td>
4921<td align="center">Camera device initiates AE scan</td>
4922<td align="center">SEARCHING</td>
4923<td align="center">Values changing</td>
4924</tr>
4925<tr>
4926<td align="center">FLASH_<wbr/>REQUIRED</td>
4927<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
4928<td align="center">LOCKED</td>
4929<td align="center">Values locked</td>
4930</tr>
4931<tr>
4932<td align="center">LOCKED</td>
4933<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
4934<td align="center">SEARCHING</td>
4935<td align="center">Values not good after unlock</td>
4936</tr>
4937<tr>
4938<td align="center">LOCKED</td>
4939<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
4940<td align="center">CONVERGED</td>
4941<td align="center">Values good after unlock</td>
4942</tr>
4943<tr>
4944<td align="center">LOCKED</td>
4945<td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
4946<td align="center">FLASH_<wbr/>REQUIRED</td>
4947<td align="center">Exposure good,<wbr/> but too dark</td>
4948</tr>
4949<tr>
4950<td align="center">PRECAPTURE</td>
4951<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
4952<td align="center">CONVERGED</td>
4953<td align="center">Ready for high-quality capture</td>
4954</tr>
4955<tr>
4956<td align="center">PRECAPTURE</td>
4957<td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
4958<td align="center">LOCKED</td>
4959<td align="center">Ready for high-quality capture</td>
4960</tr>
4961<tr>
4962<td align="center">Any state</td>
4963<td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
4964<td align="center">PRECAPTURE</td>
4965<td align="center">Start AE precapture metering sequence</td>
4966</tr>
4967</tbody>
4968</table>
4969<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
4970without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
4971can be skipped in that manner is called a transient state.<wbr/></p>
4972<p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
4973listed in above table,<wbr/> it is also legal for the camera device to skip one or more
4974transient states between two results.<wbr/> See below table for examples:</p>
4975<table>
4976<thead>
4977<tr>
4978<th align="center">State</th>
4979<th align="center">Transition Cause</th>
4980<th align="center">New State</th>
4981<th align="center">Notes</th>
4982</tr>
4983</thead>
4984<tbody>
4985<tr>
4986<td align="center">INACTIVE</td>
4987<td align="center">Camera device finished AE scan</td>
4988<td align="center">CONVERGED</td>
4989<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
4990</tr>
4991<tr>
4992<td align="center">Any state</td>
4993<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>
4994<td align="center">FLASH_<wbr/>REQUIRED</td>
4995<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>
4996</tr>
4997<tr>
4998<td align="center">Any state</td>
4999<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>
5000<td align="center">CONVERGED</td>
5001<td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
5002</tr>
5003<tr>
5004<td align="center">CONVERGED</td>
5005<td align="center">Camera device finished AE scan</td>
5006<td align="center">FLASH_<wbr/>REQUIRED</td>
5007<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>
5008</tr>
5009<tr>
5010<td align="center">FLASH_<wbr/>REQUIRED</td>
5011<td align="center">Camera device finished AE scan</td>
5012<td align="center">CONVERGED</td>
5013<td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
5014</tr>
5015</tbody>
5016</table>
5017            </td>
5018          </tr>
5019
5020
5021          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5022           <!-- end of entry -->
5023        
5024                
5025          <tr class="entry" id="dynamic_android.control.afMode">
5026            <td class="entry_name
5027             " rowspan="5">
5028              android.<wbr/>control.<wbr/>af<wbr/>Mode
5029            </td>
5030            <td class="entry_type">
5031                <span class="entry_type_name entry_type_name_enum">byte</span>
5032
5033              <span class="entry_type_visibility"> [public]</span>
5034
5035
5036
5037
5038                <ul class="entry_type_enum">
5039                  <li>
5040                    <span class="entry_type_enum_name">OFF</span>
5041                    <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
5042<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
5043application</p></span>
5044                  </li>
5045                  <li>
5046                    <span class="entry_type_enum_name">AUTO</span>
5047                    <span class="entry_type_enum_notes"><p>If lens is not fixed focus.<wbr/></p>
5048<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
5049is fixed-focus.<wbr/> In this mode,<wbr/> the lens does not move unless
5050the autofocus trigger action is called.<wbr/> When that trigger
5051is activated,<wbr/> AF must transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
5052the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
5053<p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
5054and sets the AF state to INACTIVE.<wbr/></p></span>
5055                  </li>
5056                  <li>
5057                    <span class="entry_type_enum_name">MACRO</span>
5058                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the lens does not move unless the
5059autofocus trigger action is called.<wbr/></p>
5060<p>When that trigger is activated,<wbr/> AF must transition to
5061ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
5062NOT_<wbr/>FOCUSED).<wbr/>  Triggering cancel AF resets the lens
5063position to default,<wbr/> and sets the AF state to
5064INACTIVE.<wbr/></p></span>
5065                  </li>
5066                  <li>
5067                    <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
5068                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
5069position continually to attempt to provide a
5070constantly-in-focus image stream.<wbr/></p>
5071<p>The focusing behavior should be suitable for good quality
5072video recording; typically this means slower focus
5073movement and no overshoots.<wbr/> When the AF trigger is not
5074involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
5075and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
5076states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
5077the algorithm should immediately transition into
5078AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
5079lens position until a cancel AF trigger is received.<wbr/></p>
5080<p>Once cancel is received,<wbr/> the algorithm should transition
5081back to INACTIVE and resume passive scan.<wbr/> Note that this
5082behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
5083ongoing PASSIVE_<wbr/>SCAN must immediately be
5084canceled.<wbr/></p></span>
5085                  </li>
5086                  <li>
5087                    <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
5088                    <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
5089position continually to attempt to provide a
5090constantly-in-focus image stream.<wbr/></p>
5091<p>The focusing behavior should be suitable for still image
5092capture; typically this means focusing as fast as
5093possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
5094algorithm should start in INACTIVE state,<wbr/> and then
5095transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
5096appropriate as it attempts to maintain focus.<wbr/> When the AF
5097trigger is activated,<wbr/> the algorithm should finish its
5098PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
5099AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
5100lens position until a cancel AF trigger is received.<wbr/></p>
5101<p>When the AF cancel trigger is activated,<wbr/> the algorithm
5102should transition back to INACTIVE and then act as if it
5103has just been started.<wbr/></p></span>
5104                  </li>
5105                  <li>
5106                    <span class="entry_type_enum_name">EDOF</span>
5107                    <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus).<wbr/> AF
5108trigger is ignored,<wbr/> AF state should always be
5109INACTIVE.<wbr/></p></span>
5110                  </li>
5111                </ul>
5112
5113            </td> <!-- entry_type -->
5114
5115            <td class="entry_description">
5116              <p>Whether AF is currently enabled,<wbr/> and what
5117mode it is set to</p>
5118            </td>
5119
5120            <td class="entry_units">
5121            </td>
5122
5123            <td class="entry_range">
5124              <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
5125            </td>
5126
5127            <td class="entry_tags">
5128              <ul class="entry_tags">
5129                  <li><a href="#tag_BC">BC</a></li>
5130              </ul>
5131            </td>
5132
5133          </tr>
5134          <tr class="entries_header">
5135            <th class="th_details" colspan="5">Details</th>
5136          </tr>
5137          <tr class="entry_cont">
5138            <td class="entry_details" colspan="5">
5139              <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
5140(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/></p>
5141<p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
5142the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
5143in result metadata.<wbr/></p>
5144            </td>
5145          </tr>
5146
5147          <tr class="entries_header">
5148            <th class="th_details" colspan="5">HAL Implementation Details</th>
5149          </tr>
5150          <tr class="entry_cont">
5151            <td class="entry_details" colspan="5">
5152              <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
5153request (<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
5154up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
5155<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
5156locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
5157after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
5158the same focal plane remains in focus.<wbr/></p>
5159<p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
5160scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
5161(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
5162same lock behavior as above.<wbr/></p>
5163<p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
5164focus 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/>
5165However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
5166manual control.<wbr/></p>
5167<p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
5168camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
5169remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
5170by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
5171that will arise on camera modules with open-loop VCMs.<wbr/></p>
5172            </td>
5173          </tr>
5174
5175          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5176           <!-- end of entry -->
5177        
5178                
5179          <tr class="entry" id="dynamic_android.control.afRegions">
5180            <td class="entry_name
5181             " rowspan="5">
5182              android.<wbr/>control.<wbr/>af<wbr/>Regions
5183            </td>
5184            <td class="entry_type">
5185                <span class="entry_type_name">int32</span>
5186                <span class="entry_type_container">x</span>
5187
5188                <span class="entry_type_array">
5189                  5 x area_count
5190                </span>
5191              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
5192
5193
5194
5195
5196
5197            </td> <!-- entry_type -->
5198
5199            <td class="entry_description">
5200              <p>List of areas to use for focus
5201estimation.<wbr/></p>
5202            </td>
5203
5204            <td class="entry_units">
5205            </td>
5206
5207            <td class="entry_range">
5208              <p><code>area_<wbr/>count &lt;= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[2]</code></p>
5209            </td>
5210
5211            <td class="entry_tags">
5212              <ul class="entry_tags">
5213                  <li><a href="#tag_BC">BC</a></li>
5214              </ul>
5215            </td>
5216
5217          </tr>
5218          <tr class="entries_header">
5219            <th class="th_details" colspan="5">Details</th>
5220          </tr>
5221          <tr class="entry_cont">
5222            <td class="entry_details" colspan="5">
5223              <p>The coordinate system is based on the active pixel array,<wbr/>
5224with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
5225(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
5226<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
5227bottom-right pixel in the active pixel array.<wbr/></p>
5228<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
5229for every pixel in the area.<wbr/> This means that a large metering area
5230with the same weight as a smaller area will have more effect in
5231the metering result.<wbr/> Metering areas can partially overlap and the
5232camera device will add the weights in the overlap region.<wbr/></p>
5233<p>If all regions have 0 weight,<wbr/> then no specific metering area
5234needs to be used by the camera device.<wbr/> If the metering region is
5235outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in capture result metadata,<wbr/>
5236the camera device will ignore the sections outside the region and output the
5237used sections in the result metadata.<wbr/></p>
5238            </td>
5239          </tr>
5240
5241          <tr class="entries_header">
5242            <th class="th_details" colspan="5">HAL Implementation Details</th>
5243          </tr>
5244          <tr class="entry_cont">
5245            <td class="entry_details" colspan="5">
5246              <p>The HAL level representation of MeteringRectangle[] is a
5247int[5 * area_<wbr/>count].<wbr/>
5248Every five elements represent a metering region of
5249(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
5250The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
5251exclusive on xmax and ymax.<wbr/></p>
5252            </td>
5253          </tr>
5254
5255          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5256           <!-- end of entry -->
5257        
5258                
5259          <tr class="entry" id="dynamic_android.control.afTrigger">
5260            <td class="entry_name
5261             " rowspan="3">
5262              android.<wbr/>control.<wbr/>af<wbr/>Trigger
5263            </td>
5264            <td class="entry_type">
5265                <span class="entry_type_name entry_type_name_enum">byte</span>
5266
5267              <span class="entry_type_visibility"> [public]</span>
5268
5269
5270
5271
5272                <ul class="entry_type_enum">
5273                  <li>
5274                    <span class="entry_type_enum_name">IDLE</span>
5275                    <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
5276                  </li>
5277                  <li>
5278                    <span class="entry_type_enum_name">START</span>
5279                    <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
5280                  </li>
5281                  <li>
5282                    <span class="entry_type_enum_name">CANCEL</span>
5283                    <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
5284state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
5285                  </li>
5286                </ul>
5287
5288            </td> <!-- entry_type -->
5289
5290            <td class="entry_description">
5291              <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
5292            </td>
5293
5294            <td class="entry_units">
5295            </td>
5296
5297            <td class="entry_range">
5298            </td>
5299
5300            <td class="entry_tags">
5301              <ul class="entry_tags">
5302                  <li><a href="#tag_BC">BC</a></li>
5303              </ul>
5304            </td>
5305
5306          </tr>
5307          <tr class="entries_header">
5308            <th class="th_details" colspan="5">Details</th>
5309          </tr>
5310          <tr class="entry_cont">
5311            <td class="entry_details" colspan="5">
5312              <p>This entry is normally set to IDLE,<wbr/> or is not
5313included at all in the request settings.<wbr/></p>
5314<p>When included and set to START,<wbr/> the camera device will trigger the
5315autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
5316<p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
5317and return to its initial AF state.<wbr/></p>
5318<p>See <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for what that means for each AF mode.<wbr/></p>
5319            </td>
5320          </tr>
5321
5322
5323          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5324           <!-- end of entry -->
5325        
5326                
5327          <tr class="entry" id="dynamic_android.control.afState">
5328            <td class="entry_name
5329             " rowspan="3">
5330              android.<wbr/>control.<wbr/>af<wbr/>State
5331            </td>
5332            <td class="entry_type">
5333                <span class="entry_type_name entry_type_name_enum">byte</span>
5334
5335              <span class="entry_type_visibility"> [public]</span>
5336
5337
5338
5339
5340                <ul class="entry_type_enum">
5341                  <li>
5342                    <span class="entry_type_enum_name">INACTIVE</span>
5343                    <span class="entry_type_enum_notes"><p>AF off or has not yet tried to scan/<wbr/>been asked
5344to scan.<wbr/>  When a camera device is opened,<wbr/> it starts in
5345this state.<wbr/> This is a transient state,<wbr/> the camera device may
5346skip reporting this state in capture result.<wbr/></p></span>
5347                  </li>
5348                  <li>
5349                    <span class="entry_type_enum_name">PASSIVE_SCAN</span>
5350                    <span class="entry_type_enum_notes"><p>if CONTINUOUS_<wbr/>* modes are supported.<wbr/> AF is
5351currently doing an AF scan initiated by a continuous
5352autofocus mode.<wbr/> This is a transient state,<wbr/> the camera device may
5353skip reporting this state in capture result.<wbr/></p></span>
5354                  </li>
5355                  <li>
5356                    <span class="entry_type_enum_name">PASSIVE_FOCUSED</span>
5357                    <span class="entry_type_enum_notes"><p>if CONTINUOUS_<wbr/>* modes are supported.<wbr/> AF currently
5358believes it is in focus,<wbr/> but may restart scanning at
5359any time.<wbr/> This is a transient state,<wbr/> the camera device may skip
5360reporting this state in capture result.<wbr/></p></span>
5361                  </li>
5362                  <li>
5363                    <span class="entry_type_enum_name">ACTIVE_SCAN</span>
5364                    <span class="entry_type_enum_notes"><p>if AUTO or MACRO modes are supported.<wbr/> AF is doing
5365an AF scan because it was triggered by AF trigger.<wbr/> This is a
5366transient state,<wbr/> the camera device may skip reporting
5367this state in capture result.<wbr/></p></span>
5368                  </li>
5369                  <li>
5370                    <span class="entry_type_enum_name">FOCUSED_LOCKED</span>
5371                    <span class="entry_type_enum_notes"><p>if any AF mode besides OFF is supported.<wbr/> AF
5372believes it is focused correctly and is
5373locked.<wbr/></p></span>
5374                  </li>
5375                  <li>
5376                    <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span>
5377                    <span class="entry_type_enum_notes"><p>if any AF mode besides OFF is supported.<wbr/> AF has
5378failed to focus successfully and is
5379locked.<wbr/></p></span>
5380                  </li>
5381                  <li>
5382                    <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span>
5383                    <span class="entry_type_enum_notes"><p>if CONTINUOUS_<wbr/>* modes are supported.<wbr/> AF finished a
5384passive scan without finding focus,<wbr/> and may restart
5385scanning at any time.<wbr/> This is a transient state,<wbr/> the camera
5386device may skip reporting this state in capture result.<wbr/></p></span>
5387                  </li>
5388                </ul>
5389
5390            </td> <!-- entry_type -->
5391
5392            <td class="entry_description">
5393              <p>Current state of AF algorithm.<wbr/></p>
5394            </td>
5395
5396            <td class="entry_units">
5397            </td>
5398
5399            <td class="entry_range">
5400            </td>
5401
5402            <td class="entry_tags">
5403            </td>
5404
5405          </tr>
5406          <tr class="entries_header">
5407            <th class="th_details" colspan="5">Details</th>
5408          </tr>
5409          <tr class="entry_cont">
5410            <td class="entry_details" colspan="5">
5411              <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
5412resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
5413or <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
5414the algorithm states to INACTIVE.<wbr/></p>
5415<p>The camera device can do several state transitions between two results,<wbr/> if it is
5416allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
5417seen in a result.<wbr/></p>
5418<p>The state in the result is the state for this image (in sync with this image): if
5419AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
5420be sharp.<wbr/></p>
5421<p>Below are state transition tables for different AF modes.<wbr/></p>
5422<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>
5423<table>
5424<thead>
5425<tr>
5426<th align="center">State</th>
5427<th align="center">Transition Cause</th>
5428<th align="center">New State</th>
5429<th align="center">Notes</th>
5430</tr>
5431</thead>
5432<tbody>
5433<tr>
5434<td align="center">INACTIVE</td>
5435<td align="center"></td>
5436<td align="center">INACTIVE</td>
5437<td align="center">Never changes</td>
5438</tr>
5439</tbody>
5440</table>
5441<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>
5442<table>
5443<thead>
5444<tr>
5445<th align="center">State</th>
5446<th align="center">Transition Cause</th>
5447<th align="center">New State</th>
5448<th align="center">Notes</th>
5449</tr>
5450</thead>
5451<tbody>
5452<tr>
5453<td align="center">INACTIVE</td>
5454<td align="center">AF_<wbr/>TRIGGER</td>
5455<td align="center">ACTIVE_<wbr/>SCAN</td>
5456<td align="center">Start AF sweep,<wbr/> Lens now moving</td>
5457</tr>
5458<tr>
5459<td align="center">ACTIVE_<wbr/>SCAN</td>
5460<td align="center">AF sweep done</td>
5461<td align="center">FOCUSED_<wbr/>LOCKED</td>
5462<td align="center">Focused,<wbr/> Lens now locked</td>
5463</tr>
5464<tr>
5465<td align="center">ACTIVE_<wbr/>SCAN</td>
5466<td align="center">AF sweep done</td>
5467<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
5468<td align="center">Not focused,<wbr/> Lens now locked</td>
5469</tr>
5470<tr>
5471<td align="center">ACTIVE_<wbr/>SCAN</td>
5472<td align="center">AF_<wbr/>CANCEL</td>
5473<td align="center">INACTIVE</td>
5474<td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
5475</tr>
5476<tr>
5477<td align="center">FOCUSED_<wbr/>LOCKED</td>
5478<td align="center">AF_<wbr/>CANCEL</td>
5479<td align="center">INACTIVE</td>
5480<td align="center">Cancel/<wbr/>reset AF</td>
5481</tr>
5482<tr>
5483<td align="center">FOCUSED_<wbr/>LOCKED</td>
5484<td align="center">AF_<wbr/>TRIGGER</td>
5485<td align="center">ACTIVE_<wbr/>SCAN</td>
5486<td align="center">Start new sweep,<wbr/> Lens now moving</td>
5487</tr>
5488<tr>
5489<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
5490<td align="center">AF_<wbr/>CANCEL</td>
5491<td align="center">INACTIVE</td>
5492<td align="center">Cancel/<wbr/>reset AF</td>
5493</tr>
5494<tr>
5495<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
5496<td align="center">AF_<wbr/>TRIGGER</td>
5497<td align="center">ACTIVE_<wbr/>SCAN</td>
5498<td align="center">Start new sweep,<wbr/> Lens now moving</td>
5499</tr>
5500<tr>
5501<td align="center">Any state</td>
5502<td align="center">Mode change</td>
5503<td align="center">INACTIVE</td>
5504<td align="center"></td>
5505</tr>
5506</tbody>
5507</table>
5508<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
5509without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
5510can be skipped in that manner is called a transient state.<wbr/></p>
5511<p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
5512state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
5513one or more transient states between two results.<wbr/> See below table for examples:</p>
5514<table>
5515<thead>
5516<tr>
5517<th align="center">State</th>
5518<th align="center">Transition Cause</th>
5519<th align="center">New State</th>
5520<th align="center">Notes</th>
5521</tr>
5522</thead>
5523<tbody>
5524<tr>
5525<td align="center">INACTIVE</td>
5526<td align="center">AF_<wbr/>TRIGGER</td>
5527<td align="center">FOCUSED_<wbr/>LOCKED</td>
5528<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
5529</tr>
5530<tr>
5531<td align="center">INACTIVE</td>
5532<td align="center">AF_<wbr/>TRIGGER</td>
5533<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
5534<td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
5535</tr>
5536<tr>
5537<td align="center">FOCUSED_<wbr/>LOCKED</td>
5538<td align="center">AF_<wbr/>TRIGGER</td>
5539<td align="center">FOCUSED_<wbr/>LOCKED</td>
5540<td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
5541</tr>
5542<tr>
5543<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
5544<td align="center">AF_<wbr/>TRIGGER</td>
5545<td align="center">FOCUSED_<wbr/>LOCKED</td>
5546<td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
5547</tr>
5548</tbody>
5549</table>
5550<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>
5551<table>
5552<thead>
5553<tr>
5554<th align="center">State</th>
5555<th align="center">Transition Cause</th>
5556<th align="center">New State</th>
5557<th align="center">Notes</th>
5558</tr>
5559</thead>
5560<tbody>
5561<tr>
5562<td align="center">INACTIVE</td>
5563<td align="center">Camera device initiates new scan</td>
5564<td align="center">PASSIVE_<wbr/>SCAN</td>
5565<td align="center">Start AF scan,<wbr/> Lens now moving</td>
5566</tr>
5567<tr>
5568<td align="center">INACTIVE</td>
5569<td align="center">AF_<wbr/>TRIGGER</td>
5570<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
5571<td align="center">AF state query,<wbr/> Lens now locked</td>
5572</tr>
5573<tr>
5574<td align="center">PASSIVE_<wbr/>SCAN</td>
5575<td align="center">Camera device completes current scan</td>
5576<td align="center">PASSIVE_<wbr/>FOCUSED</td>
5577<td align="center">End AF scan,<wbr/> Lens now locked</td>
5578</tr>
5579<tr>
5580<td align="center">PASSIVE_<wbr/>SCAN</td>
5581<td align="center">Camera device fails current scan</td>
5582<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
5583<td align="center">End AF scan,<wbr/> Lens now locked</td>
5584</tr>
5585<tr>
5586<td align="center">PASSIVE_<wbr/>SCAN</td>
5587<td align="center">AF_<wbr/>TRIGGER</td>
5588<td align="center">FOCUSED_<wbr/>LOCKED</td>
5589<td align="center">Immediate trans.<wbr/> If focus is good,<wbr/> Lens now locked</td>
5590</tr>
5591<tr>
5592<td align="center">PASSIVE_<wbr/>SCAN</td>
5593<td align="center">AF_<wbr/>TRIGGER</td>
5594<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
5595<td align="center">Immediate trans.<wbr/> if focus is bad,<wbr/> Lens now locked</td>
5596</tr>
5597<tr>
5598<td align="center">PASSIVE_<wbr/>SCAN</td>
5599<td align="center">AF_<wbr/>CANCEL</td>
5600<td align="center">INACTIVE</td>
5601<td align="center">Reset lens position,<wbr/> Lens now locked</td>
5602</tr>
5603<tr>
5604<td align="center">PASSIVE_<wbr/>FOCUSED</td>
5605<td align="center">Camera device initiates new scan</td>
5606<td align="center">PASSIVE_<wbr/>SCAN</td>
5607<td align="center">Start AF scan,<wbr/> Lens now moving</td>
5608</tr>
5609<tr>
5610<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
5611<td align="center">Camera device initiates new scan</td>
5612<td align="center">PASSIVE_<wbr/>SCAN</td>
5613<td align="center">Start AF scan,<wbr/> Lens now moving</td>
5614</tr>
5615<tr>
5616<td align="center">PASSIVE_<wbr/>FOCUSED</td>
5617<td align="center">AF_<wbr/>TRIGGER</td>
5618<td align="center">FOCUSED_<wbr/>LOCKED</td>
5619<td align="center">Immediate trans.<wbr/> Lens now locked</td>
5620</tr>
5621<tr>
5622<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
5623<td align="center">AF_<wbr/>TRIGGER</td>
5624<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
5625<td align="center">Immediate trans.<wbr/> Lens now locked</td>
5626</tr>
5627<tr>
5628<td align="center">FOCUSED_<wbr/>LOCKED</td>
5629<td align="center">AF_<wbr/>TRIGGER</td>
5630<td align="center">FOCUSED_<wbr/>LOCKED</td>
5631<td align="center">No effect</td>
5632</tr>
5633<tr>
5634<td align="center">FOCUSED_<wbr/>LOCKED</td>
5635<td align="center">AF_<wbr/>CANCEL</td>
5636<td align="center">INACTIVE</td>
5637<td align="center">Restart AF scan</td>
5638</tr>
5639<tr>
5640<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
5641<td align="center">AF_<wbr/>TRIGGER</td>
5642<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
5643<td align="center">No effect</td>
5644</tr>
5645<tr>
5646<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
5647<td align="center">AF_<wbr/>CANCEL</td>
5648<td align="center">INACTIVE</td>
5649<td align="center">Restart AF scan</td>
5650</tr>
5651</tbody>
5652</table>
5653<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>
5654<table>
5655<thead>
5656<tr>
5657<th align="center">State</th>
5658<th align="center">Transition Cause</th>
5659<th align="center">New State</th>
5660<th align="center">Notes</th>
5661</tr>
5662</thead>
5663<tbody>
5664<tr>
5665<td align="center">INACTIVE</td>
5666<td align="center">Camera device initiates new scan</td>
5667<td align="center">PASSIVE_<wbr/>SCAN</td>
5668<td align="center">Start AF scan,<wbr/> Lens now moving</td>
5669</tr>
5670<tr>
5671<td align="center">INACTIVE</td>
5672<td align="center">AF_<wbr/>TRIGGER</td>
5673<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
5674<td align="center">AF state query,<wbr/> Lens now locked</td>
5675</tr>
5676<tr>
5677<td align="center">PASSIVE_<wbr/>SCAN</td>
5678<td align="center">Camera device completes current scan</td>
5679<td align="center">PASSIVE_<wbr/>FOCUSED</td>
5680<td align="center">End AF scan,<wbr/> Lens now locked</td>
5681</tr>
5682<tr>
5683<td align="center">PASSIVE_<wbr/>SCAN</td>
5684<td align="center">Camera device fails current scan</td>
5685<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
5686<td align="center">End AF scan,<wbr/> Lens now locked</td>
5687</tr>
5688<tr>
5689<td align="center">PASSIVE_<wbr/>SCAN</td>
5690<td align="center">AF_<wbr/>TRIGGER</td>
5691<td align="center">FOCUSED_<wbr/>LOCKED</td>
5692<td align="center">Eventual trans.<wbr/> once focus good,<wbr/> Lens now locked</td>
5693</tr>
5694<tr>
5695<td align="center">PASSIVE_<wbr/>SCAN</td>
5696<td align="center">AF_<wbr/>TRIGGER</td>
5697<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
5698<td align="center">Eventual trans.<wbr/> if cannot focus,<wbr/> Lens now locked</td>
5699</tr>
5700<tr>
5701<td align="center">PASSIVE_<wbr/>SCAN</td>
5702<td align="center">AF_<wbr/>CANCEL</td>
5703<td align="center">INACTIVE</td>
5704<td align="center">Reset lens position,<wbr/> Lens now locked</td>
5705</tr>
5706<tr>
5707<td align="center">PASSIVE_<wbr/>FOCUSED</td>
5708<td align="center">Camera device initiates new scan</td>
5709<td align="center">PASSIVE_<wbr/>SCAN</td>
5710<td align="center">Start AF scan,<wbr/> Lens now moving</td>
5711</tr>
5712<tr>
5713<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
5714<td align="center">Camera device initiates new scan</td>
5715<td align="center">PASSIVE_<wbr/>SCAN</td>
5716<td align="center">Start AF scan,<wbr/> Lens now moving</td>
5717</tr>
5718<tr>
5719<td align="center">PASSIVE_<wbr/>FOCUSED</td>
5720<td align="center">AF_<wbr/>TRIGGER</td>
5721<td align="center">FOCUSED_<wbr/>LOCKED</td>
5722<td align="center">Immediate trans.<wbr/> Lens now locked</td>
5723</tr>
5724<tr>
5725<td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
5726<td align="center">AF_<wbr/>TRIGGER</td>
5727<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
5728<td align="center">Immediate trans.<wbr/> Lens now locked</td>
5729</tr>
5730<tr>
5731<td align="center">FOCUSED_<wbr/>LOCKED</td>
5732<td align="center">AF_<wbr/>TRIGGER</td>
5733<td align="center">FOCUSED_<wbr/>LOCKED</td>
5734<td align="center">No effect</td>
5735</tr>
5736<tr>
5737<td align="center">FOCUSED_<wbr/>LOCKED</td>
5738<td align="center">AF_<wbr/>CANCEL</td>
5739<td align="center">INACTIVE</td>
5740<td align="center">Restart AF scan</td>
5741</tr>
5742<tr>
5743<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
5744<td align="center">AF_<wbr/>TRIGGER</td>
5745<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
5746<td align="center">No effect</td>
5747</tr>
5748<tr>
5749<td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
5750<td align="center">AF_<wbr/>CANCEL</td>
5751<td align="center">INACTIVE</td>
5752<td align="center">Restart AF scan</td>
5753</tr>
5754</tbody>
5755</table>
5756<p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
5757(AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
5758camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
5759will be evaluated in the context of the new mode in the request.<wbr/>
5760See below table for examples:</p>
5761<table>
5762<thead>
5763<tr>
5764<th align="center">State</th>
5765<th align="center">Transition Cause</th>
5766<th align="center">New State</th>
5767<th align="center">Notes</th>
5768</tr>
5769</thead>
5770<tbody>
5771<tr>
5772<td align="center">any state</td>
5773<td align="center">CAF--&gt;AUTO mode switch</td>
5774<td align="center">INACTIVE</td>
5775<td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
5776</tr>
5777<tr>
5778<td align="center">any state</td>
5779<td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
5780<td align="center">trigger-reachable states from INACTIVE</td>
5781<td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
5782</tr>
5783<tr>
5784<td align="center">any state</td>
5785<td align="center">AUTO--&gt;CAF mode switch</td>
5786<td align="center">passively reachable states from INACTIVE</td>
5787<td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
5788</tr>
5789</tbody>
5790</table>
5791            </td>
5792          </tr>
5793
5794
5795          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5796           <!-- end of entry -->
5797        
5798                
5799          <tr class="entry" id="dynamic_android.control.afTriggerId">
5800            <td class="entry_name
5801                entry_name_deprecated
5802             " rowspan="3">
5803              android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
5804            </td>
5805            <td class="entry_type">
5806                <span class="entry_type_name">int32</span>
5807
5808              <span class="entry_type_visibility"> [system]</span>
5809
5810
5811              <span class="entry_type_deprecated">[deprecated] </span>
5812
5813
5814
5815            </td> <!-- entry_type -->
5816
5817            <td class="entry_description">
5818              <p>The ID sent with the latest
5819CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
5820            </td>
5821
5822            <td class="entry_units">
5823            </td>
5824
5825            <td class="entry_range">
5826              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5827            </td>
5828
5829            <td class="entry_tags">
5830            </td>
5831
5832          </tr>
5833          <tr class="entries_header">
5834            <th class="th_details" colspan="5">Details</th>
5835          </tr>
5836          <tr class="entry_cont">
5837            <td class="entry_details" colspan="5">
5838              <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
5839received yet by HAL.<wbr/> Always updated even if AF algorithm
5840ignores the trigger</p>
5841            </td>
5842          </tr>
5843
5844
5845          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5846           <!-- end of entry -->
5847        
5848                
5849          <tr class="entry" id="dynamic_android.control.awbLock">
5850            <td class="entry_name
5851             " rowspan="3">
5852              android.<wbr/>control.<wbr/>awb<wbr/>Lock
5853            </td>
5854            <td class="entry_type">
5855                <span class="entry_type_name entry_type_name_enum">byte</span>
5856
5857              <span class="entry_type_visibility"> [public as boolean]</span>
5858
5859
5860
5861
5862                <ul class="entry_type_enum">
5863                  <li>
5864                    <span class="entry_type_enum_name">OFF</span>
5865                    <span class="entry_type_enum_notes"><p>Auto-whitebalance lock is disabled; the AWB
5866algorithm is free to update its parameters if in AUTO
5867mode.<wbr/></p></span>
5868                  </li>
5869                  <li>
5870                    <span class="entry_type_enum_name">ON</span>
5871                    <span class="entry_type_enum_notes"><p>Auto-whitebalance lock is enabled; the AWB
5872algorithm must not update its parameters while the lock
5873is active.<wbr/></p></span>
5874                  </li>
5875                </ul>
5876
5877            </td> <!-- entry_type -->
5878
5879            <td class="entry_description">
5880              <p>Whether AWB is currently locked to its
5881latest calculated values.<wbr/></p>
5882            </td>
5883
5884            <td class="entry_units">
5885            </td>
5886
5887            <td class="entry_range">
5888            </td>
5889
5890            <td class="entry_tags">
5891              <ul class="entry_tags">
5892                  <li><a href="#tag_BC">BC</a></li>
5893              </ul>
5894            </td>
5895
5896          </tr>
5897          <tr class="entries_header">
5898            <th class="th_details" colspan="5">Details</th>
5899          </tr>
5900          <tr class="entry_cont">
5901            <td class="entry_details" colspan="5">
5902              <p>Note that AWB lock is only meaningful for AUTO
5903mode; in other modes,<wbr/> AWB is already fixed to a specific
5904setting.<wbr/></p>
5905            </td>
5906          </tr>
5907
5908
5909          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5910           <!-- end of entry -->
5911        
5912                
5913          <tr class="entry" id="dynamic_android.control.awbMode">
5914            <td class="entry_name
5915             " rowspan="3">
5916              android.<wbr/>control.<wbr/>awb<wbr/>Mode
5917            </td>
5918            <td class="entry_type">
5919                <span class="entry_type_name entry_type_name_enum">byte</span>
5920
5921              <span class="entry_type_visibility"> [public]</span>
5922
5923
5924
5925
5926                <ul class="entry_type_enum">
5927                  <li>
5928                    <span class="entry_type_enum_name">OFF</span>
5929                    <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled;
5930the application-selected color transform matrix
5931(<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
5932(<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
5933device for manual white balance control.<wbr/></p></span>
5934                  </li>
5935                  <li>
5936                    <span class="entry_type_enum_name">AUTO</span>
5937                    <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is active;
5938the application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
5939and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/></p></span>
5940                  </li>
5941                  <li>
5942                    <span class="entry_type_enum_name">INCANDESCENT</span>
5943                    <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled;
5944the camera device uses incandescent light as the assumed scene
5945illumination for white balance.<wbr/> While the exact white balance
5946transforms are up to the camera device,<wbr/> they will approximately
5947match the CIE standard illuminant A.<wbr/></p></span>
5948                  </li>
5949                  <li>
5950                    <span class="entry_type_enum_name">FLUORESCENT</span>
5951                    <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled;
5952the camera device uses fluorescent light as the assumed scene
5953illumination for white balance.<wbr/> While the exact white balance
5954transforms are up to the camera device,<wbr/> they will approximately
5955match the CIE standard illuminant F2.<wbr/></p></span>
5956                  </li>
5957                  <li>
5958                    <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
5959                    <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled;
5960the camera device uses warm fluorescent light as the assumed scene
5961illumination for white balance.<wbr/> While the exact white balance
5962transforms are up to the camera device,<wbr/> they will approximately
5963match the CIE standard illuminant F4.<wbr/></p></span>
5964                  </li>
5965                  <li>
5966                    <span class="entry_type_enum_name">DAYLIGHT</span>
5967                    <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled;
5968the camera device uses daylight light as the assumed scene
5969illumination for white balance.<wbr/> While the exact white balance
5970transforms are up to the camera device,<wbr/> they will approximately
5971match the CIE standard illuminant D65.<wbr/></p></span>
5972                  </li>
5973                  <li>
5974                    <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
5975                    <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled;
5976the camera device uses cloudy daylight light as the assumed scene
5977illumination for white balance.<wbr/></p></span>
5978                  </li>
5979                  <li>
5980                    <span class="entry_type_enum_name">TWILIGHT</span>
5981                    <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled;
5982the camera device uses twilight light as the assumed scene
5983illumination for white balance.<wbr/></p></span>
5984                  </li>
5985                  <li>
5986                    <span class="entry_type_enum_name">SHADE</span>
5987                    <span class="entry_type_enum_notes"><p>The camera device's auto white balance routine is disabled;
5988the camera device uses shade light as the assumed scene
5989illumination for white balance.<wbr/></p></span>
5990                  </li>
5991                </ul>
5992
5993            </td> <!-- entry_type -->
5994
5995            <td class="entry_description">
5996              <p>Whether AWB is currently setting the color
5997transform fields,<wbr/> and what its illumination target
5998is.<wbr/></p>
5999            </td>
6000
6001            <td class="entry_units">
6002            </td>
6003
6004            <td class="entry_range">
6005              <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
6006            </td>
6007
6008            <td class="entry_tags">
6009              <ul class="entry_tags">
6010                  <li><a href="#tag_BC">BC</a></li>
6011              </ul>
6012            </td>
6013
6014          </tr>
6015          <tr class="entries_header">
6016            <th class="th_details" colspan="5">Details</th>
6017          </tr>
6018          <tr class="entry_cont">
6019            <td class="entry_details" colspan="5">
6020              <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
6021<p>When set to the ON mode,<wbr/> the camera device's auto white balance
6022routine is enabled,<wbr/> overriding the application's selected
6023<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
6024<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
6025<p>When set to the OFF mode,<wbr/> the camera device's auto white balance
6026routine is disabled.<wbr/> The application manually controls the white
6027balance 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>
6028and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
6029<p>When set to any other modes,<wbr/> the camera device's auto white balance
6030routine is disabled.<wbr/> The camera device uses each particular illumination
6031target for white balance adjustment.<wbr/></p>
6032            </td>
6033          </tr>
6034
6035
6036          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6037           <!-- end of entry -->
6038        
6039                
6040          <tr class="entry" id="dynamic_android.control.awbRegions">
6041            <td class="entry_name
6042             " rowspan="5">
6043              android.<wbr/>control.<wbr/>awb<wbr/>Regions
6044            </td>
6045            <td class="entry_type">
6046                <span class="entry_type_name">int32</span>
6047                <span class="entry_type_container">x</span>
6048
6049                <span class="entry_type_array">
6050                  5 x area_count
6051                </span>
6052              <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6053
6054
6055
6056
6057
6058            </td> <!-- entry_type -->
6059
6060            <td class="entry_description">
6061              <p>List of areas to use for illuminant
6062estimation.<wbr/></p>
6063            </td>
6064
6065            <td class="entry_units">
6066            </td>
6067
6068            <td class="entry_range">
6069              <p><code>area_<wbr/>count &lt;= <a href="#static_android.control.maxRegions">android.<wbr/>control.<wbr/>max<wbr/>Regions</a>[1]</code></p>
6070            </td>
6071
6072            <td class="entry_tags">
6073              <ul class="entry_tags">
6074                  <li><a href="#tag_BC">BC</a></li>
6075              </ul>
6076            </td>
6077
6078          </tr>
6079          <tr class="entries_header">
6080            <th class="th_details" colspan="5">Details</th>
6081          </tr>
6082          <tr class="entry_cont">
6083            <td class="entry_details" colspan="5">
6084              <p>The coordinate system is based on the active pixel array,<wbr/>
6085with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6086(<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6087<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6088bottom-right pixel in the active pixel array.<wbr/></p>
6089<p>The weight must range from 0 to 1000,<wbr/> and represents a weight
6090for every pixel in the area.<wbr/> This means that a large metering area
6091with the same weight as a smaller area will have more effect in
6092the metering result.<wbr/> Metering areas can partially overlap and the
6093camera device will add the weights in the overlap region.<wbr/></p>
6094<p>If all regions have 0 weight,<wbr/> then no specific metering area
6095needs to be used by the camera device.<wbr/> If the metering region is
6096outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in capture result metadata,<wbr/>
6097the camera device will ignore the sections outside the region and output the
6098used sections in the result metadata.<wbr/></p>
6099            </td>
6100          </tr>
6101
6102          <tr class="entries_header">
6103            <th class="th_details" colspan="5">HAL Implementation Details</th>
6104          </tr>
6105          <tr class="entry_cont">
6106            <td class="entry_details" colspan="5">
6107              <p>The HAL level representation of MeteringRectangle[] is a
6108int[5 * area_<wbr/>count].<wbr/>
6109Every five elements represent a metering region of
6110(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6111The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6112exclusive on xmax and ymax.<wbr/></p>
6113            </td>
6114          </tr>
6115
6116          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6117           <!-- end of entry -->
6118        
6119                
6120          <tr class="entry" id="dynamic_android.control.captureIntent">
6121            <td class="entry_name
6122             " rowspan="3">
6123              android.<wbr/>control.<wbr/>capture<wbr/>Intent
6124            </td>
6125            <td class="entry_type">
6126                <span class="entry_type_name entry_type_name_enum">byte</span>
6127
6128              <span class="entry_type_visibility"> [public]</span>
6129
6130
6131
6132
6133                <ul class="entry_type_enum">
6134                  <li>
6135                    <span class="entry_type_enum_name">CUSTOM</span>
6136                    <span class="entry_type_enum_notes"><p>This request doesn't fall into the other
6137categories.<wbr/> Default to preview-like
6138behavior.<wbr/></p></span>
6139                  </li>
6140                  <li>
6141                    <span class="entry_type_enum_name">PREVIEW</span>
6142                    <span class="entry_type_enum_notes"><p>This request is for a preview-like usecase.<wbr/> The
6143precapture trigger may be used to start off a metering
6144w/<wbr/>flash sequence</p></span>
6145                  </li>
6146                  <li>
6147                    <span class="entry_type_enum_name">STILL_CAPTURE</span>
6148                    <span class="entry_type_enum_notes"><p>This request is for a still capture-type
6149usecase.<wbr/></p></span>
6150                  </li>
6151                  <li>
6152                    <span class="entry_type_enum_name">VIDEO_RECORD</span>
6153                    <span class="entry_type_enum_notes"><p>This request is for a video recording
6154usecase.<wbr/></p></span>
6155                  </li>
6156                  <li>
6157                    <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
6158                    <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
6159image while recording video) usecase</p></span>
6160                  </li>
6161                  <li>
6162                    <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
6163                    <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
6164application will stream full-resolution images and
6165reprocess one or several later for a final
6166capture</p></span>
6167                  </li>
6168                  <li>
6169                    <span class="entry_type_enum_name">MANUAL</span>
6170                    <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
6171the applications want to directly control the capture parameters
6172(e.<wbr/>g.<wbr/> <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> etc.<wbr/>).<wbr/></p></span>
6173                  </li>
6174                </ul>
6175
6176            </td> <!-- entry_type -->
6177
6178            <td class="entry_description">
6179              <p>Information to the camera device 3A (auto-exposure,<wbr/>
6180auto-focus,<wbr/> auto-white balance) routines about the purpose
6181of this capture,<wbr/> to help the camera device to decide optimal 3A
6182strategy.<wbr/></p>
6183            </td>
6184
6185            <td class="entry_units">
6186            </td>
6187
6188            <td class="entry_range">
6189              <p>All must be supported except for ZERO_<wbr/>SHUTTER_<wbr/>LAG and MANUAL.<wbr/></p>
6190            </td>
6191
6192            <td class="entry_tags">
6193              <ul class="entry_tags">
6194                  <li><a href="#tag_BC">BC</a></li>
6195              </ul>
6196            </td>
6197
6198          </tr>
6199          <tr class="entries_header">
6200            <th class="th_details" colspan="5">Details</th>
6201          </tr>
6202          <tr class="entry_cont">
6203            <td class="entry_details" colspan="5">
6204              <p>This control (except for MANUAL) is only effective if
6205<code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
6206<p>ZERO_<wbr/>SHUTTER_<wbr/>LAG must be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
6207contains ZSL.<wbr/> MANUAL must be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
6208contains MANUAL_<wbr/>SENSOR.<wbr/></p>
6209            </td>
6210          </tr>
6211
6212
6213          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6214           <!-- end of entry -->
6215        
6216                
6217          <tr class="entry" id="dynamic_android.control.awbState">
6218            <td class="entry_name
6219             " rowspan="3">
6220              android.<wbr/>control.<wbr/>awb<wbr/>State
6221            </td>
6222            <td class="entry_type">
6223                <span class="entry_type_name entry_type_name_enum">byte</span>
6224
6225              <span class="entry_type_visibility"> [public]</span>
6226
6227
6228
6229
6230                <ul class="entry_type_enum">
6231                  <li>
6232                    <span class="entry_type_enum_name">INACTIVE</span>
6233                    <span class="entry_type_enum_notes"><p>AWB is not in auto mode.<wbr/>  When a camera device is opened,<wbr/> it
6234starts in this state.<wbr/> This is a transient state,<wbr/> the camera device may
6235skip reporting this state in capture result.<wbr/></p></span>
6236                  </li>
6237                  <li>
6238                    <span class="entry_type_enum_name">SEARCHING</span>
6239                    <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
6240values for the current scene.<wbr/> This is a transient state,<wbr/> the camera device
6241may skip reporting this state in capture result.<wbr/></p></span>
6242                  </li>
6243                  <li>
6244                    <span class="entry_type_enum_name">CONVERGED</span>
6245                    <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
6246current scene.<wbr/></p></span>
6247                  </li>
6248                  <li>
6249                    <span class="entry_type_enum_name">LOCKED</span>
6250                    <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
6251                  </li>
6252                </ul>
6253
6254            </td> <!-- entry_type -->
6255
6256            <td class="entry_description">
6257              <p>Current state of AWB algorithm</p>
6258            </td>
6259
6260            <td class="entry_units">
6261            </td>
6262
6263            <td class="entry_range">
6264            </td>
6265
6266            <td class="entry_tags">
6267            </td>
6268
6269          </tr>
6270          <tr class="entries_header">
6271            <th class="th_details" colspan="5">Details</th>
6272          </tr>
6273          <tr class="entry_cont">
6274            <td class="entry_details" colspan="5">
6275              <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
6276resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6277or <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
6278the algorithm states to INACTIVE.<wbr/></p>
6279<p>The camera device can do several state transitions between two results,<wbr/> if it is
6280allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
6281a result.<wbr/></p>
6282<p>The state in the result is the state for this image (in sync with this image): if
6283AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
6284be good to use.<wbr/></p>
6285<p>Below are state transition tables for different AWB modes.<wbr/></p>
6286<p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
6287<table>
6288<thead>
6289<tr>
6290<th align="center">State</th>
6291<th align="center">Transition Cause</th>
6292<th align="center">New State</th>
6293<th align="center">Notes</th>
6294</tr>
6295</thead>
6296<tbody>
6297<tr>
6298<td align="center">INACTIVE</td>
6299<td align="center"></td>
6300<td align="center">INACTIVE</td>
6301<td align="center">Camera device auto white balance algorithm is disabled</td>
6302</tr>
6303</tbody>
6304</table>
6305<p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
6306<table>
6307<thead>
6308<tr>
6309<th align="center">State</th>
6310<th align="center">Transition Cause</th>
6311<th align="center">New State</th>
6312<th align="center">Notes</th>
6313</tr>
6314</thead>
6315<tbody>
6316<tr>
6317<td align="center">INACTIVE</td>
6318<td align="center">Camera device initiates AWB scan</td>
6319<td align="center">SEARCHING</td>
6320<td align="center">Values changing</td>
6321</tr>
6322<tr>
6323<td align="center">INACTIVE</td>
6324<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
6325<td align="center">LOCKED</td>
6326<td align="center">Values locked</td>
6327</tr>
6328<tr>
6329<td align="center">SEARCHING</td>
6330<td align="center">Camera device finishes AWB scan</td>
6331<td align="center">CONVERGED</td>
6332<td align="center">Good values,<wbr/> not changing</td>
6333</tr>
6334<tr>
6335<td align="center">SEARCHING</td>
6336<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
6337<td align="center">LOCKED</td>
6338<td align="center">Values locked</td>
6339</tr>
6340<tr>
6341<td align="center">CONVERGED</td>
6342<td align="center">Camera device initiates AWB scan</td>
6343<td align="center">SEARCHING</td>
6344<td align="center">Values changing</td>
6345</tr>
6346<tr>
6347<td align="center">CONVERGED</td>
6348<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
6349<td align="center">LOCKED</td>
6350<td align="center">Values locked</td>
6351</tr>
6352<tr>
6353<td align="center">LOCKED</td>
6354<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
6355<td align="center">SEARCHING</td>
6356<td align="center">Values not good after unlock</td>
6357</tr>
6358</tbody>
6359</table>
6360<p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6361without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6362can be skipped in that manner is called a transient state.<wbr/></p>
6363<p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
6364listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6365transient states between two results.<wbr/> See below table for examples:</p>
6366<table>
6367<thead>
6368<tr>
6369<th align="center">State</th>
6370<th align="center">Transition Cause</th>
6371<th align="center">New State</th>
6372<th align="center">Notes</th>
6373</tr>
6374</thead>
6375<tbody>
6376<tr>
6377<td align="center">INACTIVE</td>
6378<td align="center">Camera device finished AWB scan</td>
6379<td align="center">CONVERGED</td>
6380<td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6381</tr>
6382<tr>
6383<td align="center">LOCKED</td>
6384<td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
6385<td align="center">CONVERGED</td>
6386<td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
6387</tr>
6388</tbody>
6389</table>
6390            </td>
6391          </tr>
6392
6393
6394          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6395           <!-- end of entry -->
6396        
6397                
6398          <tr class="entry" id="dynamic_android.control.effectMode">
6399            <td class="entry_name
6400             " rowspan="3">
6401              android.<wbr/>control.<wbr/>effect<wbr/>Mode
6402            </td>
6403            <td class="entry_type">
6404                <span class="entry_type_name entry_type_name_enum">byte</span>
6405
6406              <span class="entry_type_visibility"> [public]</span>
6407
6408
6409
6410
6411                <ul class="entry_type_enum">
6412                  <li>
6413                    <span class="entry_type_enum_name">OFF</span>
6414                    <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
6415                  </li>
6416                  <li>
6417                    <span class="entry_type_enum_name">MONO</span>
6418                    <span class="entry_type_enum_optional">optional</span>
6419                    <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
6420a single color.<wbr/>  This will typically be grayscale.<wbr/></p></span>
6421                  </li>
6422                  <li>
6423                    <span class="entry_type_enum_name">NEGATIVE</span>
6424                    <span class="entry_type_enum_optional">optional</span>
6425                    <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
6426are inverted.<wbr/></p></span>
6427                  </li>
6428                  <li>
6429                    <span class="entry_type_enum_name">SOLARIZE</span>
6430                    <span class="entry_type_enum_optional">optional</span>
6431                    <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
6432image is wholly or partially reversed in
6433tone.<wbr/></p></span>
6434                  </li>
6435                  <li>
6436                    <span class="entry_type_enum_name">SEPIA</span>
6437                    <span class="entry_type_enum_optional">optional</span>
6438                    <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
6439gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
6440                  </li>
6441                  <li>
6442                    <span class="entry_type_enum_name">POSTERIZE</span>
6443                    <span class="entry_type_enum_optional">optional</span>
6444                    <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
6445discrete regions of tone rather than a continuous
6446gradient of tones.<wbr/></p></span>
6447                  </li>
6448                  <li>
6449                    <span class="entry_type_enum_name">WHITEBOARD</span>
6450                    <span class="entry_type_enum_optional">optional</span>
6451                    <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
6452as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
6453                  </li>
6454                  <li>
6455                    <span class="entry_type_enum_name">BLACKBOARD</span>
6456                    <span class="entry_type_enum_optional">optional</span>
6457                    <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
6458as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
6459                  </li>
6460                  <li>
6461                    <span class="entry_type_enum_name">AQUA</span>
6462                    <span class="entry_type_enum_optional">optional</span>
6463                    <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
6464                  </li>
6465                </ul>
6466
6467            </td> <!-- entry_type -->
6468
6469            <td class="entry_description">
6470              <p>A special color effect to apply.<wbr/></p>
6471            </td>
6472
6473            <td class="entry_units">
6474            </td>
6475
6476            <td class="entry_range">
6477              <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
6478            </td>
6479
6480            <td class="entry_tags">
6481              <ul class="entry_tags">
6482                  <li><a href="#tag_BC">BC</a></li>
6483              </ul>
6484            </td>
6485
6486          </tr>
6487          <tr class="entries_header">
6488            <th class="th_details" colspan="5">Details</th>
6489          </tr>
6490          <tr class="entry_cont">
6491            <td class="entry_details" colspan="5">
6492              <p>When this mode is set,<wbr/> a color effect will be applied
6493to images produced by the camera device.<wbr/> The interpretation
6494and implementation of these color effects is left to the
6495implementor of the camera device,<wbr/> and should not be
6496depended on to be consistent (or present) across all
6497devices.<wbr/></p>
6498<p>A color effect will only be applied if
6499<a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/></p>
6500            </td>
6501          </tr>
6502
6503
6504          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6505           <!-- end of entry -->
6506        
6507                
6508          <tr class="entry" id="dynamic_android.control.mode">
6509            <td class="entry_name
6510             " rowspan="3">
6511              android.<wbr/>control.<wbr/>mode
6512            </td>
6513            <td class="entry_type">
6514                <span class="entry_type_name entry_type_name_enum">byte</span>
6515
6516              <span class="entry_type_visibility"> [public]</span>
6517
6518
6519
6520
6521                <ul class="entry_type_enum">
6522                  <li>
6523                    <span class="entry_type_enum_name">OFF</span>
6524                    <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/> All 3A
6525routines are disabled,<wbr/> no other settings in
6526android.<wbr/>control.<wbr/>* have any effect</p></span>
6527                  </li>
6528                  <li>
6529                    <span class="entry_type_enum_name">AUTO</span>
6530                    <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/>
6531Manual control of capture parameters is disabled.<wbr/> All
6532controls in android.<wbr/>control.<wbr/>* besides sceneMode take
6533effect</p></span>
6534                  </li>
6535                  <li>
6536                    <span class="entry_type_enum_name">USE_SCENE_MODE</span>
6537                    <span class="entry_type_enum_notes"><p>Use specific scene mode.<wbr/> Enabling this disables
6538control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and control.<wbr/>afMode
6539controls; the camera device will ignore those settings while
6540USE_<wbr/>SCENE_<wbr/>MODE is active (except for FACE_<wbr/>PRIORITY
6541scene mode).<wbr/> Other control entries are still active.<wbr/>
6542This setting can only be used if scene mode is supported
6543(i.<wbr/>e.<wbr/> <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a> contain some modes
6544other than DISABLED).<wbr/></p></span>
6545                  </li>
6546                  <li>
6547                    <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
6548                    <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
6549used by camera device background auto-exposure,<wbr/> auto-white balance and
6550auto-focus algorithms to update their statistics.<wbr/></p></span>
6551                  </li>
6552                </ul>
6553
6554            </td> <!-- entry_type -->
6555
6556            <td class="entry_description">
6557              <p>Overall mode of 3A control
6558routines.<wbr/></p>
6559            </td>
6560
6561            <td class="entry_units">
6562            </td>
6563
6564            <td class="entry_range">
6565              <p>all must be supported</p>
6566            </td>
6567
6568            <td class="entry_tags">
6569              <ul class="entry_tags">
6570                  <li><a href="#tag_BC">BC</a></li>
6571              </ul>
6572            </td>
6573
6574          </tr>
6575          <tr class="entries_header">
6576            <th class="th_details" colspan="5">Details</th>
6577          </tr>
6578          <tr class="entry_cont">
6579            <td class="entry_details" colspan="5">
6580              <p>High-level 3A control.<wbr/> When set to OFF,<wbr/> all 3A control
6581by the camera device is disabled.<wbr/> The application must set the fields for
6582capture parameters itself.<wbr/></p>
6583<p>When set to AUTO,<wbr/> the individual algorithm controls in
6584android.<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>
6585<p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
6586android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
6587one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
6588as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
6589<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
6590<p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
6591is that this frame will not be used by camera device background 3A statistics
6592update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
6593where the application doesn't want a 3A manual control capture to affect
6594the subsequent auto 3A capture results.<wbr/></p>
6595            </td>
6596          </tr>
6597
6598
6599          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6600           <!-- end of entry -->
6601        
6602                
6603          <tr class="entry" id="dynamic_android.control.sceneMode">
6604            <td class="entry_name
6605             " rowspan="5">
6606              android.<wbr/>control.<wbr/>scene<wbr/>Mode
6607            </td>
6608            <td class="entry_type">
6609                <span class="entry_type_name entry_type_name_enum">byte</span>
6610
6611              <span class="entry_type_visibility"> [public]</span>
6612
6613
6614
6615
6616                <ul class="entry_type_enum">
6617                  <li>
6618                    <span class="entry_type_enum_name">DISABLED</span>
6619                    <span class="entry_type_enum_value">0</span>
6620                    <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
6621                  </li>
6622                  <li>
6623                    <span class="entry_type_enum_name">FACE_PRIORITY</span>
6624                    <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
6625detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
6626auto-exposure routines.<wbr/> If face detection statistics are
6627disabled (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/>
6628this should still operate correctly (but will not return
6629face detection statistics to the framework).<wbr/></p>
6630<p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
6631<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>
6632remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
6633                  </li>
6634                  <li>
6635                    <span class="entry_type_enum_name">ACTION</span>
6636                    <span class="entry_type_enum_optional">optional</span>
6637                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/>
6638Similar to SPORTS.<wbr/></p></span>
6639                  </li>
6640                  <li>
6641                    <span class="entry_type_enum_name">PORTRAIT</span>
6642                    <span class="entry_type_enum_optional">optional</span>
6643                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
6644                  </li>
6645                  <li>
6646                    <span class="entry_type_enum_name">LANDSCAPE</span>
6647                    <span class="entry_type_enum_optional">optional</span>
6648                    <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
6649                  </li>
6650                  <li>
6651                    <span class="entry_type_enum_name">NIGHT</span>
6652                    <span class="entry_type_enum_optional">optional</span>
6653                    <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
6654                  </li>
6655                  <li>
6656                    <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
6657                    <span class="entry_type_enum_optional">optional</span>
6658                    <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
6659settings.<wbr/></p></span>
6660                  </li>
6661                  <li>
6662                    <span class="entry_type_enum_name">THEATRE</span>
6663                    <span class="entry_type_enum_optional">optional</span>
6664                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
6665remain off.<wbr/></p></span>
6666                  </li>
6667                  <li>
6668                    <span class="entry_type_enum_name">BEACH</span>
6669                    <span class="entry_type_enum_optional">optional</span>
6670                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
6671                  </li>
6672                  <li>
6673                    <span class="entry_type_enum_name">SNOW</span>
6674                    <span class="entry_type_enum_optional">optional</span>
6675                    <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
6676                  </li>
6677                  <li>
6678                    <span class="entry_type_enum_name">SUNSET</span>
6679                    <span class="entry_type_enum_optional">optional</span>
6680                    <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
6681                  </li>
6682                  <li>
6683                    <span class="entry_type_enum_name">STEADYPHOTO</span>
6684                    <span class="entry_type_enum_optional">optional</span>
6685                    <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
6686device motion (for example: due to hand shake).<wbr/></p></span>
6687                  </li>
6688                  <li>
6689                    <span class="entry_type_enum_name">FIREWORKS</span>
6690                    <span class="entry_type_enum_optional">optional</span>
6691                    <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
6692                  </li>
6693                  <li>
6694                    <span class="entry_type_enum_name">SPORTS</span>
6695                    <span class="entry_type_enum_optional">optional</span>
6696                    <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/>
6697Similar to ACTION.<wbr/></p></span>
6698                  </li>
6699                  <li>
6700                    <span class="entry_type_enum_name">PARTY</span>
6701                    <span class="entry_type_enum_optional">optional</span>
6702                    <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
6703people.<wbr/></p></span>
6704                  </li>
6705                  <li>
6706                    <span class="entry_type_enum_name">CANDLELIGHT</span>
6707                    <span class="entry_type_enum_optional">optional</span>
6708                    <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
6709is a flame.<wbr/></p></span>
6710                  </li>
6711                  <li>
6712                    <span class="entry_type_enum_name">BARCODE</span>
6713                    <span class="entry_type_enum_optional">optional</span>
6714                    <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
6715for use by camera applications that wish to read the
6716barcode value.<wbr/></p></span>
6717                  </li>
6718                </ul>
6719
6720            </td> <!-- entry_type -->
6721
6722            <td class="entry_description">
6723              <p>A camera mode optimized for conditions typical in a particular
6724capture setting.<wbr/></p>
6725            </td>
6726
6727            <td class="entry_units">
6728            </td>
6729
6730            <td class="entry_range">
6731              <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
6732            </td>
6733
6734            <td class="entry_tags">
6735              <ul class="entry_tags">
6736                  <li><a href="#tag_BC">BC</a></li>
6737              </ul>
6738            </td>
6739
6740          </tr>
6741          <tr class="entries_header">
6742            <th class="th_details" colspan="5">Details</th>
6743          </tr>
6744          <tr class="entry_cont">
6745            <td class="entry_details" colspan="5">
6746              <p>This is the mode that that is active when
6747<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/>
6748these modes will disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
6749<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>
6750<p>The interpretation and implementation of these scene modes is left
6751to the implementor of the camera device.<wbr/> Their behavior will not be
6752consistent across all devices,<wbr/> and any given device may only implement
6753a subset of these modes.<wbr/></p>
6754            </td>
6755          </tr>
6756
6757          <tr class="entries_header">
6758            <th class="th_details" colspan="5">HAL Implementation Details</th>
6759          </tr>
6760          <tr class="entry_cont">
6761            <td class="entry_details" colspan="5">
6762              <p>HAL implementations that include scene modes are expected to provide
6763the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
6764<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
6765<a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
6766            </td>
6767          </tr>
6768
6769          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6770           <!-- end of entry -->
6771        
6772                
6773          <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
6774            <td class="entry_name
6775             " rowspan="3">
6776              android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
6777            </td>
6778            <td class="entry_type">
6779                <span class="entry_type_name entry_type_name_enum">byte</span>
6780
6781              <span class="entry_type_visibility"> [public]</span>
6782
6783
6784
6785
6786                <ul class="entry_type_enum">
6787                  <li>
6788                    <span class="entry_type_enum_name">OFF</span>
6789                  </li>
6790                  <li>
6791                    <span class="entry_type_enum_name">ON</span>
6792                  </li>
6793                </ul>
6794
6795            </td> <!-- entry_type -->
6796
6797            <td class="entry_description">
6798              <p>Whether video stabilization is
6799active</p>
6800            </td>
6801
6802            <td class="entry_units">
6803            </td>
6804
6805            <td class="entry_range">
6806            </td>
6807
6808            <td class="entry_tags">
6809              <ul class="entry_tags">
6810                  <li><a href="#tag_BC">BC</a></li>
6811              </ul>
6812            </td>
6813
6814          </tr>
6815          <tr class="entries_header">
6816            <th class="th_details" colspan="5">Details</th>
6817          </tr>
6818          <tr class="entry_cont">
6819            <td class="entry_details" colspan="5">
6820              <p>If enabled,<wbr/> video stabilization can modify the
6821<a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream
6822stabilized</p>
6823            </td>
6824          </tr>
6825
6826
6827          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6828           <!-- end of entry -->
6829        
6830        
6831
6832      <!-- end of kind -->
6833      </tbody>
6834
6835  <!-- end of section -->
6836  <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr>
6837
6838
6839      <tr><td colspan="6" class="kind">controls</td></tr>
6840
6841      <thead class="entries_header">
6842        <tr>
6843          <th class="th_name">Property Name</th>
6844          <th class="th_type">Type</th>
6845          <th class="th_description">Description</th>
6846          <th class="th_units">Units</th>
6847          <th class="th_range">Range</th>
6848          <th class="th_tags">Tags</th>
6849        </tr>
6850      </thead>
6851
6852      <tbody>
6853
6854        
6855
6856        
6857
6858        
6859
6860        
6861
6862                
6863          <tr class="entry" id="controls_android.demosaic.mode">
6864            <td class="entry_name
6865             " rowspan="1">
6866              android.<wbr/>demosaic.<wbr/>mode
6867            </td>
6868            <td class="entry_type">
6869                <span class="entry_type_name entry_type_name_enum">byte</span>
6870
6871              <span class="entry_type_visibility"> [system]</span>
6872
6873
6874
6875
6876                <ul class="entry_type_enum">
6877                  <li>
6878                    <span class="entry_type_enum_name">FAST</span>
6879                    <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
6880Bayer RAW output</p></span>
6881                  </li>
6882                  <li>
6883                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
6884                    <span class="entry_type_enum_notes"><p>High-quality may reduce output frame
6885rate</p></span>
6886                  </li>
6887                </ul>
6888
6889            </td> <!-- entry_type -->
6890
6891            <td class="entry_description">
6892              <p>Controls the quality of the demosaicing
6893processing</p>
6894            </td>
6895
6896            <td class="entry_units">
6897            </td>
6898
6899            <td class="entry_range">
6900            </td>
6901
6902            <td class="entry_tags">
6903              <ul class="entry_tags">
6904                  <li><a href="#tag_FUTURE">FUTURE</a></li>
6905              </ul>
6906            </td>
6907
6908          </tr>
6909
6910
6911          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6912           <!-- end of entry -->
6913        
6914        
6915
6916      <!-- end of kind -->
6917      </tbody>
6918
6919  <!-- end of section -->
6920  <tr><td colspan="6" id="section_edge" class="section">edge</td></tr>
6921
6922
6923      <tr><td colspan="6" class="kind">controls</td></tr>
6924
6925      <thead class="entries_header">
6926        <tr>
6927          <th class="th_name">Property Name</th>
6928          <th class="th_type">Type</th>
6929          <th class="th_description">Description</th>
6930          <th class="th_units">Units</th>
6931          <th class="th_range">Range</th>
6932          <th class="th_tags">Tags</th>
6933        </tr>
6934      </thead>
6935
6936      <tbody>
6937
6938        
6939
6940        
6941
6942        
6943
6944        
6945
6946                
6947          <tr class="entry" id="controls_android.edge.mode">
6948            <td class="entry_name
6949             " rowspan="3">
6950              android.<wbr/>edge.<wbr/>mode
6951            </td>
6952            <td class="entry_type">
6953                <span class="entry_type_name entry_type_name_enum">byte</span>
6954
6955              <span class="entry_type_visibility"> [public]</span>
6956
6957
6958
6959
6960                <ul class="entry_type_enum">
6961                  <li>
6962                    <span class="entry_type_enum_name">OFF</span>
6963                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied</p></span>
6964                  </li>
6965                  <li>
6966                    <span class="entry_type_enum_name">FAST</span>
6967                    <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor
6968output</p></span>
6969                  </li>
6970                  <li>
6971                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
6972                    <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high
6973quality</p></span>
6974                  </li>
6975                </ul>
6976
6977            </td> <!-- entry_type -->
6978
6979            <td class="entry_description">
6980              <p>Operation mode for edge
6981enhancement.<wbr/></p>
6982            </td>
6983
6984            <td class="entry_units">
6985            </td>
6986
6987            <td class="entry_range">
6988            </td>
6989
6990            <td class="entry_tags">
6991              <ul class="entry_tags">
6992                  <li><a href="#tag_V1">V1</a></li>
6993              </ul>
6994            </td>
6995
6996          </tr>
6997          <tr class="entries_header">
6998            <th class="th_details" colspan="5">Details</th>
6999          </tr>
7000          <tr class="entry_cont">
7001            <td class="entry_details" colspan="5">
7002              <p>Edge/<wbr/>sharpness/<wbr/>detail enhancement.<wbr/> OFF means no
7003enhancement will be applied by the camera device.<wbr/></p>
7004<p>This must be set to one of the modes listed in <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a>.<wbr/></p>
7005<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
7006will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
7007camera device will use the highest-quality enhancement algorithms,<wbr/>
7008even if it slows down capture rate.<wbr/> FAST means the camera device will
7009not slow down capture rate when applying edge enhancement.<wbr/></p>
7010            </td>
7011          </tr>
7012
7013
7014          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7015           <!-- end of entry -->
7016        
7017                
7018          <tr class="entry" id="controls_android.edge.strength">
7019            <td class="entry_name
7020             " rowspan="1">
7021              android.<wbr/>edge.<wbr/>strength
7022            </td>
7023            <td class="entry_type">
7024                <span class="entry_type_name">byte</span>
7025
7026              <span class="entry_type_visibility"> [system]</span>
7027
7028
7029
7030
7031
7032            </td> <!-- entry_type -->
7033
7034            <td class="entry_description">
7035              <p>Control the amount of edge enhancement
7036applied to the images</p>
7037            </td>
7038
7039            <td class="entry_units">
7040              1-10; 10 is maximum sharpening
7041            </td>
7042
7043            <td class="entry_range">
7044            </td>
7045
7046            <td class="entry_tags">
7047              <ul class="entry_tags">
7048                  <li><a href="#tag_FUTURE">FUTURE</a></li>
7049              </ul>
7050            </td>
7051
7052          </tr>
7053
7054
7055          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7056           <!-- end of entry -->
7057        
7058        
7059
7060      <!-- end of kind -->
7061      </tbody>
7062      <tr><td colspan="6" class="kind">static</td></tr>
7063
7064      <thead class="entries_header">
7065        <tr>
7066          <th class="th_name">Property Name</th>
7067          <th class="th_type">Type</th>
7068          <th class="th_description">Description</th>
7069          <th class="th_units">Units</th>
7070          <th class="th_range">Range</th>
7071          <th class="th_tags">Tags</th>
7072        </tr>
7073      </thead>
7074
7075      <tbody>
7076
7077        
7078
7079        
7080
7081        
7082
7083        
7084
7085                
7086          <tr class="entry" id="static_android.edge.availableEdgeModes">
7087            <td class="entry_name
7088             " rowspan="3">
7089              android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
7090            </td>
7091            <td class="entry_type">
7092                <span class="entry_type_name">byte</span>
7093                <span class="entry_type_container">x</span>
7094
7095                <span class="entry_type_array">
7096                  n
7097                </span>
7098              <span class="entry_type_visibility"> [public as enumList]</span>
7099
7100
7101
7102                <div class="entry_type_notes">list of enums</div>
7103
7104
7105            </td> <!-- entry_type -->
7106
7107            <td class="entry_description">
7108              <p>The set of edge enhancement modes supported by this camera device.<wbr/></p>
7109            </td>
7110
7111            <td class="entry_units">
7112            </td>
7113
7114            <td class="entry_range">
7115            </td>
7116
7117            <td class="entry_tags">
7118              <ul class="entry_tags">
7119                  <li><a href="#tag_V1">V1</a></li>
7120              </ul>
7121            </td>
7122
7123          </tr>
7124          <tr class="entries_header">
7125            <th class="th_details" colspan="5">Details</th>
7126          </tr>
7127          <tr class="entry_cont">
7128            <td class="entry_details" colspan="5">
7129              <p>This tag lists the valid modes for <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>.<wbr/></p>
7130<p>Full-capability camera devices must always support OFF and FAST.<wbr/></p>
7131            </td>
7132          </tr>
7133
7134
7135          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7136           <!-- end of entry -->
7137        
7138        
7139
7140      <!-- end of kind -->
7141      </tbody>
7142      <tr><td colspan="6" class="kind">dynamic</td></tr>
7143
7144      <thead class="entries_header">
7145        <tr>
7146          <th class="th_name">Property Name</th>
7147          <th class="th_type">Type</th>
7148          <th class="th_description">Description</th>
7149          <th class="th_units">Units</th>
7150          <th class="th_range">Range</th>
7151          <th class="th_tags">Tags</th>
7152        </tr>
7153      </thead>
7154
7155      <tbody>
7156
7157        
7158
7159        
7160
7161        
7162
7163        
7164
7165                
7166          <tr class="entry" id="dynamic_android.edge.mode">
7167            <td class="entry_name
7168             " rowspan="3">
7169              android.<wbr/>edge.<wbr/>mode
7170            </td>
7171            <td class="entry_type">
7172                <span class="entry_type_name entry_type_name_enum">byte</span>
7173
7174              <span class="entry_type_visibility"> [public]</span>
7175
7176
7177
7178
7179                <ul class="entry_type_enum">
7180                  <li>
7181                    <span class="entry_type_enum_name">OFF</span>
7182                    <span class="entry_type_enum_notes"><p>No edge enhancement is applied</p></span>
7183                  </li>
7184                  <li>
7185                    <span class="entry_type_enum_name">FAST</span>
7186                    <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor
7187output</p></span>
7188                  </li>
7189                  <li>
7190                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
7191                    <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high
7192quality</p></span>
7193                  </li>
7194                </ul>
7195
7196            </td> <!-- entry_type -->
7197
7198            <td class="entry_description">
7199              <p>Operation mode for edge
7200enhancement.<wbr/></p>
7201            </td>
7202
7203            <td class="entry_units">
7204            </td>
7205
7206            <td class="entry_range">
7207            </td>
7208
7209            <td class="entry_tags">
7210              <ul class="entry_tags">
7211                  <li><a href="#tag_V1">V1</a></li>
7212              </ul>
7213            </td>
7214
7215          </tr>
7216          <tr class="entries_header">
7217            <th class="th_details" colspan="5">Details</th>
7218          </tr>
7219          <tr class="entry_cont">
7220            <td class="entry_details" colspan="5">
7221              <p>Edge/<wbr/>sharpness/<wbr/>detail enhancement.<wbr/> OFF means no
7222enhancement will be applied by the camera device.<wbr/></p>
7223<p>This must be set to one of the modes listed in <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a>.<wbr/></p>
7224<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
7225will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
7226camera device will use the highest-quality enhancement algorithms,<wbr/>
7227even if it slows down capture rate.<wbr/> FAST means the camera device will
7228not slow down capture rate when applying edge enhancement.<wbr/></p>
7229            </td>
7230          </tr>
7231
7232
7233          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7234           <!-- end of entry -->
7235        
7236        
7237
7238      <!-- end of kind -->
7239      </tbody>
7240
7241  <!-- end of section -->
7242  <tr><td colspan="6" id="section_flash" class="section">flash</td></tr>
7243
7244
7245      <tr><td colspan="6" class="kind">controls</td></tr>
7246
7247      <thead class="entries_header">
7248        <tr>
7249          <th class="th_name">Property Name</th>
7250          <th class="th_type">Type</th>
7251          <th class="th_description">Description</th>
7252          <th class="th_units">Units</th>
7253          <th class="th_range">Range</th>
7254          <th class="th_tags">Tags</th>
7255        </tr>
7256      </thead>
7257
7258      <tbody>
7259
7260        
7261
7262        
7263
7264        
7265
7266        
7267
7268                
7269          <tr class="entry" id="controls_android.flash.firingPower">
7270            <td class="entry_name
7271             " rowspan="3">
7272              android.<wbr/>flash.<wbr/>firing<wbr/>Power
7273            </td>
7274            <td class="entry_type">
7275                <span class="entry_type_name">byte</span>
7276
7277              <span class="entry_type_visibility"> [system]</span>
7278
7279
7280
7281
7282
7283            </td> <!-- entry_type -->
7284
7285            <td class="entry_description">
7286              <p>Power for flash firing/<wbr/>torch</p>
7287            </td>
7288
7289            <td class="entry_units">
7290              10 is max power; 0 is no flash.<wbr/> Linear
7291            </td>
7292
7293            <td class="entry_range">
7294              <p>0 - 10</p>
7295            </td>
7296
7297            <td class="entry_tags">
7298              <ul class="entry_tags">
7299                  <li><a href="#tag_FUTURE">FUTURE</a></li>
7300              </ul>
7301            </td>
7302
7303          </tr>
7304          <tr class="entries_header">
7305            <th class="th_details" colspan="5">Details</th>
7306          </tr>
7307          <tr class="entry_cont">
7308            <td class="entry_details" colspan="5">
7309              <p>Power for snapshot may use a different scale than
7310for torch mode.<wbr/> Only one entry for torch mode will be
7311used</p>
7312            </td>
7313          </tr>
7314
7315
7316          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7317           <!-- end of entry -->
7318        
7319                
7320          <tr class="entry" id="controls_android.flash.firingTime">
7321            <td class="entry_name
7322             " rowspan="3">
7323              android.<wbr/>flash.<wbr/>firing<wbr/>Time
7324            </td>
7325            <td class="entry_type">
7326                <span class="entry_type_name">int64</span>
7327
7328              <span class="entry_type_visibility"> [system]</span>
7329
7330
7331
7332
7333
7334            </td> <!-- entry_type -->
7335
7336            <td class="entry_description">
7337              <p>Firing time of flash relative to start of
7338exposure</p>
7339            </td>
7340
7341            <td class="entry_units">
7342              nanoseconds
7343            </td>
7344
7345            <td class="entry_range">
7346              <p>0-(exposure time-flash duration)</p>
7347            </td>
7348
7349            <td class="entry_tags">
7350              <ul class="entry_tags">
7351                  <li><a href="#tag_FUTURE">FUTURE</a></li>
7352              </ul>
7353            </td>
7354
7355          </tr>
7356          <tr class="entries_header">
7357            <th class="th_details" colspan="5">Details</th>
7358          </tr>
7359          <tr class="entry_cont">
7360            <td class="entry_details" colspan="5">
7361              <p>Clamped to (0,<wbr/> exposure time - flash
7362duration).<wbr/></p>
7363            </td>
7364          </tr>
7365
7366
7367          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7368           <!-- end of entry -->
7369        
7370                
7371          <tr class="entry" id="controls_android.flash.mode">
7372            <td class="entry_name
7373             " rowspan="3">
7374              android.<wbr/>flash.<wbr/>mode
7375            </td>
7376            <td class="entry_type">
7377                <span class="entry_type_name entry_type_name_enum">byte</span>
7378
7379              <span class="entry_type_visibility"> [public]</span>
7380
7381
7382
7383
7384                <ul class="entry_type_enum">
7385                  <li>
7386                    <span class="entry_type_enum_name">OFF</span>
7387                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
7388                  </li>
7389                  <li>
7390                    <span class="entry_type_enum_name">SINGLE</span>
7391                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
7392for this capture.<wbr/></p></span>
7393                  </li>
7394                  <li>
7395                    <span class="entry_type_enum_name">TORCH</span>
7396                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
7397                  </li>
7398                </ul>
7399
7400            </td> <!-- entry_type -->
7401
7402            <td class="entry_description">
7403              <p>The desired mode for for the camera device's flash control.<wbr/></p>
7404            </td>
7405
7406            <td class="entry_units">
7407            </td>
7408
7409            <td class="entry_range">
7410            </td>
7411
7412            <td class="entry_tags">
7413              <ul class="entry_tags">
7414                  <li><a href="#tag_BC">BC</a></li>
7415              </ul>
7416            </td>
7417
7418          </tr>
7419          <tr class="entries_header">
7420            <th class="th_details" colspan="5">Details</th>
7421          </tr>
7422          <tr class="entry_cont">
7423            <td class="entry_details" colspan="5">
7424              <p>This control is only effective when flash unit is available
7425(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
7426<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/>
7427Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
7428ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
7429<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
7430<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
7431device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
7432control should be used along with AE precapture metering sequence
7433(<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>
7434<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
7435for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
7436<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>
7437            </td>
7438          </tr>
7439
7440
7441          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7442           <!-- end of entry -->
7443        
7444        
7445
7446      <!-- end of kind -->
7447      </tbody>
7448      <tr><td colspan="6" class="kind">static</td></tr>
7449
7450      <thead class="entries_header">
7451        <tr>
7452          <th class="th_name">Property Name</th>
7453          <th class="th_type">Type</th>
7454          <th class="th_description">Description</th>
7455          <th class="th_units">Units</th>
7456          <th class="th_range">Range</th>
7457          <th class="th_tags">Tags</th>
7458        </tr>
7459      </thead>
7460
7461      <tbody>
7462
7463        
7464
7465        
7466
7467        
7468
7469        
7470                
7471            
7472
7473                
7474          <tr class="entry" id="static_android.flash.info.available">
7475            <td class="entry_name
7476             " rowspan="3">
7477              android.<wbr/>flash.<wbr/>info.<wbr/>available
7478            </td>
7479            <td class="entry_type">
7480                <span class="entry_type_name entry_type_name_enum">byte</span>
7481
7482              <span class="entry_type_visibility"> [public as boolean]</span>
7483
7484
7485
7486
7487                <ul class="entry_type_enum">
7488                  <li>
7489                    <span class="entry_type_enum_name">FALSE</span>
7490                  </li>
7491                  <li>
7492                    <span class="entry_type_enum_name">TRUE</span>
7493                  </li>
7494                </ul>
7495
7496            </td> <!-- entry_type -->
7497
7498            <td class="entry_description">
7499              <p>Whether this camera device has a
7500flash.<wbr/></p>
7501            </td>
7502
7503            <td class="entry_units">
7504            </td>
7505
7506            <td class="entry_range">
7507            </td>
7508
7509            <td class="entry_tags">
7510              <ul class="entry_tags">
7511                  <li><a href="#tag_BC">BC</a></li>
7512              </ul>
7513            </td>
7514
7515          </tr>
7516          <tr class="entries_header">
7517            <th class="th_details" colspan="5">Details</th>
7518          </tr>
7519          <tr class="entry_cont">
7520            <td class="entry_details" colspan="5">
7521              <p>If no flash,<wbr/> none of the flash controls do
7522anything.<wbr/> All other metadata should return 0.<wbr/></p>
7523            </td>
7524          </tr>
7525
7526
7527          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7528           <!-- end of entry -->
7529        
7530                
7531          <tr class="entry" id="static_android.flash.info.chargeDuration">
7532            <td class="entry_name
7533             " rowspan="3">
7534              android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
7535            </td>
7536            <td class="entry_type">
7537                <span class="entry_type_name">int64</span>
7538
7539              <span class="entry_type_visibility"> [system]</span>
7540
7541
7542
7543
7544
7545            </td> <!-- entry_type -->
7546
7547            <td class="entry_description">
7548              <p>Time taken before flash can fire
7549again</p>
7550            </td>
7551
7552            <td class="entry_units">
7553              nanoseconds
7554            </td>
7555
7556            <td class="entry_range">
7557              <p>0-1e9</p>
7558            </td>
7559
7560            <td class="entry_tags">
7561              <ul class="entry_tags">
7562                  <li><a href="#tag_FUTURE">FUTURE</a></li>
7563              </ul>
7564            </td>
7565
7566          </tr>
7567          <tr class="entries_header">
7568            <th class="th_details" colspan="5">Details</th>
7569          </tr>
7570          <tr class="entry_cont">
7571            <td class="entry_details" colspan="5">
7572              <p>1 second too long/<wbr/>too short for recharge? Should
7573this be power-dependent?</p>
7574            </td>
7575          </tr>
7576
7577
7578          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7579           <!-- end of entry -->
7580        
7581        
7582        
7583
7584                
7585          <tr class="entry" id="static_android.flash.colorTemperature">
7586            <td class="entry_name
7587             " rowspan="1">
7588              android.<wbr/>flash.<wbr/>color<wbr/>Temperature
7589            </td>
7590            <td class="entry_type">
7591                <span class="entry_type_name">byte</span>
7592
7593              <span class="entry_type_visibility"> [system]</span>
7594
7595
7596
7597
7598
7599            </td> <!-- entry_type -->
7600
7601            <td class="entry_description">
7602              <p>The x,<wbr/>y whitepoint of the
7603flash</p>
7604            </td>
7605
7606            <td class="entry_units">
7607              pair of floats
7608            </td>
7609
7610            <td class="entry_range">
7611              <p>0-1 for both</p>
7612            </td>
7613
7614            <td class="entry_tags">
7615              <ul class="entry_tags">
7616                  <li><a href="#tag_FUTURE">FUTURE</a></li>
7617              </ul>
7618            </td>
7619
7620          </tr>
7621
7622
7623          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7624           <!-- end of entry -->
7625        
7626                
7627          <tr class="entry" id="static_android.flash.maxEnergy">
7628            <td class="entry_name
7629             " rowspan="1">
7630              android.<wbr/>flash.<wbr/>max<wbr/>Energy
7631            </td>
7632            <td class="entry_type">
7633                <span class="entry_type_name">byte</span>
7634
7635              <span class="entry_type_visibility"> [system]</span>
7636
7637
7638
7639
7640
7641            </td> <!-- entry_type -->
7642
7643            <td class="entry_description">
7644              <p>Max energy output of the flash for a full
7645power single flash</p>
7646            </td>
7647
7648            <td class="entry_units">
7649              lumen-seconds
7650            </td>
7651
7652            <td class="entry_range">
7653              <p>&gt;= 0</p>
7654            </td>
7655
7656            <td class="entry_tags">
7657              <ul class="entry_tags">
7658                  <li><a href="#tag_FUTURE">FUTURE</a></li>
7659              </ul>
7660            </td>
7661
7662          </tr>
7663
7664
7665          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7666           <!-- end of entry -->
7667        
7668        
7669
7670      <!-- end of kind -->
7671      </tbody>
7672      <tr><td colspan="6" class="kind">dynamic</td></tr>
7673
7674      <thead class="entries_header">
7675        <tr>
7676          <th class="th_name">Property Name</th>
7677          <th class="th_type">Type</th>
7678          <th class="th_description">Description</th>
7679          <th class="th_units">Units</th>
7680          <th class="th_range">Range</th>
7681          <th class="th_tags">Tags</th>
7682        </tr>
7683      </thead>
7684
7685      <tbody>
7686
7687        
7688
7689        
7690
7691        
7692
7693        
7694
7695                
7696          <tr class="entry" id="dynamic_android.flash.firingPower">
7697            <td class="entry_name
7698             " rowspan="3">
7699              android.<wbr/>flash.<wbr/>firing<wbr/>Power
7700            </td>
7701            <td class="entry_type">
7702                <span class="entry_type_name">byte</span>
7703
7704              <span class="entry_type_visibility"> [system]</span>
7705
7706
7707
7708
7709
7710            </td> <!-- entry_type -->
7711
7712            <td class="entry_description">
7713              <p>Power for flash firing/<wbr/>torch</p>
7714            </td>
7715
7716            <td class="entry_units">
7717              10 is max power; 0 is no flash.<wbr/> Linear
7718            </td>
7719
7720            <td class="entry_range">
7721              <p>0 - 10</p>
7722            </td>
7723
7724            <td class="entry_tags">
7725              <ul class="entry_tags">
7726                  <li><a href="#tag_FUTURE">FUTURE</a></li>
7727              </ul>
7728            </td>
7729
7730          </tr>
7731          <tr class="entries_header">
7732            <th class="th_details" colspan="5">Details</th>
7733          </tr>
7734          <tr class="entry_cont">
7735            <td class="entry_details" colspan="5">
7736              <p>Power for snapshot may use a different scale than
7737for torch mode.<wbr/> Only one entry for torch mode will be
7738used</p>
7739            </td>
7740          </tr>
7741
7742
7743          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7744           <!-- end of entry -->
7745        
7746                
7747          <tr class="entry" id="dynamic_android.flash.firingTime">
7748            <td class="entry_name
7749             " rowspan="3">
7750              android.<wbr/>flash.<wbr/>firing<wbr/>Time
7751            </td>
7752            <td class="entry_type">
7753                <span class="entry_type_name">int64</span>
7754
7755              <span class="entry_type_visibility"> [system]</span>
7756
7757
7758
7759
7760
7761            </td> <!-- entry_type -->
7762
7763            <td class="entry_description">
7764              <p>Firing time of flash relative to start of
7765exposure</p>
7766            </td>
7767
7768            <td class="entry_units">
7769              nanoseconds
7770            </td>
7771
7772            <td class="entry_range">
7773              <p>0-(exposure time-flash duration)</p>
7774            </td>
7775
7776            <td class="entry_tags">
7777              <ul class="entry_tags">
7778                  <li><a href="#tag_FUTURE">FUTURE</a></li>
7779              </ul>
7780            </td>
7781
7782          </tr>
7783          <tr class="entries_header">
7784            <th class="th_details" colspan="5">Details</th>
7785          </tr>
7786          <tr class="entry_cont">
7787            <td class="entry_details" colspan="5">
7788              <p>Clamped to (0,<wbr/> exposure time - flash
7789duration).<wbr/></p>
7790            </td>
7791          </tr>
7792
7793
7794          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7795           <!-- end of entry -->
7796        
7797                
7798          <tr class="entry" id="dynamic_android.flash.mode">
7799            <td class="entry_name
7800             " rowspan="3">
7801              android.<wbr/>flash.<wbr/>mode
7802            </td>
7803            <td class="entry_type">
7804                <span class="entry_type_name entry_type_name_enum">byte</span>
7805
7806              <span class="entry_type_visibility"> [public]</span>
7807
7808
7809
7810
7811                <ul class="entry_type_enum">
7812                  <li>
7813                    <span class="entry_type_enum_name">OFF</span>
7814                    <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
7815                  </li>
7816                  <li>
7817                    <span class="entry_type_enum_name">SINGLE</span>
7818                    <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
7819for this capture.<wbr/></p></span>
7820                  </li>
7821                  <li>
7822                    <span class="entry_type_enum_name">TORCH</span>
7823                    <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
7824                  </li>
7825                </ul>
7826
7827            </td> <!-- entry_type -->
7828
7829            <td class="entry_description">
7830              <p>The desired mode for for the camera device's flash control.<wbr/></p>
7831            </td>
7832
7833            <td class="entry_units">
7834            </td>
7835
7836            <td class="entry_range">
7837            </td>
7838
7839            <td class="entry_tags">
7840              <ul class="entry_tags">
7841                  <li><a href="#tag_BC">BC</a></li>
7842              </ul>
7843            </td>
7844
7845          </tr>
7846          <tr class="entries_header">
7847            <th class="th_details" colspan="5">Details</th>
7848          </tr>
7849          <tr class="entry_cont">
7850            <td class="entry_details" colspan="5">
7851              <p>This control is only effective when flash unit is available
7852(<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
7853<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/>
7854Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
7855ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
7856<p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
7857<p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
7858device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
7859control should be used along with AE precapture metering sequence
7860(<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>
7861<p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
7862for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
7863<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>
7864            </td>
7865          </tr>
7866
7867
7868          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7869           <!-- end of entry -->
7870        
7871                
7872          <tr class="entry" id="dynamic_android.flash.state">
7873            <td class="entry_name
7874             " rowspan="3">
7875              android.<wbr/>flash.<wbr/>state
7876            </td>
7877            <td class="entry_type">
7878                <span class="entry_type_name entry_type_name_enum">byte</span>
7879
7880              <span class="entry_type_visibility"> [public]</span>
7881
7882
7883
7884
7885                <ul class="entry_type_enum">
7886                  <li>
7887                    <span class="entry_type_enum_name">UNAVAILABLE</span>
7888                    <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
7889                  </li>
7890                  <li>
7891                    <span class="entry_type_enum_name">CHARGING</span>
7892                    <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
7893                  </li>
7894                  <li>
7895                    <span class="entry_type_enum_name">READY</span>
7896                    <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
7897                  </li>
7898                  <li>
7899                    <span class="entry_type_enum_name">FIRED</span>
7900                    <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
7901                  </li>
7902                  <li>
7903                    <span class="entry_type_enum_name">PARTIAL</span>
7904                    <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/> This is usually due to the next
7905or previous frame having the flash fire,<wbr/> and the flash spilling into this capture
7906due to hardware limitations.<wbr/></p></span>
7907                  </li>
7908                </ul>
7909
7910            </td> <!-- entry_type -->
7911
7912            <td class="entry_description">
7913              <p>Current state of the flash
7914unit.<wbr/></p>
7915            </td>
7916
7917            <td class="entry_units">
7918            </td>
7919
7920            <td class="entry_range">
7921            </td>
7922
7923            <td class="entry_tags">
7924            </td>
7925
7926          </tr>
7927          <tr class="entries_header">
7928            <th class="th_details" colspan="5">Details</th>
7929          </tr>
7930          <tr class="entry_cont">
7931            <td class="entry_details" colspan="5">
7932              <p>When the camera device doesn't have flash unit
7933(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/>
7934Other states indicate the current flash status.<wbr/></p>
7935            </td>
7936          </tr>
7937
7938
7939          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7940           <!-- end of entry -->
7941        
7942        
7943
7944      <!-- end of kind -->
7945      </tbody>
7946
7947  <!-- end of section -->
7948  <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr>
7949
7950
7951      <tr><td colspan="6" class="kind">controls</td></tr>
7952
7953      <thead class="entries_header">
7954        <tr>
7955          <th class="th_name">Property Name</th>
7956          <th class="th_type">Type</th>
7957          <th class="th_description">Description</th>
7958          <th class="th_units">Units</th>
7959          <th class="th_range">Range</th>
7960          <th class="th_tags">Tags</th>
7961        </tr>
7962      </thead>
7963
7964      <tbody>
7965
7966        
7967
7968        
7969
7970        
7971
7972        
7973
7974                
7975          <tr class="entry" id="controls_android.hotPixel.mode">
7976            <td class="entry_name
7977             " rowspan="3">
7978              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
7979            </td>
7980            <td class="entry_type">
7981                <span class="entry_type_name entry_type_name_enum">byte</span>
7982
7983              <span class="entry_type_visibility"> [public]</span>
7984
7985
7986
7987
7988                <ul class="entry_type_enum">
7989                  <li>
7990                    <span class="entry_type_enum_name">OFF</span>
7991                    <span class="entry_type_enum_notes"><p>The frame rate must not be reduced relative to sensor raw output
7992for this option.<wbr/></p>
7993<p>No hot pixel correction is applied.<wbr/>
7994The 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>
7995                  </li>
7996                  <li>
7997                    <span class="entry_type_enum_name">FAST</span>
7998                    <span class="entry_type_enum_notes"><p>The frame rate must not be reduced relative to sensor raw output
7999for this option.<wbr/></p>
8000<p>Hot pixel correction is applied.<wbr/>
8001The 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>
8002                  </li>
8003                  <li>
8004                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
8005                    <span class="entry_type_enum_notes"><p>The frame rate may be reduced relative to sensor raw output
8006for this option.<wbr/></p>
8007<p>A high-quality hot pixel correction is applied.<wbr/>
8008The 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>
8009                  </li>
8010                </ul>
8011
8012            </td> <!-- entry_type -->
8013
8014            <td class="entry_description">
8015              <p>Set operational mode for hot pixel correction.<wbr/></p>
8016            </td>
8017
8018            <td class="entry_units">
8019            </td>
8020
8021            <td class="entry_range">
8022            </td>
8023
8024            <td class="entry_tags">
8025              <ul class="entry_tags">
8026                  <li><a href="#tag_V1">V1</a></li>
8027                  <li><a href="#tag_DNG">DNG</a></li>
8028              </ul>
8029            </td>
8030
8031          </tr>
8032          <tr class="entries_header">
8033            <th class="th_details" colspan="5">Details</th>
8034          </tr>
8035          <tr class="entry_cont">
8036            <td class="entry_details" colspan="5">
8037              <p>Valid modes for this camera device are listed in
8038<a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a>.<wbr/></p>
8039<p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
8040that do not accurately encode the incoming light (i.<wbr/>e.<wbr/> pixels that
8041are stuck at an arbitrary value).<wbr/></p>
8042            </td>
8043          </tr>
8044
8045
8046          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8047           <!-- end of entry -->
8048        
8049        
8050
8051      <!-- end of kind -->
8052      </tbody>
8053      <tr><td colspan="6" class="kind">static</td></tr>
8054
8055      <thead class="entries_header">
8056        <tr>
8057          <th class="th_name">Property Name</th>
8058          <th class="th_type">Type</th>
8059          <th class="th_description">Description</th>
8060          <th class="th_units">Units</th>
8061          <th class="th_range">Range</th>
8062          <th class="th_tags">Tags</th>
8063        </tr>
8064      </thead>
8065
8066      <tbody>
8067
8068        
8069
8070        
8071
8072        
8073
8074        
8075
8076                
8077          <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
8078            <td class="entry_name
8079             " rowspan="5">
8080              android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
8081            </td>
8082            <td class="entry_type">
8083                <span class="entry_type_name">byte</span>
8084                <span class="entry_type_container">x</span>
8085
8086                <span class="entry_type_array">
8087                  n
8088                </span>
8089              <span class="entry_type_visibility"> [public as enumList]</span>
8090
8091
8092
8093                <div class="entry_type_notes">list of enums</div>
8094
8095
8096            </td> <!-- entry_type -->
8097
8098            <td class="entry_description">
8099              <p>The set of hot pixel correction modes that are supported by this
8100camera device.<wbr/></p>
8101            </td>
8102
8103            <td class="entry_units">
8104            </td>
8105
8106            <td class="entry_range">
8107            </td>
8108
8109            <td class="entry_tags">
8110              <ul class="entry_tags">
8111                  <li><a href="#tag_V1">V1</a></li>
8112                  <li><a href="#tag_DNG">DNG</a></li>
8113              </ul>
8114            </td>
8115
8116          </tr>
8117          <tr class="entries_header">
8118            <th class="th_details" colspan="5">Details</th>
8119          </tr>
8120          <tr class="entry_cont">
8121            <td class="entry_details" colspan="5">
8122              <p>This tag lists valid modes for <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a>.<wbr/></p>
8123<p>FULL mode camera devices will always support FAST.<wbr/></p>
8124            </td>
8125          </tr>
8126
8127          <tr class="entries_header">
8128            <th class="th_details" colspan="5">HAL Implementation Details</th>
8129          </tr>
8130          <tr class="entry_cont">
8131            <td class="entry_details" colspan="5">
8132              <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
8133pixels than actual pixels on the camera sensor.<wbr/></p>
8134            </td>
8135          </tr>
8136
8137          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8138           <!-- end of entry -->
8139        
8140        
8141
8142      <!-- end of kind -->
8143      </tbody>
8144      <tr><td colspan="6" class="kind">dynamic</td></tr>
8145
8146      <thead class="entries_header">
8147        <tr>
8148          <th class="th_name">Property Name</th>
8149          <th class="th_type">Type</th>
8150          <th class="th_description">Description</th>
8151          <th class="th_units">Units</th>
8152          <th class="th_range">Range</th>
8153          <th class="th_tags">Tags</th>
8154        </tr>
8155      </thead>
8156
8157      <tbody>
8158
8159        
8160
8161        
8162
8163        
8164
8165        
8166
8167                
8168          <tr class="entry" id="dynamic_android.hotPixel.mode">
8169            <td class="entry_name
8170             " rowspan="3">
8171              android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
8172            </td>
8173            <td class="entry_type">
8174                <span class="entry_type_name entry_type_name_enum">byte</span>
8175
8176              <span class="entry_type_visibility"> [public]</span>
8177
8178
8179
8180
8181                <ul class="entry_type_enum">
8182                  <li>
8183                    <span class="entry_type_enum_name">OFF</span>
8184                    <span class="entry_type_enum_notes"><p>The frame rate must not be reduced relative to sensor raw output
8185for this option.<wbr/></p>
8186<p>No hot pixel correction is applied.<wbr/>
8187The 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>
8188                  </li>
8189                  <li>
8190                    <span class="entry_type_enum_name">FAST</span>
8191                    <span class="entry_type_enum_notes"><p>The frame rate must not be reduced relative to sensor raw output
8192for this option.<wbr/></p>
8193<p>Hot pixel correction is applied.<wbr/>
8194The 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>
8195                  </li>
8196                  <li>
8197                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
8198                    <span class="entry_type_enum_notes"><p>The frame rate may be reduced relative to sensor raw output
8199for this option.<wbr/></p>
8200<p>A high-quality hot pixel correction is applied.<wbr/>
8201The 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>
8202                  </li>
8203                </ul>
8204
8205            </td> <!-- entry_type -->
8206
8207            <td class="entry_description">
8208              <p>Set operational mode for hot pixel correction.<wbr/></p>
8209            </td>
8210
8211            <td class="entry_units">
8212            </td>
8213
8214            <td class="entry_range">
8215            </td>
8216
8217            <td class="entry_tags">
8218              <ul class="entry_tags">
8219                  <li><a href="#tag_V1">V1</a></li>
8220                  <li><a href="#tag_DNG">DNG</a></li>
8221              </ul>
8222            </td>
8223
8224          </tr>
8225          <tr class="entries_header">
8226            <th class="th_details" colspan="5">Details</th>
8227          </tr>
8228          <tr class="entry_cont">
8229            <td class="entry_details" colspan="5">
8230              <p>Valid modes for this camera device are listed in
8231<a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a>.<wbr/></p>
8232<p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
8233that do not accurately encode the incoming light (i.<wbr/>e.<wbr/> pixels that
8234are stuck at an arbitrary value).<wbr/></p>
8235            </td>
8236          </tr>
8237
8238
8239          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8240           <!-- end of entry -->
8241        
8242        
8243
8244      <!-- end of kind -->
8245      </tbody>
8246
8247  <!-- end of section -->
8248  <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr>
8249
8250
8251      <tr><td colspan="6" class="kind">controls</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="controls_android.jpeg.gpsLocation">
8276            <td class="entry_name
8277             " rowspan="1">
8278              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
8279            </td>
8280            <td class="entry_type">
8281                <span class="entry_type_name">byte</span>
8282
8283              <span class="entry_type_visibility"> [public as location]</span>
8284
8285              <span class="entry_type_synthetic">[synthetic] </span>
8286
8287
8288
8289
8290            </td> <!-- entry_type -->
8291
8292            <td class="entry_description">
8293              <p>A location object to use when generating image GPS metadata.<wbr/></p>
8294            </td>
8295
8296            <td class="entry_units">
8297            </td>
8298
8299            <td class="entry_range">
8300            </td>
8301
8302            <td class="entry_tags">
8303            </td>
8304
8305          </tr>
8306
8307
8308          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8309           <!-- end of entry -->
8310        
8311                
8312          <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
8313            <td class="entry_name
8314             " rowspan="1">
8315              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
8316            </td>
8317            <td class="entry_type">
8318                <span class="entry_type_name">double</span>
8319                <span class="entry_type_container">x</span>
8320
8321                <span class="entry_type_array">
8322                  3
8323                </span>
8324              <span class="entry_type_visibility"> [hidden]</span>
8325
8326
8327
8328                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
8329
8330
8331            </td> <!-- entry_type -->
8332
8333            <td class="entry_description">
8334              <p>GPS coordinates to include in output JPEG
8335EXIF</p>
8336            </td>
8337
8338            <td class="entry_units">
8339            </td>
8340
8341            <td class="entry_range">
8342              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
8343            </td>
8344
8345            <td class="entry_tags">
8346              <ul class="entry_tags">
8347                  <li><a href="#tag_BC">BC</a></li>
8348              </ul>
8349            </td>
8350
8351          </tr>
8352
8353
8354          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8355           <!-- end of entry -->
8356        
8357                
8358          <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
8359            <td class="entry_name
8360             " rowspan="1">
8361              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
8362            </td>
8363            <td class="entry_type">
8364                <span class="entry_type_name">byte</span>
8365
8366              <span class="entry_type_visibility"> [hidden as string]</span>
8367
8368
8369
8370
8371
8372            </td> <!-- entry_type -->
8373
8374            <td class="entry_description">
8375              <p>32 characters describing GPS algorithm to
8376include in EXIF</p>
8377            </td>
8378
8379            <td class="entry_units">
8380              UTF-8 null-terminated string
8381            </td>
8382
8383            <td class="entry_range">
8384            </td>
8385
8386            <td class="entry_tags">
8387              <ul class="entry_tags">
8388                  <li><a href="#tag_BC">BC</a></li>
8389              </ul>
8390            </td>
8391
8392          </tr>
8393
8394
8395          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8396           <!-- end of entry -->
8397        
8398                
8399          <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
8400            <td class="entry_name
8401             " rowspan="1">
8402              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
8403            </td>
8404            <td class="entry_type">
8405                <span class="entry_type_name">int64</span>
8406
8407              <span class="entry_type_visibility"> [hidden]</span>
8408
8409
8410
8411
8412
8413            </td> <!-- entry_type -->
8414
8415            <td class="entry_description">
8416              <p>Time GPS fix was made to include in
8417EXIF</p>
8418            </td>
8419
8420            <td class="entry_units">
8421              UTC in seconds since January 1,<wbr/> 1970
8422            </td>
8423
8424            <td class="entry_range">
8425            </td>
8426
8427            <td class="entry_tags">
8428              <ul class="entry_tags">
8429                  <li><a href="#tag_BC">BC</a></li>
8430              </ul>
8431            </td>
8432
8433          </tr>
8434
8435
8436          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8437           <!-- end of entry -->
8438        
8439                
8440          <tr class="entry" id="controls_android.jpeg.orientation">
8441            <td class="entry_name
8442             " rowspan="1">
8443              android.<wbr/>jpeg.<wbr/>orientation
8444            </td>
8445            <td class="entry_type">
8446                <span class="entry_type_name">int32</span>
8447
8448              <span class="entry_type_visibility"> [public]</span>
8449
8450
8451
8452
8453
8454            </td> <!-- entry_type -->
8455
8456            <td class="entry_description">
8457              <p>Orientation of JPEG image to
8458write</p>
8459            </td>
8460
8461            <td class="entry_units">
8462              Degrees in multiples of 90
8463            </td>
8464
8465            <td class="entry_range">
8466              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
8467            </td>
8468
8469            <td class="entry_tags">
8470              <ul class="entry_tags">
8471                  <li><a href="#tag_BC">BC</a></li>
8472              </ul>
8473            </td>
8474
8475          </tr>
8476
8477
8478          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8479           <!-- end of entry -->
8480        
8481                
8482          <tr class="entry" id="controls_android.jpeg.quality">
8483            <td class="entry_name
8484             " rowspan="3">
8485              android.<wbr/>jpeg.<wbr/>quality
8486            </td>
8487            <td class="entry_type">
8488                <span class="entry_type_name">byte</span>
8489
8490              <span class="entry_type_visibility"> [public]</span>
8491
8492
8493
8494
8495
8496            </td> <!-- entry_type -->
8497
8498            <td class="entry_description">
8499              <p>Compression quality of the final JPEG
8500image</p>
8501            </td>
8502
8503            <td class="entry_units">
8504            </td>
8505
8506            <td class="entry_range">
8507              <p>1-100; larger is higher quality</p>
8508            </td>
8509
8510            <td class="entry_tags">
8511              <ul class="entry_tags">
8512                  <li><a href="#tag_BC">BC</a></li>
8513              </ul>
8514            </td>
8515
8516          </tr>
8517          <tr class="entries_header">
8518            <th class="th_details" colspan="5">Details</th>
8519          </tr>
8520          <tr class="entry_cont">
8521            <td class="entry_details" colspan="5">
8522              <p>85-95 is typical usage range</p>
8523            </td>
8524          </tr>
8525
8526
8527          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8528           <!-- end of entry -->
8529        
8530                
8531          <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
8532            <td class="entry_name
8533             " rowspan="1">
8534              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
8535            </td>
8536            <td class="entry_type">
8537                <span class="entry_type_name">byte</span>
8538
8539              <span class="entry_type_visibility"> [public]</span>
8540
8541
8542
8543
8544
8545            </td> <!-- entry_type -->
8546
8547            <td class="entry_description">
8548              <p>Compression quality of JPEG
8549thumbnail</p>
8550            </td>
8551
8552            <td class="entry_units">
8553            </td>
8554
8555            <td class="entry_range">
8556              <p>1-100; larger is higher quality</p>
8557            </td>
8558
8559            <td class="entry_tags">
8560              <ul class="entry_tags">
8561                  <li><a href="#tag_BC">BC</a></li>
8562              </ul>
8563            </td>
8564
8565          </tr>
8566
8567
8568          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8569           <!-- end of entry -->
8570        
8571                
8572          <tr class="entry" id="controls_android.jpeg.thumbnailSize">
8573            <td class="entry_name
8574             " rowspan="5">
8575              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
8576            </td>
8577            <td class="entry_type">
8578                <span class="entry_type_name">int32</span>
8579                <span class="entry_type_container">x</span>
8580
8581                <span class="entry_type_array">
8582                  2
8583                </span>
8584              <span class="entry_type_visibility"> [public as size]</span>
8585
8586
8587
8588
8589
8590            </td> <!-- entry_type -->
8591
8592            <td class="entry_description">
8593              <p>Resolution of embedded JPEG thumbnail</p>
8594            </td>
8595
8596            <td class="entry_units">
8597            </td>
8598
8599            <td class="entry_range">
8600              <p>Size must be one of the size from <a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
8601            </td>
8602
8603            <td class="entry_tags">
8604              <ul class="entry_tags">
8605                  <li><a href="#tag_BC">BC</a></li>
8606              </ul>
8607            </td>
8608
8609          </tr>
8610          <tr class="entries_header">
8611            <th class="th_details" colspan="5">Details</th>
8612          </tr>
8613          <tr class="entry_cont">
8614            <td class="entry_details" colspan="5">
8615              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
8616but the captured JPEG will still be a valid image.<wbr/></p>
8617<p>When a jpeg image capture is issued,<wbr/> the thumbnail size selected should have
8618the same aspect ratio as the jpeg image.<wbr/></p>
8619<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
8620ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
8621For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
862216:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
8623generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
8624Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
8625            </td>
8626          </tr>
8627
8628          <tr class="entries_header">
8629            <th class="th_details" colspan="5">HAL Implementation Details</th>
8630          </tr>
8631          <tr class="entry_cont">
8632            <td class="entry_details" colspan="5">
8633              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
8634The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
8635The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
8636thumbnail image cropping.<wbr/></p>
8637            </td>
8638          </tr>
8639
8640          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8641           <!-- end of entry -->
8642        
8643        
8644
8645      <!-- end of kind -->
8646      </tbody>
8647      <tr><td colspan="6" class="kind">static</td></tr>
8648
8649      <thead class="entries_header">
8650        <tr>
8651          <th class="th_name">Property Name</th>
8652          <th class="th_type">Type</th>
8653          <th class="th_description">Description</th>
8654          <th class="th_units">Units</th>
8655          <th class="th_range">Range</th>
8656          <th class="th_tags">Tags</th>
8657        </tr>
8658      </thead>
8659
8660      <tbody>
8661
8662        
8663
8664        
8665
8666        
8667
8668        
8669
8670                
8671          <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
8672            <td class="entry_name
8673             " rowspan="3">
8674              android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
8675            </td>
8676            <td class="entry_type">
8677                <span class="entry_type_name">int32</span>
8678                <span class="entry_type_container">x</span>
8679
8680                <span class="entry_type_array">
8681                  2 x n
8682                </span>
8683              <span class="entry_type_visibility"> [public as size]</span>
8684
8685
8686
8687
8688
8689            </td> <!-- entry_type -->
8690
8691            <td class="entry_description">
8692              <p>Supported resolutions for the JPEG thumbnail</p>
8693            </td>
8694
8695            <td class="entry_units">
8696            </td>
8697
8698            <td class="entry_range">
8699              <p>Will include at least one valid resolution,<wbr/> plus
8700(0,<wbr/>0) for no thumbnail generation,<wbr/> and each size will be distinct.<wbr/></p>
8701            </td>
8702
8703            <td class="entry_tags">
8704              <ul class="entry_tags">
8705                  <li><a href="#tag_BC">BC</a></li>
8706              </ul>
8707            </td>
8708
8709          </tr>
8710          <tr class="entries_header">
8711            <th class="th_details" colspan="5">Details</th>
8712          </tr>
8713          <tr class="entry_cont">
8714            <td class="entry_details" colspan="5">
8715              <p>Below condiditions will be satisfied for this size list:</p>
8716<ul>
8717<li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
8718If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
8719<li>The aspect ratio of the largest thumbnail size will be same as the
8720aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
8721The largest size is defined as the size that has the largest pixel area
8722in a given size list.<wbr/></li>
8723<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
8724one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
8725and vice versa.<wbr/></li>
8726<li>All non (0,<wbr/> 0) sizes will have non-zero widths and heights.<wbr/></li>
8727</ul>
8728            </td>
8729          </tr>
8730
8731
8732          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8733           <!-- end of entry -->
8734        
8735                
8736          <tr class="entry" id="static_android.jpeg.maxSize">
8737            <td class="entry_name
8738             " rowspan="3">
8739              android.<wbr/>jpeg.<wbr/>max<wbr/>Size
8740            </td>
8741            <td class="entry_type">
8742                <span class="entry_type_name">int32</span>
8743
8744              <span class="entry_type_visibility"> [system]</span>
8745
8746
8747
8748
8749
8750            </td> <!-- entry_type -->
8751
8752            <td class="entry_description">
8753              <p>Maximum size in bytes for the compressed
8754JPEG buffer</p>
8755            </td>
8756
8757            <td class="entry_units">
8758            </td>
8759
8760            <td class="entry_range">
8761              <p>Must be large enough to fit any JPEG produced by
8762the camera</p>
8763            </td>
8764
8765            <td class="entry_tags">
8766            </td>
8767
8768          </tr>
8769          <tr class="entries_header">
8770            <th class="th_details" colspan="5">Details</th>
8771          </tr>
8772          <tr class="entry_cont">
8773            <td class="entry_details" colspan="5">
8774              <p>This is used for sizing the gralloc buffers for
8775JPEG</p>
8776            </td>
8777          </tr>
8778
8779
8780          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8781           <!-- end of entry -->
8782        
8783        
8784
8785      <!-- end of kind -->
8786      </tbody>
8787      <tr><td colspan="6" class="kind">dynamic</td></tr>
8788
8789      <thead class="entries_header">
8790        <tr>
8791          <th class="th_name">Property Name</th>
8792          <th class="th_type">Type</th>
8793          <th class="th_description">Description</th>
8794          <th class="th_units">Units</th>
8795          <th class="th_range">Range</th>
8796          <th class="th_tags">Tags</th>
8797        </tr>
8798      </thead>
8799
8800      <tbody>
8801
8802        
8803
8804        
8805
8806        
8807
8808        
8809
8810                
8811          <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
8812            <td class="entry_name
8813             " rowspan="1">
8814              android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
8815            </td>
8816            <td class="entry_type">
8817                <span class="entry_type_name">byte</span>
8818
8819              <span class="entry_type_visibility"> [public as location]</span>
8820
8821              <span class="entry_type_synthetic">[synthetic] </span>
8822
8823
8824
8825
8826            </td> <!-- entry_type -->
8827
8828            <td class="entry_description">
8829              <p>A location object to use when generating image GPS metadata.<wbr/></p>
8830            </td>
8831
8832            <td class="entry_units">
8833            </td>
8834
8835            <td class="entry_range">
8836            </td>
8837
8838            <td class="entry_tags">
8839            </td>
8840
8841          </tr>
8842
8843
8844          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8845           <!-- end of entry -->
8846        
8847                
8848          <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
8849            <td class="entry_name
8850             " rowspan="1">
8851              android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
8852            </td>
8853            <td class="entry_type">
8854                <span class="entry_type_name">double</span>
8855                <span class="entry_type_container">x</span>
8856
8857                <span class="entry_type_array">
8858                  3
8859                </span>
8860              <span class="entry_type_visibility"> [hidden]</span>
8861
8862
8863
8864                <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
8865
8866
8867            </td> <!-- entry_type -->
8868
8869            <td class="entry_description">
8870              <p>GPS coordinates to include in output JPEG
8871EXIF</p>
8872            </td>
8873
8874            <td class="entry_units">
8875            </td>
8876
8877            <td class="entry_range">
8878              <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
8879            </td>
8880
8881            <td class="entry_tags">
8882              <ul class="entry_tags">
8883                  <li><a href="#tag_BC">BC</a></li>
8884              </ul>
8885            </td>
8886
8887          </tr>
8888
8889
8890          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8891           <!-- end of entry -->
8892        
8893                
8894          <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
8895            <td class="entry_name
8896             " rowspan="1">
8897              android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
8898            </td>
8899            <td class="entry_type">
8900                <span class="entry_type_name">byte</span>
8901
8902              <span class="entry_type_visibility"> [hidden as string]</span>
8903
8904
8905
8906
8907
8908            </td> <!-- entry_type -->
8909
8910            <td class="entry_description">
8911              <p>32 characters describing GPS algorithm to
8912include in EXIF</p>
8913            </td>
8914
8915            <td class="entry_units">
8916              UTF-8 null-terminated string
8917            </td>
8918
8919            <td class="entry_range">
8920            </td>
8921
8922            <td class="entry_tags">
8923              <ul class="entry_tags">
8924                  <li><a href="#tag_BC">BC</a></li>
8925              </ul>
8926            </td>
8927
8928          </tr>
8929
8930
8931          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8932           <!-- end of entry -->
8933        
8934                
8935          <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
8936            <td class="entry_name
8937             " rowspan="1">
8938              android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
8939            </td>
8940            <td class="entry_type">
8941                <span class="entry_type_name">int64</span>
8942
8943              <span class="entry_type_visibility"> [hidden]</span>
8944
8945
8946
8947
8948
8949            </td> <!-- entry_type -->
8950
8951            <td class="entry_description">
8952              <p>Time GPS fix was made to include in
8953EXIF</p>
8954            </td>
8955
8956            <td class="entry_units">
8957              UTC in seconds since January 1,<wbr/> 1970
8958            </td>
8959
8960            <td class="entry_range">
8961            </td>
8962
8963            <td class="entry_tags">
8964              <ul class="entry_tags">
8965                  <li><a href="#tag_BC">BC</a></li>
8966              </ul>
8967            </td>
8968
8969          </tr>
8970
8971
8972          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8973           <!-- end of entry -->
8974        
8975                
8976          <tr class="entry" id="dynamic_android.jpeg.orientation">
8977            <td class="entry_name
8978             " rowspan="1">
8979              android.<wbr/>jpeg.<wbr/>orientation
8980            </td>
8981            <td class="entry_type">
8982                <span class="entry_type_name">int32</span>
8983
8984              <span class="entry_type_visibility"> [public]</span>
8985
8986
8987
8988
8989
8990            </td> <!-- entry_type -->
8991
8992            <td class="entry_description">
8993              <p>Orientation of JPEG image to
8994write</p>
8995            </td>
8996
8997            <td class="entry_units">
8998              Degrees in multiples of 90
8999            </td>
9000
9001            <td class="entry_range">
9002              <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
9003            </td>
9004
9005            <td class="entry_tags">
9006              <ul class="entry_tags">
9007                  <li><a href="#tag_BC">BC</a></li>
9008              </ul>
9009            </td>
9010
9011          </tr>
9012
9013
9014          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9015           <!-- end of entry -->
9016        
9017                
9018          <tr class="entry" id="dynamic_android.jpeg.quality">
9019            <td class="entry_name
9020             " rowspan="3">
9021              android.<wbr/>jpeg.<wbr/>quality
9022            </td>
9023            <td class="entry_type">
9024                <span class="entry_type_name">byte</span>
9025
9026              <span class="entry_type_visibility"> [public]</span>
9027
9028
9029
9030
9031
9032            </td> <!-- entry_type -->
9033
9034            <td class="entry_description">
9035              <p>Compression quality of the final JPEG
9036image</p>
9037            </td>
9038
9039            <td class="entry_units">
9040            </td>
9041
9042            <td class="entry_range">
9043              <p>1-100; larger is higher quality</p>
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>85-95 is typical usage range</p>
9059            </td>
9060          </tr>
9061
9062
9063          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9064           <!-- end of entry -->
9065        
9066                
9067          <tr class="entry" id="dynamic_android.jpeg.size">
9068            <td class="entry_name
9069             " rowspan="3">
9070              android.<wbr/>jpeg.<wbr/>size
9071            </td>
9072            <td class="entry_type">
9073                <span class="entry_type_name">int32</span>
9074
9075              <span class="entry_type_visibility"> [system]</span>
9076
9077
9078
9079
9080
9081            </td> <!-- entry_type -->
9082
9083            <td class="entry_description">
9084              <p>The size of the compressed JPEG image,<wbr/> in
9085bytes</p>
9086            </td>
9087
9088            <td class="entry_units">
9089            </td>
9090
9091            <td class="entry_range">
9092              <p>&gt;= 0</p>
9093            </td>
9094
9095            <td class="entry_tags">
9096              <ul class="entry_tags">
9097                  <li><a href="#tag_FUTURE">FUTURE</a></li>
9098              </ul>
9099            </td>
9100
9101          </tr>
9102          <tr class="entries_header">
9103            <th class="th_details" colspan="5">Details</th>
9104          </tr>
9105          <tr class="entry_cont">
9106            <td class="entry_details" colspan="5">
9107              <p>If no JPEG output is produced for the request,<wbr/>
9108this must be 0.<wbr/></p>
9109<p>Otherwise,<wbr/> this describes the real size of the compressed
9110JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
9111if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
9112has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
9113the JPEG stream will be 1000000 bytes,<wbr/> of which the first
9114500000 make up the real data.<wbr/></p>
9115            </td>
9116          </tr>
9117
9118
9119          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9120           <!-- end of entry -->
9121        
9122                
9123          <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
9124            <td class="entry_name
9125             " rowspan="1">
9126              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
9127            </td>
9128            <td class="entry_type">
9129                <span class="entry_type_name">byte</span>
9130
9131              <span class="entry_type_visibility"> [public]</span>
9132
9133
9134
9135
9136
9137            </td> <!-- entry_type -->
9138
9139            <td class="entry_description">
9140              <p>Compression quality of JPEG
9141thumbnail</p>
9142            </td>
9143
9144            <td class="entry_units">
9145            </td>
9146
9147            <td class="entry_range">
9148              <p>1-100; larger is higher quality</p>
9149            </td>
9150
9151            <td class="entry_tags">
9152              <ul class="entry_tags">
9153                  <li><a href="#tag_BC">BC</a></li>
9154              </ul>
9155            </td>
9156
9157          </tr>
9158
9159
9160          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9161           <!-- end of entry -->
9162        
9163                
9164          <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
9165            <td class="entry_name
9166             " rowspan="5">
9167              android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
9168            </td>
9169            <td class="entry_type">
9170                <span class="entry_type_name">int32</span>
9171                <span class="entry_type_container">x</span>
9172
9173                <span class="entry_type_array">
9174                  2
9175                </span>
9176              <span class="entry_type_visibility"> [public as size]</span>
9177
9178
9179
9180
9181
9182            </td> <!-- entry_type -->
9183
9184            <td class="entry_description">
9185              <p>Resolution of embedded JPEG thumbnail</p>
9186            </td>
9187
9188            <td class="entry_units">
9189            </td>
9190
9191            <td class="entry_range">
9192              <p>Size must be one of the size from <a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
9193            </td>
9194
9195            <td class="entry_tags">
9196              <ul class="entry_tags">
9197                  <li><a href="#tag_BC">BC</a></li>
9198              </ul>
9199            </td>
9200
9201          </tr>
9202          <tr class="entries_header">
9203            <th class="th_details" colspan="5">Details</th>
9204          </tr>
9205          <tr class="entry_cont">
9206            <td class="entry_details" colspan="5">
9207              <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
9208but the captured JPEG will still be a valid image.<wbr/></p>
9209<p>When a jpeg image capture is issued,<wbr/> the thumbnail size selected should have
9210the same aspect ratio as the jpeg image.<wbr/></p>
9211<p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
9212ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
9213For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
921416:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
9215generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
9216Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
9217            </td>
9218          </tr>
9219
9220          <tr class="entries_header">
9221            <th class="th_details" colspan="5">HAL Implementation Details</th>
9222          </tr>
9223          <tr class="entry_cont">
9224            <td class="entry_details" colspan="5">
9225              <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
9226The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
9227The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
9228thumbnail image cropping.<wbr/></p>
9229            </td>
9230          </tr>
9231
9232          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9233           <!-- end of entry -->
9234        
9235        
9236
9237      <!-- end of kind -->
9238      </tbody>
9239
9240  <!-- end of section -->
9241  <tr><td colspan="6" id="section_lens" class="section">lens</td></tr>
9242
9243
9244      <tr><td colspan="6" class="kind">controls</td></tr>
9245
9246      <thead class="entries_header">
9247        <tr>
9248          <th class="th_name">Property Name</th>
9249          <th class="th_type">Type</th>
9250          <th class="th_description">Description</th>
9251          <th class="th_units">Units</th>
9252          <th class="th_range">Range</th>
9253          <th class="th_tags">Tags</th>
9254        </tr>
9255      </thead>
9256
9257      <tbody>
9258
9259        
9260
9261        
9262
9263        
9264
9265        
9266
9267                
9268          <tr class="entry" id="controls_android.lens.aperture">
9269            <td class="entry_name
9270             " rowspan="3">
9271              android.<wbr/>lens.<wbr/>aperture
9272            </td>
9273            <td class="entry_type">
9274                <span class="entry_type_name">float</span>
9275
9276              <span class="entry_type_visibility"> [public]</span>
9277
9278
9279
9280
9281
9282            </td> <!-- entry_type -->
9283
9284            <td class="entry_description">
9285              <p>The ratio of lens focal length to the effective
9286aperture diameter.<wbr/></p>
9287            </td>
9288
9289            <td class="entry_units">
9290              f-number (f/<wbr/>NNN)
9291            </td>
9292
9293            <td class="entry_range">
9294              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
9295            </td>
9296
9297            <td class="entry_tags">
9298              <ul class="entry_tags">
9299                  <li><a href="#tag_V1">V1</a></li>
9300              </ul>
9301            </td>
9302
9303          </tr>
9304          <tr class="entries_header">
9305            <th class="th_details" colspan="5">Details</th>
9306          </tr>
9307          <tr class="entry_cont">
9308            <td class="entry_details" colspan="5">
9309              <p>This will only be supported on the camera devices that
9310have variable aperture lens.<wbr/> The aperture value can only be
9311one of the values listed in <a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a>.<wbr/></p>
9312<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
9313this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
9314<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>
9315to achieve manual exposure control.<wbr/></p>
9316<p>The requested aperture value may take several frames to reach the
9317requested value; the camera device will report the current (intermediate)
9318aperture size in capture result metadata while the aperture is changing.<wbr/>
9319While 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>
9320<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
9321the ON modes,<wbr/> this will be overridden by the camera device
9322auto-exposure algorithm,<wbr/> the overridden values are then provided
9323back to the user in the corresponding result.<wbr/></p>
9324            </td>
9325          </tr>
9326
9327
9328          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9329           <!-- end of entry -->
9330        
9331                
9332          <tr class="entry" id="controls_android.lens.filterDensity">
9333            <td class="entry_name
9334             " rowspan="3">
9335              android.<wbr/>lens.<wbr/>filter<wbr/>Density
9336            </td>
9337            <td class="entry_type">
9338                <span class="entry_type_name">float</span>
9339
9340              <span class="entry_type_visibility"> [public]</span>
9341
9342
9343
9344
9345
9346            </td> <!-- entry_type -->
9347
9348            <td class="entry_description">
9349              <p>State of lens neutral density filter(s).<wbr/></p>
9350            </td>
9351
9352            <td class="entry_units">
9353              Steps of Exposure Value (EV).<wbr/>
9354            </td>
9355
9356            <td class="entry_range">
9357              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
9358            </td>
9359
9360            <td class="entry_tags">
9361              <ul class="entry_tags">
9362                  <li><a href="#tag_V1">V1</a></li>
9363              </ul>
9364            </td>
9365
9366          </tr>
9367          <tr class="entries_header">
9368            <th class="th_details" colspan="5">Details</th>
9369          </tr>
9370          <tr class="entry_cont">
9371            <td class="entry_details" colspan="5">
9372              <p>This will not be supported on most camera devices.<wbr/> On devices
9373where this is supported,<wbr/> this may only be set to one of the
9374values included in <a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a>.<wbr/></p>
9375<p>Lens filters are typically used to lower the amount of light the
9376sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
9377step is the standard logarithmic representation,<wbr/> which are
9378non-negative,<wbr/> and inversely proportional to the amount of light
9379hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
9380in no reduction of the incoming light,<wbr/> and setting this to 2 would
9381mean that the filter is set to reduce incoming light by two stops
9382(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
9383<p>It may take several frames before the lens filter density changes
9384to the requested value.<wbr/> While the filter density is still changing,<wbr/>
9385<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
9386            </td>
9387          </tr>
9388
9389
9390          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9391           <!-- end of entry -->
9392        
9393                
9394          <tr class="entry" id="controls_android.lens.focalLength">
9395            <td class="entry_name
9396             " rowspan="3">
9397              android.<wbr/>lens.<wbr/>focal<wbr/>Length
9398            </td>
9399            <td class="entry_type">
9400                <span class="entry_type_name">float</span>
9401
9402              <span class="entry_type_visibility"> [public]</span>
9403
9404
9405
9406
9407
9408            </td> <!-- entry_type -->
9409
9410            <td class="entry_description">
9411              <p>The current lens focal length; used for optical zoom.<wbr/></p>
9412            </td>
9413
9414            <td class="entry_units">
9415              focal length in mm
9416            </td>
9417
9418            <td class="entry_range">
9419              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
9420            </td>
9421
9422            <td class="entry_tags">
9423              <ul class="entry_tags">
9424                  <li><a href="#tag_V1">V1</a></li>
9425              </ul>
9426            </td>
9427
9428          </tr>
9429          <tr class="entries_header">
9430            <th class="th_details" colspan="5">Details</th>
9431          </tr>
9432          <tr class="entry_cont">
9433            <td class="entry_details" colspan="5">
9434              <p>This setting controls the physical focal length of the camera
9435device's lens.<wbr/> Changing the focal length changes the field of
9436view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
9437<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
9438setting won't be applied instantaneously,<wbr/> and it may take several
9439frames before the lens can change to the requested focal length.<wbr/>
9440While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
9441be set to MOVING.<wbr/></p>
9442<p>This is expected not to be supported on most devices.<wbr/></p>
9443            </td>
9444          </tr>
9445
9446
9447          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9448           <!-- end of entry -->
9449        
9450                
9451          <tr class="entry" id="controls_android.lens.focusDistance">
9452            <td class="entry_name
9453             " rowspan="3">
9454              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
9455            </td>
9456            <td class="entry_type">
9457                <span class="entry_type_name">float</span>
9458
9459              <span class="entry_type_visibility"> [public]</span>
9460
9461
9462
9463
9464
9465            </td> <!-- entry_type -->
9466
9467            <td class="entry_description">
9468              <p>Distance to plane of sharpest focus,<wbr/>
9469measured from frontmost surface of the lens</p>
9470            </td>
9471
9472            <td class="entry_units">
9473              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
9474            </td>
9475
9476            <td class="entry_range">
9477              <p>&gt;= 0</p>
9478            </td>
9479
9480            <td class="entry_tags">
9481              <ul class="entry_tags">
9482                  <li><a href="#tag_BC">BC</a></li>
9483                  <li><a href="#tag_V1">V1</a></li>
9484              </ul>
9485            </td>
9486
9487          </tr>
9488          <tr class="entries_header">
9489            <th class="th_details" colspan="5">Details</th>
9490          </tr>
9491          <tr class="entry_cont">
9492            <td class="entry_details" colspan="5">
9493              <p>0 means infinity focus.<wbr/> Used value will be clamped
9494to [0,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>].<wbr/></p>
9495<p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
9496instantaneously,<wbr/> and it may take several frames before the lens
9497can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
9498<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
9499            </td>
9500          </tr>
9501
9502
9503          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9504           <!-- end of entry -->
9505        
9506                
9507          <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
9508            <td class="entry_name
9509             " rowspan="3">
9510              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
9511            </td>
9512            <td class="entry_type">
9513                <span class="entry_type_name entry_type_name_enum">byte</span>
9514
9515              <span class="entry_type_visibility"> [public]</span>
9516
9517
9518
9519
9520                <ul class="entry_type_enum">
9521                  <li>
9522                    <span class="entry_type_enum_name">OFF</span>
9523                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
9524                  </li>
9525                  <li>
9526                    <span class="entry_type_enum_name">ON</span>
9527                    <span class="entry_type_enum_optional">optional</span>
9528                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
9529                  </li>
9530                </ul>
9531
9532            </td> <!-- entry_type -->
9533
9534            <td class="entry_description">
9535              <p>Sets whether the camera device uses optical image stabilization (OIS)
9536when capturing images.<wbr/></p>
9537            </td>
9538
9539            <td class="entry_units">
9540            </td>
9541
9542            <td class="entry_range">
9543              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
9544            </td>
9545
9546            <td class="entry_tags">
9547              <ul class="entry_tags">
9548                  <li><a href="#tag_V1">V1</a></li>
9549              </ul>
9550            </td>
9551
9552          </tr>
9553          <tr class="entries_header">
9554            <th class="th_details" colspan="5">Details</th>
9555          </tr>
9556          <tr class="entry_cont">
9557            <td class="entry_details" colspan="5">
9558              <p>OIS is used to compensate for motion blur due to small movements of
9559the camera during capture.<wbr/> Unlike digital image stabilization,<wbr/> OIS makes
9560use of mechanical elements to stabilize the camera sensor,<wbr/> and thus
9561allows for longer exposure times before camera shake becomes
9562apparent.<wbr/></p>
9563<p>This is not expected to be supported on most devices.<wbr/></p>
9564            </td>
9565          </tr>
9566
9567
9568          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9569           <!-- end of entry -->
9570        
9571        
9572
9573      <!-- end of kind -->
9574      </tbody>
9575      <tr><td colspan="6" class="kind">static</td></tr>
9576
9577      <thead class="entries_header">
9578        <tr>
9579          <th class="th_name">Property Name</th>
9580          <th class="th_type">Type</th>
9581          <th class="th_description">Description</th>
9582          <th class="th_units">Units</th>
9583          <th class="th_range">Range</th>
9584          <th class="th_tags">Tags</th>
9585        </tr>
9586      </thead>
9587
9588      <tbody>
9589
9590        
9591
9592        
9593
9594        
9595
9596        
9597                
9598            
9599
9600                
9601          <tr class="entry" id="static_android.lens.info.availableApertures">
9602            <td class="entry_name
9603             " rowspan="3">
9604              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
9605            </td>
9606            <td class="entry_type">
9607                <span class="entry_type_name">float</span>
9608                <span class="entry_type_container">x</span>
9609
9610                <span class="entry_type_array">
9611                  n
9612                </span>
9613              <span class="entry_type_visibility"> [public]</span>
9614
9615
9616
9617
9618
9619            </td> <!-- entry_type -->
9620
9621            <td class="entry_description">
9622              <p>List of supported aperture
9623values.<wbr/></p>
9624            </td>
9625
9626            <td class="entry_units">
9627            </td>
9628
9629            <td class="entry_range">
9630              <p>one entry required,<wbr/> &gt; 0</p>
9631            </td>
9632
9633            <td class="entry_tags">
9634              <ul class="entry_tags">
9635                  <li><a href="#tag_V1">V1</a></li>
9636              </ul>
9637            </td>
9638
9639          </tr>
9640          <tr class="entries_header">
9641            <th class="th_details" colspan="5">Details</th>
9642          </tr>
9643          <tr class="entry_cont">
9644            <td class="entry_details" colspan="5">
9645              <p>If the camera device doesn't support variable apertures,<wbr/>
9646listed value will be the fixed aperture.<wbr/></p>
9647<p>If the camera device supports variable apertures,<wbr/> the aperture value
9648in this list will be sorted in ascending order.<wbr/></p>
9649            </td>
9650          </tr>
9651
9652
9653          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9654           <!-- end of entry -->
9655        
9656                
9657          <tr class="entry" id="static_android.lens.info.availableFilterDensities">
9658            <td class="entry_name
9659             " rowspan="3">
9660              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
9661            </td>
9662            <td class="entry_type">
9663                <span class="entry_type_name">float</span>
9664                <span class="entry_type_container">x</span>
9665
9666                <span class="entry_type_array">
9667                  n
9668                </span>
9669              <span class="entry_type_visibility"> [public]</span>
9670
9671
9672
9673
9674
9675            </td> <!-- entry_type -->
9676
9677            <td class="entry_description">
9678              <p>List of supported neutral density filter values for
9679<a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a>.<wbr/></p>
9680            </td>
9681
9682            <td class="entry_units">
9683            </td>
9684
9685            <td class="entry_range">
9686              <p>At least one value is required.<wbr/> Values must be &gt;= 0.<wbr/></p>
9687            </td>
9688
9689            <td class="entry_tags">
9690              <ul class="entry_tags">
9691                  <li><a href="#tag_V1">V1</a></li>
9692              </ul>
9693            </td>
9694
9695          </tr>
9696          <tr class="entries_header">
9697            <th class="th_details" colspan="5">Details</th>
9698          </tr>
9699          <tr class="entry_cont">
9700            <td class="entry_details" colspan="5">
9701              <p>If changing <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> is not supported,<wbr/>
9702availableFilterDensities must contain only 0.<wbr/> Otherwise,<wbr/> this
9703list contains only the exact filter density values available on
9704this camera device.<wbr/></p>
9705            </td>
9706          </tr>
9707
9708
9709          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9710           <!-- end of entry -->
9711        
9712                
9713          <tr class="entry" id="static_android.lens.info.availableFocalLengths">
9714            <td class="entry_name
9715             " rowspan="3">
9716              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
9717            </td>
9718            <td class="entry_type">
9719                <span class="entry_type_name">float</span>
9720                <span class="entry_type_container">x</span>
9721
9722                <span class="entry_type_array">
9723                  n
9724                </span>
9725              <span class="entry_type_visibility"> [public]</span>
9726
9727
9728
9729                <div class="entry_type_notes">The list of available focal lengths</div>
9730
9731
9732            </td> <!-- entry_type -->
9733
9734            <td class="entry_description">
9735              <p>The available focal lengths for this device for use with
9736<a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>.<wbr/></p>
9737            </td>
9738
9739            <td class="entry_units">
9740            </td>
9741
9742            <td class="entry_range">
9743              <p>Each value in this list must be &gt; 0.<wbr/> This list must
9744contain at least one value.<wbr/></p>
9745            </td>
9746
9747            <td class="entry_tags">
9748              <ul class="entry_tags">
9749                  <li><a href="#tag_BC">BC</a></li>
9750                  <li><a href="#tag_V1">V1</a></li>
9751              </ul>
9752            </td>
9753
9754          </tr>
9755          <tr class="entries_header">
9756            <th class="th_details" colspan="5">Details</th>
9757          </tr>
9758          <tr class="entry_cont">
9759            <td class="entry_details" colspan="5">
9760              <p>If optical zoom is not supported,<wbr/> this will only report
9761a single value corresponding to the static focal length of the
9762device.<wbr/> Otherwise,<wbr/> this will report every focal length supported
9763by the device.<wbr/></p>
9764            </td>
9765          </tr>
9766
9767
9768          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9769           <!-- end of entry -->
9770        
9771                
9772          <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
9773            <td class="entry_name
9774             " rowspan="3">
9775              android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
9776            </td>
9777            <td class="entry_type">
9778                <span class="entry_type_name">byte</span>
9779                <span class="entry_type_container">x</span>
9780
9781                <span class="entry_type_array">
9782                  n
9783                </span>
9784              <span class="entry_type_visibility"> [public as enumList]</span>
9785
9786
9787
9788                <div class="entry_type_notes">list of enums</div>
9789
9790
9791            </td> <!-- entry_type -->
9792
9793            <td class="entry_description">
9794              <p>List containing a subset of the optical image
9795stabilization (OIS) modes specified in
9796<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>.<wbr/></p>
9797            </td>
9798
9799            <td class="entry_units">
9800            </td>
9801
9802            <td class="entry_range">
9803            </td>
9804
9805            <td class="entry_tags">
9806              <ul class="entry_tags">
9807                  <li><a href="#tag_V1">V1</a></li>
9808              </ul>
9809            </td>
9810
9811          </tr>
9812          <tr class="entries_header">
9813            <th class="th_details" colspan="5">Details</th>
9814          </tr>
9815          <tr class="entry_cont">
9816            <td class="entry_details" colspan="5">
9817              <p>If OIS is not implemented for a given camera device,<wbr/> this should
9818contain only OFF.<wbr/></p>
9819            </td>
9820          </tr>
9821
9822
9823          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9824           <!-- end of entry -->
9825        
9826                
9827          <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
9828            <td class="entry_name
9829             " rowspan="3">
9830              android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
9831            </td>
9832            <td class="entry_type">
9833                <span class="entry_type_name">float</span>
9834
9835              <span class="entry_type_visibility"> [public]</span>
9836
9837
9838
9839
9840
9841            </td> <!-- entry_type -->
9842
9843            <td class="entry_description">
9844              <p>Optional.<wbr/> Hyperfocal distance for this lens.<wbr/></p>
9845            </td>
9846
9847            <td class="entry_units">
9848              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
9849            </td>
9850
9851            <td class="entry_range">
9852              <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the range is
9853<code>(0,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code></p>
9854            </td>
9855
9856            <td class="entry_tags">
9857            </td>
9858
9859          </tr>
9860          <tr class="entries_header">
9861            <th class="th_details" colspan="5">Details</th>
9862          </tr>
9863          <tr class="entry_cont">
9864            <td class="entry_details" colspan="5">
9865              <p>If the lens is not fixed focus,<wbr/> the camera device will report this
9866field 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>
9867            </td>
9868          </tr>
9869
9870
9871          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9872           <!-- end of entry -->
9873        
9874                
9875          <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
9876            <td class="entry_name
9877             " rowspan="3">
9878              android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
9879            </td>
9880            <td class="entry_type">
9881                <span class="entry_type_name">float</span>
9882
9883              <span class="entry_type_visibility"> [public]</span>
9884
9885
9886
9887
9888
9889            </td> <!-- entry_type -->
9890
9891            <td class="entry_description">
9892              <p>Shortest distance from frontmost surface
9893of the lens that can be focused correctly.<wbr/></p>
9894            </td>
9895
9896            <td class="entry_units">
9897              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
9898            </td>
9899
9900            <td class="entry_range">
9901              <p>&gt;= 0</p>
9902            </td>
9903
9904            <td class="entry_tags">
9905              <ul class="entry_tags">
9906                  <li><a href="#tag_V1">V1</a></li>
9907              </ul>
9908            </td>
9909
9910          </tr>
9911          <tr class="entries_header">
9912            <th class="th_details" colspan="5">Details</th>
9913          </tr>
9914          <tr class="entry_cont">
9915            <td class="entry_details" colspan="5">
9916              <p>If the lens is fixed-focus,<wbr/> this should be
99170.<wbr/></p>
9918            </td>
9919          </tr>
9920
9921
9922          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9923           <!-- end of entry -->
9924        
9925                
9926          <tr class="entry" id="static_android.lens.info.shadingMapSize">
9927            <td class="entry_name
9928             " rowspan="3">
9929              android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
9930            </td>
9931            <td class="entry_type">
9932                <span class="entry_type_name">int32</span>
9933                <span class="entry_type_container">x</span>
9934
9935                <span class="entry_type_array">
9936                  2
9937                </span>
9938              <span class="entry_type_visibility"> [hidden as size]</span>
9939
9940
9941
9942                <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
9943
9944
9945            </td> <!-- entry_type -->
9946
9947            <td class="entry_description">
9948              <p>Dimensions of lens shading map.<wbr/></p>
9949            </td>
9950
9951            <td class="entry_units">
9952            </td>
9953
9954            <td class="entry_range">
9955              <p>Both values &gt;= 1</p>
9956            </td>
9957
9958            <td class="entry_tags">
9959              <ul class="entry_tags">
9960                  <li><a href="#tag_V1">V1</a></li>
9961              </ul>
9962            </td>
9963
9964          </tr>
9965          <tr class="entries_header">
9966            <th class="th_details" colspan="5">Details</th>
9967          </tr>
9968          <tr class="entry_cont">
9969            <td class="entry_details" colspan="5">
9970              <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
9971must be smaller than 64x64.<wbr/></p>
9972            </td>
9973          </tr>
9974
9975
9976          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9977           <!-- end of entry -->
9978        
9979                
9980          <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
9981            <td class="entry_name
9982             " rowspan="3">
9983              android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
9984            </td>
9985            <td class="entry_type">
9986                <span class="entry_type_name entry_type_name_enum">byte</span>
9987
9988              <span class="entry_type_visibility"> [public]</span>
9989
9990
9991
9992
9993                <ul class="entry_type_enum">
9994                  <li>
9995                    <span class="entry_type_enum_name">UNCALIBRATED</span>
9996                    <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
9997<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/>
9998Setting the lens to the same focus distance on separate occasions may
9999result in a different real focus distance,<wbr/> depending on factors such
10000as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
10001and the device temperature.<wbr/> The focus distance value will still be
10002in 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
10003represents the farthest focus.<wbr/></p></span>
10004                  </li>
10005                  <li>
10006                    <span class="entry_type_enum_name">APPROXIMATE</span>
10007                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/> However,<wbr/> setting the lens
10008to the same focus distance on separate occasions may result in a
10009different real focus distance,<wbr/> depending on factors such as the
10010orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/> and
10011the device temperature.<wbr/></p></span>
10012                  </li>
10013                  <li>
10014                    <span class="entry_type_enum_name">CALIBRATED</span>
10015                    <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/> The lens mechanism is
10016calibrated so that setting the same focus distance is repeatable on
10017multiple occasions with good accuracy,<wbr/> and the focus distance corresponds
10018to the real physical distance to the plane of best focus.<wbr/></p></span>
10019                  </li>
10020                </ul>
10021
10022            </td> <!-- entry_type -->
10023
10024            <td class="entry_description">
10025              <p>The lens focus distance calibration quality.<wbr/></p>
10026            </td>
10027
10028            <td class="entry_units">
10029            </td>
10030
10031            <td class="entry_range">
10032            </td>
10033
10034            <td class="entry_tags">
10035              <ul class="entry_tags">
10036                  <li><a href="#tag_V1">V1</a></li>
10037              </ul>
10038            </td>
10039
10040          </tr>
10041          <tr class="entries_header">
10042            <th class="th_details" colspan="5">Details</th>
10043          </tr>
10044          <tr class="entry_cont">
10045            <td class="entry_details" colspan="5">
10046              <p>The lens focus distance calibration quality determines the reliability of
10047focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
10048<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
10049<a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
10050            </td>
10051          </tr>
10052
10053
10054          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10055           <!-- end of entry -->
10056        
10057        
10058        
10059
10060                
10061          <tr class="entry" id="static_android.lens.facing">
10062            <td class="entry_name
10063             " rowspan="1">
10064              android.<wbr/>lens.<wbr/>facing
10065            </td>
10066            <td class="entry_type">
10067                <span class="entry_type_name entry_type_name_enum">byte</span>
10068
10069              <span class="entry_type_visibility"> [public]</span>
10070
10071
10072
10073
10074                <ul class="entry_type_enum">
10075                  <li>
10076                    <span class="entry_type_enum_name">FRONT</span>
10077                  </li>
10078                  <li>
10079                    <span class="entry_type_enum_name">BACK</span>
10080                  </li>
10081                </ul>
10082
10083            </td> <!-- entry_type -->
10084
10085            <td class="entry_description">
10086              <p>Direction the camera faces relative to
10087device screen</p>
10088            </td>
10089
10090            <td class="entry_units">
10091            </td>
10092
10093            <td class="entry_range">
10094            </td>
10095
10096            <td class="entry_tags">
10097            </td>
10098
10099          </tr>
10100
10101
10102          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10103           <!-- end of entry -->
10104        
10105                
10106          <tr class="entry" id="static_android.lens.opticalAxisAngle">
10107            <td class="entry_name
10108             " rowspan="3">
10109              android.<wbr/>lens.<wbr/>optical<wbr/>Axis<wbr/>Angle
10110            </td>
10111            <td class="entry_type">
10112                <span class="entry_type_name">float</span>
10113                <span class="entry_type_container">x</span>
10114
10115                <span class="entry_type_array">
10116                  2
10117                </span>
10118              <span class="entry_type_visibility"> [system]</span>
10119
10120
10121
10122                <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>
10123
10124
10125            </td> <!-- entry_type -->
10126
10127            <td class="entry_description">
10128              <p>Relative angle of camera optical axis to the
10129perpendicular axis from the display</p>
10130            </td>
10131
10132            <td class="entry_units">
10133            </td>
10134
10135            <td class="entry_range">
10136              <p>[0-90) for first angle,<wbr/> [0-360) for second</p>
10137            </td>
10138
10139            <td class="entry_tags">
10140              <ul class="entry_tags">
10141                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10142              </ul>
10143            </td>
10144
10145          </tr>
10146          <tr class="entries_header">
10147            <th class="th_details" colspan="5">Details</th>
10148          </tr>
10149          <tr class="entry_cont">
10150            <td class="entry_details" colspan="5">
10151              <p>Examples:</p>
10152<p>(0,<wbr/>0) means that the camera optical axis
10153is perpendicular to the display surface;</p>
10154<p>(45,<wbr/>0) means that the camera points 45 degrees up when
10155device is held upright;</p>
10156<p>(45,<wbr/>90) means the camera points 45 degrees to the right when
10157the device is held upright.<wbr/></p>
10158<p>Use FACING field to determine perpendicular outgoing
10159direction</p>
10160            </td>
10161          </tr>
10162
10163
10164          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10165           <!-- end of entry -->
10166        
10167                
10168          <tr class="entry" id="static_android.lens.position">
10169            <td class="entry_name
10170             " rowspan="1">
10171              android.<wbr/>lens.<wbr/>position
10172            </td>
10173            <td class="entry_type">
10174                <span class="entry_type_name">float</span>
10175                <span class="entry_type_container">x</span>
10176
10177                <span class="entry_type_array">
10178                  3, location in mm, in the sensor coordinate
10179            system
10180                </span>
10181              <span class="entry_type_visibility"> [system]</span>
10182
10183
10184
10185
10186
10187            </td> <!-- entry_type -->
10188
10189            <td class="entry_description">
10190              <p>Coordinates of camera optical axis on
10191device</p>
10192            </td>
10193
10194            <td class="entry_units">
10195            </td>
10196
10197            <td class="entry_range">
10198            </td>
10199
10200            <td class="entry_tags">
10201              <ul class="entry_tags">
10202                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10203              </ul>
10204            </td>
10205
10206          </tr>
10207
10208
10209          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10210           <!-- end of entry -->
10211        
10212        
10213
10214      <!-- end of kind -->
10215      </tbody>
10216      <tr><td colspan="6" class="kind">dynamic</td></tr>
10217
10218      <thead class="entries_header">
10219        <tr>
10220          <th class="th_name">Property Name</th>
10221          <th class="th_type">Type</th>
10222          <th class="th_description">Description</th>
10223          <th class="th_units">Units</th>
10224          <th class="th_range">Range</th>
10225          <th class="th_tags">Tags</th>
10226        </tr>
10227      </thead>
10228
10229      <tbody>
10230
10231        
10232
10233        
10234
10235        
10236
10237        
10238
10239                
10240          <tr class="entry" id="dynamic_android.lens.aperture">
10241            <td class="entry_name
10242             " rowspan="3">
10243              android.<wbr/>lens.<wbr/>aperture
10244            </td>
10245            <td class="entry_type">
10246                <span class="entry_type_name">float</span>
10247
10248              <span class="entry_type_visibility"> [public]</span>
10249
10250
10251
10252
10253
10254            </td> <!-- entry_type -->
10255
10256            <td class="entry_description">
10257              <p>The ratio of lens focal length to the effective
10258aperture diameter.<wbr/></p>
10259            </td>
10260
10261            <td class="entry_units">
10262              f-number (f/<wbr/>NNN)
10263            </td>
10264
10265            <td class="entry_range">
10266              <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
10267            </td>
10268
10269            <td class="entry_tags">
10270              <ul class="entry_tags">
10271                  <li><a href="#tag_V1">V1</a></li>
10272              </ul>
10273            </td>
10274
10275          </tr>
10276          <tr class="entries_header">
10277            <th class="th_details" colspan="5">Details</th>
10278          </tr>
10279          <tr class="entry_cont">
10280            <td class="entry_details" colspan="5">
10281              <p>This will only be supported on the camera devices that
10282have variable aperture lens.<wbr/> The aperture value can only be
10283one of the values listed in <a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a>.<wbr/></p>
10284<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
10285this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
10286<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>
10287to achieve manual exposure control.<wbr/></p>
10288<p>The requested aperture value may take several frames to reach the
10289requested value; the camera device will report the current (intermediate)
10290aperture size in capture result metadata while the aperture is changing.<wbr/>
10291While 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>
10292<p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
10293the ON modes,<wbr/> this will be overridden by the camera device
10294auto-exposure algorithm,<wbr/> the overridden values are then provided
10295back to the user in the corresponding result.<wbr/></p>
10296            </td>
10297          </tr>
10298
10299
10300          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10301           <!-- end of entry -->
10302        
10303                
10304          <tr class="entry" id="dynamic_android.lens.filterDensity">
10305            <td class="entry_name
10306             " rowspan="3">
10307              android.<wbr/>lens.<wbr/>filter<wbr/>Density
10308            </td>
10309            <td class="entry_type">
10310                <span class="entry_type_name">float</span>
10311
10312              <span class="entry_type_visibility"> [public]</span>
10313
10314
10315
10316
10317
10318            </td> <!-- entry_type -->
10319
10320            <td class="entry_description">
10321              <p>State of lens neutral density filter(s).<wbr/></p>
10322            </td>
10323
10324            <td class="entry_units">
10325              Steps of Exposure Value (EV).<wbr/>
10326            </td>
10327
10328            <td class="entry_range">
10329              <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
10330            </td>
10331
10332            <td class="entry_tags">
10333              <ul class="entry_tags">
10334                  <li><a href="#tag_V1">V1</a></li>
10335              </ul>
10336            </td>
10337
10338          </tr>
10339          <tr class="entries_header">
10340            <th class="th_details" colspan="5">Details</th>
10341          </tr>
10342          <tr class="entry_cont">
10343            <td class="entry_details" colspan="5">
10344              <p>This will not be supported on most camera devices.<wbr/> On devices
10345where this is supported,<wbr/> this may only be set to one of the
10346values included in <a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a>.<wbr/></p>
10347<p>Lens filters are typically used to lower the amount of light the
10348sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
10349step is the standard logarithmic representation,<wbr/> which are
10350non-negative,<wbr/> and inversely proportional to the amount of light
10351hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
10352in no reduction of the incoming light,<wbr/> and setting this to 2 would
10353mean that the filter is set to reduce incoming light by two stops
10354(allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
10355<p>It may take several frames before the lens filter density changes
10356to the requested value.<wbr/> While the filter density is still changing,<wbr/>
10357<a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
10358            </td>
10359          </tr>
10360
10361
10362          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10363           <!-- end of entry -->
10364        
10365                
10366          <tr class="entry" id="dynamic_android.lens.focalLength">
10367            <td class="entry_name
10368             " rowspan="3">
10369              android.<wbr/>lens.<wbr/>focal<wbr/>Length
10370            </td>
10371            <td class="entry_type">
10372                <span class="entry_type_name">float</span>
10373
10374              <span class="entry_type_visibility"> [public]</span>
10375
10376
10377
10378
10379
10380            </td> <!-- entry_type -->
10381
10382            <td class="entry_description">
10383              <p>The current lens focal length; used for optical zoom.<wbr/></p>
10384            </td>
10385
10386            <td class="entry_units">
10387              focal length in mm
10388            </td>
10389
10390            <td class="entry_range">
10391              <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
10392            </td>
10393
10394            <td class="entry_tags">
10395              <ul class="entry_tags">
10396                  <li><a href="#tag_BC">BC</a></li>
10397              </ul>
10398            </td>
10399
10400          </tr>
10401          <tr class="entries_header">
10402            <th class="th_details" colspan="5">Details</th>
10403          </tr>
10404          <tr class="entry_cont">
10405            <td class="entry_details" colspan="5">
10406              <p>This setting controls the physical focal length of the camera
10407device's lens.<wbr/> Changing the focal length changes the field of
10408view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
10409<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
10410setting won't be applied instantaneously,<wbr/> and it may take several
10411frames before the lens can change to the requested focal length.<wbr/>
10412While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
10413be set to MOVING.<wbr/></p>
10414<p>This is expected not to be supported on most devices.<wbr/></p>
10415            </td>
10416          </tr>
10417
10418
10419          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10420           <!-- end of entry -->
10421        
10422                
10423          <tr class="entry" id="dynamic_android.lens.focusDistance">
10424            <td class="entry_name
10425             " rowspan="3">
10426              android.<wbr/>lens.<wbr/>focus<wbr/>Distance
10427            </td>
10428            <td class="entry_type">
10429                <span class="entry_type_name">float</span>
10430
10431              <span class="entry_type_visibility"> [public]</span>
10432
10433
10434
10435
10436
10437            </td> <!-- entry_type -->
10438
10439            <td class="entry_description">
10440              <p>Distance to plane of sharpest focus,<wbr/>
10441measured from frontmost surface of the lens</p>
10442            </td>
10443
10444            <td class="entry_units">
10445              See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
10446            </td>
10447
10448            <td class="entry_range">
10449              <p>&gt;= 0</p>
10450            </td>
10451
10452            <td class="entry_tags">
10453              <ul class="entry_tags">
10454                  <li><a href="#tag_BC">BC</a></li>
10455              </ul>
10456            </td>
10457
10458          </tr>
10459          <tr class="entries_header">
10460            <th class="th_details" colspan="5">Details</th>
10461          </tr>
10462          <tr class="entry_cont">
10463            <td class="entry_details" colspan="5">
10464              <p>Should be zero for fixed-focus cameras</p>
10465            </td>
10466          </tr>
10467
10468
10469          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10470           <!-- end of entry -->
10471        
10472                
10473          <tr class="entry" id="dynamic_android.lens.focusRange">
10474            <td class="entry_name
10475             " rowspan="3">
10476              android.<wbr/>lens.<wbr/>focus<wbr/>Range
10477            </td>
10478            <td class="entry_type">
10479                <span class="entry_type_name">float</span>
10480                <span class="entry_type_container">x</span>
10481
10482                <span class="entry_type_array">
10483                  2
10484                </span>
10485              <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
10486
10487
10488
10489                <div class="entry_type_notes">Range of scene distances that are in focus</div>
10490
10491
10492            </td> <!-- entry_type -->
10493
10494            <td class="entry_description">
10495              <p>The range of scene distances that are in
10496sharp focus (depth of field)</p>
10497            </td>
10498
10499            <td class="entry_units">
10500              pair of focus distances in diopters: (near,<wbr/>
10501          far),<wbr/> see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
10502            </td>
10503
10504            <td class="entry_range">
10505              <p>&gt;=0</p>
10506            </td>
10507
10508            <td class="entry_tags">
10509              <ul class="entry_tags">
10510                  <li><a href="#tag_BC">BC</a></li>
10511              </ul>
10512            </td>
10513
10514          </tr>
10515          <tr class="entries_header">
10516            <th class="th_details" colspan="5">Details</th>
10517          </tr>
10518          <tr class="entry_cont">
10519            <td class="entry_details" colspan="5">
10520              <p>If variable focus not supported,<wbr/> can still report
10521fixed depth of field range</p>
10522            </td>
10523          </tr>
10524
10525
10526          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10527           <!-- end of entry -->
10528        
10529                
10530          <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
10531            <td class="entry_name
10532             " rowspan="3">
10533              android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
10534            </td>
10535            <td class="entry_type">
10536                <span class="entry_type_name entry_type_name_enum">byte</span>
10537
10538              <span class="entry_type_visibility"> [public]</span>
10539
10540
10541
10542
10543                <ul class="entry_type_enum">
10544                  <li>
10545                    <span class="entry_type_enum_name">OFF</span>
10546                    <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
10547                  </li>
10548                  <li>
10549                    <span class="entry_type_enum_name">ON</span>
10550                    <span class="entry_type_enum_optional">optional</span>
10551                    <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
10552                  </li>
10553                </ul>
10554
10555            </td> <!-- entry_type -->
10556
10557            <td class="entry_description">
10558              <p>Sets whether the camera device uses optical image stabilization (OIS)
10559when capturing images.<wbr/></p>
10560            </td>
10561
10562            <td class="entry_units">
10563            </td>
10564
10565            <td class="entry_range">
10566              <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
10567            </td>
10568
10569            <td class="entry_tags">
10570              <ul class="entry_tags">
10571                  <li><a href="#tag_V1">V1</a></li>
10572              </ul>
10573            </td>
10574
10575          </tr>
10576          <tr class="entries_header">
10577            <th class="th_details" colspan="5">Details</th>
10578          </tr>
10579          <tr class="entry_cont">
10580            <td class="entry_details" colspan="5">
10581              <p>OIS is used to compensate for motion blur due to small movements of
10582the camera during capture.<wbr/> Unlike digital image stabilization,<wbr/> OIS makes
10583use of mechanical elements to stabilize the camera sensor,<wbr/> and thus
10584allows for longer exposure times before camera shake becomes
10585apparent.<wbr/></p>
10586<p>This is not expected to be supported on most devices.<wbr/></p>
10587            </td>
10588          </tr>
10589
10590
10591          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10592           <!-- end of entry -->
10593        
10594                
10595          <tr class="entry" id="dynamic_android.lens.state">
10596            <td class="entry_name
10597             " rowspan="3">
10598              android.<wbr/>lens.<wbr/>state
10599            </td>
10600            <td class="entry_type">
10601                <span class="entry_type_name entry_type_name_enum">byte</span>
10602
10603              <span class="entry_type_visibility"> [public]</span>
10604
10605
10606
10607
10608                <ul class="entry_type_enum">
10609                  <li>
10610                    <span class="entry_type_enum_name">STATIONARY</span>
10611                    <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/>
10612<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>
10613                  </li>
10614                  <li>
10615                    <span class="entry_type_enum_name">MOVING</span>
10616                    <span class="entry_type_enum_notes"><p>Any of 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/>
10617<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 changing.<wbr/></p></span>
10618                  </li>
10619                </ul>
10620
10621            </td> <!-- entry_type -->
10622
10623            <td class="entry_description">
10624              <p>Current lens status.<wbr/></p>
10625            </td>
10626
10627            <td class="entry_units">
10628            </td>
10629
10630            <td class="entry_range">
10631            </td>
10632
10633            <td class="entry_tags">
10634              <ul class="entry_tags">
10635                  <li><a href="#tag_V1">V1</a></li>
10636              </ul>
10637            </td>
10638
10639          </tr>
10640          <tr class="entries_header">
10641            <th class="th_details" colspan="5">Details</th>
10642          </tr>
10643          <tr class="entry_cont">
10644            <td class="entry_details" colspan="5">
10645              <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/>
10646<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/>
10647they may take several frames to reach the requested values.<wbr/> This state indicates
10648the current status of the lens parameters.<wbr/></p>
10649<p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
10650either because the parameters are all fixed,<wbr/> or because the lens has had enough
10651time to reach the most recently-requested values.<wbr/>
10652If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
10653<ul>
10654<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
10655<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
10656<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/>
10657which means the optical zoom is not supported.<wbr/></li>
10658<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>
10659<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>
10660</ul>
10661<p>Then this state will always be STATIONARY.<wbr/></p>
10662<p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
10663is changing.<wbr/></p>
10664            </td>
10665          </tr>
10666
10667
10668          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10669           <!-- end of entry -->
10670        
10671        
10672
10673      <!-- end of kind -->
10674      </tbody>
10675
10676  <!-- end of section -->
10677  <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr>
10678
10679
10680      <tr><td colspan="6" class="kind">controls</td></tr>
10681
10682      <thead class="entries_header">
10683        <tr>
10684          <th class="th_name">Property Name</th>
10685          <th class="th_type">Type</th>
10686          <th class="th_description">Description</th>
10687          <th class="th_units">Units</th>
10688          <th class="th_range">Range</th>
10689          <th class="th_tags">Tags</th>
10690        </tr>
10691      </thead>
10692
10693      <tbody>
10694
10695        
10696
10697        
10698
10699        
10700
10701        
10702
10703                
10704          <tr class="entry" id="controls_android.noiseReduction.mode">
10705            <td class="entry_name
10706             " rowspan="3">
10707              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
10708            </td>
10709            <td class="entry_type">
10710                <span class="entry_type_name entry_type_name_enum">byte</span>
10711
10712              <span class="entry_type_visibility"> [public]</span>
10713
10714
10715
10716
10717                <ul class="entry_type_enum">
10718                  <li>
10719                    <span class="entry_type_enum_name">OFF</span>
10720                    <span class="entry_type_enum_notes"><p>No noise reduction is applied</p></span>
10721                  </li>
10722                  <li>
10723                    <span class="entry_type_enum_name">FAST</span>
10724                    <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor
10725output</p></span>
10726                  </li>
10727                  <li>
10728                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
10729                    <span class="entry_type_enum_notes"><p>May slow down frame rate to provide highest
10730quality</p></span>
10731                  </li>
10732                </ul>
10733
10734            </td> <!-- entry_type -->
10735
10736            <td class="entry_description">
10737              <p>Mode of operation for the noise reduction
10738algorithm</p>
10739            </td>
10740
10741            <td class="entry_units">
10742            </td>
10743
10744            <td class="entry_range">
10745            </td>
10746
10747            <td class="entry_tags">
10748              <ul class="entry_tags">
10749                  <li><a href="#tag_V1">V1</a></li>
10750              </ul>
10751            </td>
10752
10753          </tr>
10754          <tr class="entries_header">
10755            <th class="th_details" colspan="5">Details</th>
10756          </tr>
10757          <tr class="entry_cont">
10758            <td class="entry_details" colspan="5">
10759              <p>Noise filtering control.<wbr/> OFF means no noise reduction
10760will be applied by the camera device.<wbr/></p>
10761<p>This must be set to a valid mode in
10762<a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a>.<wbr/></p>
10763<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
10764will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
10765will use the highest-quality noise filtering algorithms,<wbr/>
10766even if it slows down capture rate.<wbr/> FAST means the camera device should not
10767slow down capture rate when applying noise filtering.<wbr/></p>
10768            </td>
10769          </tr>
10770
10771
10772          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10773           <!-- end of entry -->
10774        
10775                
10776          <tr class="entry" id="controls_android.noiseReduction.strength">
10777            <td class="entry_name
10778             " rowspan="1">
10779              android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
10780            </td>
10781            <td class="entry_type">
10782                <span class="entry_type_name">byte</span>
10783
10784              <span class="entry_type_visibility"> [system]</span>
10785
10786
10787
10788
10789
10790            </td> <!-- entry_type -->
10791
10792            <td class="entry_description">
10793              <p>Control the amount of noise reduction
10794applied to the images</p>
10795            </td>
10796
10797            <td class="entry_units">
10798              1-10; 10 is max noise reduction
10799            </td>
10800
10801            <td class="entry_range">
10802              <p>1 - 10</p>
10803            </td>
10804
10805            <td class="entry_tags">
10806              <ul class="entry_tags">
10807                  <li><a href="#tag_FUTURE">FUTURE</a></li>
10808              </ul>
10809            </td>
10810
10811          </tr>
10812
10813
10814          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10815           <!-- end of entry -->
10816        
10817        
10818
10819      <!-- end of kind -->
10820      </tbody>
10821      <tr><td colspan="6" class="kind">static</td></tr>
10822
10823      <thead class="entries_header">
10824        <tr>
10825          <th class="th_name">Property Name</th>
10826          <th class="th_type">Type</th>
10827          <th class="th_description">Description</th>
10828          <th class="th_units">Units</th>
10829          <th class="th_range">Range</th>
10830          <th class="th_tags">Tags</th>
10831        </tr>
10832      </thead>
10833
10834      <tbody>
10835
10836        
10837
10838        
10839
10840        
10841
10842        
10843
10844                
10845          <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
10846            <td class="entry_name
10847             " rowspan="3">
10848              android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
10849            </td>
10850            <td class="entry_type">
10851                <span class="entry_type_name">byte</span>
10852                <span class="entry_type_container">x</span>
10853
10854                <span class="entry_type_array">
10855                  n
10856                </span>
10857              <span class="entry_type_visibility"> [public as enumList]</span>
10858
10859
10860
10861                <div class="entry_type_notes">list of enums</div>
10862
10863
10864            </td> <!-- entry_type -->
10865
10866            <td class="entry_description">
10867              <p>The set of noise reduction modes supported by this camera device.<wbr/></p>
10868            </td>
10869
10870            <td class="entry_units">
10871            </td>
10872
10873            <td class="entry_range">
10874            </td>
10875
10876            <td class="entry_tags">
10877              <ul class="entry_tags">
10878                  <li><a href="#tag_V1">V1</a></li>
10879              </ul>
10880            </td>
10881
10882          </tr>
10883          <tr class="entries_header">
10884            <th class="th_details" colspan="5">Details</th>
10885          </tr>
10886          <tr class="entry_cont">
10887            <td class="entry_details" colspan="5">
10888              <p>This tag lists the valid modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>.<wbr/></p>
10889<p>Full-capability camera devices must laways support OFF and FAST.<wbr/></p>
10890            </td>
10891          </tr>
10892
10893
10894          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10895           <!-- end of entry -->
10896        
10897        
10898
10899      <!-- end of kind -->
10900      </tbody>
10901      <tr><td colspan="6" class="kind">dynamic</td></tr>
10902
10903      <thead class="entries_header">
10904        <tr>
10905          <th class="th_name">Property Name</th>
10906          <th class="th_type">Type</th>
10907          <th class="th_description">Description</th>
10908          <th class="th_units">Units</th>
10909          <th class="th_range">Range</th>
10910          <th class="th_tags">Tags</th>
10911        </tr>
10912      </thead>
10913
10914      <tbody>
10915
10916        
10917
10918        
10919
10920        
10921
10922        
10923
10924                
10925          <tr class="entry" id="dynamic_android.noiseReduction.mode">
10926            <td class="entry_name
10927             " rowspan="3">
10928              android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
10929            </td>
10930            <td class="entry_type">
10931                <span class="entry_type_name entry_type_name_enum">byte</span>
10932
10933              <span class="entry_type_visibility"> [public]</span>
10934
10935
10936
10937
10938                <ul class="entry_type_enum">
10939                  <li>
10940                    <span class="entry_type_enum_name">OFF</span>
10941                    <span class="entry_type_enum_notes"><p>No noise reduction is applied</p></span>
10942                  </li>
10943                  <li>
10944                    <span class="entry_type_enum_name">FAST</span>
10945                    <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor
10946output</p></span>
10947                  </li>
10948                  <li>
10949                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
10950                    <span class="entry_type_enum_notes"><p>May slow down frame rate to provide highest
10951quality</p></span>
10952                  </li>
10953                </ul>
10954
10955            </td> <!-- entry_type -->
10956
10957            <td class="entry_description">
10958              <p>Mode of operation for the noise reduction
10959algorithm</p>
10960            </td>
10961
10962            <td class="entry_units">
10963            </td>
10964
10965            <td class="entry_range">
10966            </td>
10967
10968            <td class="entry_tags">
10969              <ul class="entry_tags">
10970                  <li><a href="#tag_V1">V1</a></li>
10971              </ul>
10972            </td>
10973
10974          </tr>
10975          <tr class="entries_header">
10976            <th class="th_details" colspan="5">Details</th>
10977          </tr>
10978          <tr class="entry_cont">
10979            <td class="entry_details" colspan="5">
10980              <p>Noise filtering control.<wbr/> OFF means no noise reduction
10981will be applied by the camera device.<wbr/></p>
10982<p>This must be set to a valid mode in
10983<a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a>.<wbr/></p>
10984<p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
10985will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
10986will use the highest-quality noise filtering algorithms,<wbr/>
10987even if it slows down capture rate.<wbr/> FAST means the camera device should not
10988slow down capture rate when applying noise filtering.<wbr/></p>
10989            </td>
10990          </tr>
10991
10992
10993          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10994           <!-- end of entry -->
10995        
10996        
10997
10998      <!-- end of kind -->
10999      </tbody>
11000
11001  <!-- end of section -->
11002  <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr>
11003
11004
11005      <tr><td colspan="6" class="kind">static</td></tr>
11006
11007      <thead class="entries_header">
11008        <tr>
11009          <th class="th_name">Property Name</th>
11010          <th class="th_type">Type</th>
11011          <th class="th_description">Description</th>
11012          <th class="th_units">Units</th>
11013          <th class="th_range">Range</th>
11014          <th class="th_tags">Tags</th>
11015        </tr>
11016      </thead>
11017
11018      <tbody>
11019
11020        
11021
11022        
11023
11024        
11025
11026        
11027
11028                
11029          <tr class="entry" id="static_android.quirks.meteringCropRegion">
11030            <td class="entry_name
11031                entry_name_deprecated
11032             " rowspan="3">
11033              android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
11034            </td>
11035            <td class="entry_type">
11036                <span class="entry_type_name">byte</span>
11037
11038              <span class="entry_type_visibility"> [system]</span>
11039
11040
11041              <span class="entry_type_deprecated">[deprecated] </span>
11042
11043
11044
11045            </td> <!-- entry_type -->
11046
11047            <td class="entry_description">
11048              <p>If set to 1,<wbr/> the camera service does not
11049scale 'normalized' coordinates with respect to the crop
11050region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
11051and output (face rectangles).<wbr/></p>
11052            </td>
11053
11054            <td class="entry_units">
11055            </td>
11056
11057            <td class="entry_range">
11058              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
11059            </td>
11060
11061            <td class="entry_tags">
11062            </td>
11063
11064          </tr>
11065          <tr class="entries_header">
11066            <th class="th_details" colspan="5">Details</th>
11067          </tr>
11068          <tr class="entry_cont">
11069            <td class="entry_details" colspan="5">
11070              <p>Normalized coordinates refer to those in the
11071(-1000,<wbr/>1000) range mentioned in the
11072android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
11073<p>HAL implementations should instead always use and emit
11074sensor array-relative coordinates for all region data.<wbr/> Does
11075not need to be listed in static metadata.<wbr/> Support will be
11076removed in future versions of camera service.<wbr/></p>
11077            </td>
11078          </tr>
11079
11080
11081          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11082           <!-- end of entry -->
11083        
11084                
11085          <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
11086            <td class="entry_name
11087                entry_name_deprecated
11088             " rowspan="3">
11089              android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
11090            </td>
11091            <td class="entry_type">
11092                <span class="entry_type_name">byte</span>
11093
11094              <span class="entry_type_visibility"> [system]</span>
11095
11096
11097              <span class="entry_type_deprecated">[deprecated] </span>
11098
11099
11100
11101            </td> <!-- entry_type -->
11102
11103            <td class="entry_description">
11104              <p>If set to 1,<wbr/> then the camera service always
11105switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
11106trigger.<wbr/></p>
11107            </td>
11108
11109            <td class="entry_units">
11110            </td>
11111
11112            <td class="entry_range">
11113              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
11114            </td>
11115
11116            <td class="entry_tags">
11117            </td>
11118
11119          </tr>
11120          <tr class="entries_header">
11121            <th class="th_details" colspan="5">Details</th>
11122          </tr>
11123          <tr class="entry_cont">
11124            <td class="entry_details" colspan="5">
11125              <p>HAL implementations should implement AF trigger
11126modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
11127CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
11128not need to be listed in static metadata.<wbr/> Support will be
11129removed in future versions of camera service</p>
11130            </td>
11131          </tr>
11132
11133
11134          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11135           <!-- end of entry -->
11136        
11137                
11138          <tr class="entry" id="static_android.quirks.useZslFormat">
11139            <td class="entry_name
11140                entry_name_deprecated
11141             " rowspan="3">
11142              android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
11143            </td>
11144            <td class="entry_type">
11145                <span class="entry_type_name">byte</span>
11146
11147              <span class="entry_type_visibility"> [system]</span>
11148
11149
11150              <span class="entry_type_deprecated">[deprecated] </span>
11151
11152
11153
11154            </td> <!-- entry_type -->
11155
11156            <td class="entry_description">
11157              <p>If set to 1,<wbr/> the camera service uses
11158CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
11159HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
11160shutter lag stream</p>
11161            </td>
11162
11163            <td class="entry_units">
11164            </td>
11165
11166            <td class="entry_range">
11167              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
11168            </td>
11169
11170            <td class="entry_tags">
11171            </td>
11172
11173          </tr>
11174          <tr class="entries_header">
11175            <th class="th_details" colspan="5">Details</th>
11176          </tr>
11177          <tr class="entry_cont">
11178            <td class="entry_details" colspan="5">
11179              <p>HAL implementations should use gralloc usage flags
11180to determine that a stream will be used for
11181zero-shutter-lag,<wbr/> instead of relying on an explicit
11182format setting.<wbr/> Does not need to be listed in static
11183metadata.<wbr/> Support will be removed in future versions of
11184camera service.<wbr/></p>
11185            </td>
11186          </tr>
11187
11188
11189          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11190           <!-- end of entry -->
11191        
11192                
11193          <tr class="entry" id="static_android.quirks.usePartialResult">
11194            <td class="entry_name
11195                entry_name_deprecated
11196             " rowspan="5">
11197              android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
11198            </td>
11199            <td class="entry_type">
11200                <span class="entry_type_name">byte</span>
11201
11202              <span class="entry_type_visibility"> [hidden]</span>
11203
11204
11205              <span class="entry_type_deprecated">[deprecated] </span>
11206
11207
11208
11209            </td> <!-- entry_type -->
11210
11211            <td class="entry_description">
11212              <p>If set to 1,<wbr/> the HAL will always split result
11213metadata for a single capture into multiple buffers,<wbr/>
11214returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
11215            </td>
11216
11217            <td class="entry_units">
11218            </td>
11219
11220            <td class="entry_range">
11221              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
11222            </td>
11223
11224            <td class="entry_tags">
11225            </td>
11226
11227          </tr>
11228          <tr class="entries_header">
11229            <th class="th_details" colspan="5">Details</th>
11230          </tr>
11231          <tr class="entry_cont">
11232            <td class="entry_details" colspan="5">
11233              <p>Does not need to be listed in static
11234metadata.<wbr/> Support for partial results will be reworked in
11235future versions of camera service.<wbr/> This quirk will stop
11236working at that point; DO NOT USE without careful
11237consideration of future support.<wbr/></p>
11238            </td>
11239          </tr>
11240
11241          <tr class="entries_header">
11242            <th class="th_details" colspan="5">HAL Implementation Details</th>
11243          </tr>
11244          <tr class="entry_cont">
11245            <td class="entry_details" colspan="5">
11246              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
11247for information on how to implement partial results.<wbr/></p>
11248            </td>
11249          </tr>
11250
11251          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11252           <!-- end of entry -->
11253        
11254        
11255
11256      <!-- end of kind -->
11257      </tbody>
11258      <tr><td colspan="6" class="kind">dynamic</td></tr>
11259
11260      <thead class="entries_header">
11261        <tr>
11262          <th class="th_name">Property Name</th>
11263          <th class="th_type">Type</th>
11264          <th class="th_description">Description</th>
11265          <th class="th_units">Units</th>
11266          <th class="th_range">Range</th>
11267          <th class="th_tags">Tags</th>
11268        </tr>
11269      </thead>
11270
11271      <tbody>
11272
11273        
11274
11275        
11276
11277        
11278
11279        
11280
11281                
11282          <tr class="entry" id="dynamic_android.quirks.partialResult">
11283            <td class="entry_name
11284                entry_name_deprecated
11285             " rowspan="5">
11286              android.<wbr/>quirks.<wbr/>partial<wbr/>Result
11287            </td>
11288            <td class="entry_type">
11289                <span class="entry_type_name entry_type_name_enum">byte</span>
11290
11291              <span class="entry_type_visibility"> [hidden as boolean]</span>
11292
11293
11294              <span class="entry_type_deprecated">[deprecated] </span>
11295
11296
11297                <ul class="entry_type_enum">
11298                  <li>
11299                    <span class="entry_type_enum_name">FINAL</span>
11300                    <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
11301for this capture.<wbr/></p></span>
11302                  </li>
11303                  <li>
11304                    <span class="entry_type_enum_name">PARTIAL</span>
11305                    <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
11306capture.<wbr/> More result buffers for this capture will be sent
11307by the camera device,<wbr/> the last of which will be marked
11308FINAL.<wbr/></p></span>
11309                  </li>
11310                </ul>
11311
11312            </td> <!-- entry_type -->
11313
11314            <td class="entry_description">
11315              <p>Whether a result given to the framework is the
11316final one for the capture,<wbr/> or only a partial that contains a
11317subset of the full set of dynamic metadata
11318values.<wbr/></p>
11319            </td>
11320
11321            <td class="entry_units">
11322            </td>
11323
11324            <td class="entry_range">
11325              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
11326              <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
11327            </td>
11328
11329            <td class="entry_tags">
11330            </td>
11331
11332          </tr>
11333          <tr class="entries_header">
11334            <th class="th_details" colspan="5">Details</th>
11335          </tr>
11336          <tr class="entry_cont">
11337            <td class="entry_details" colspan="5">
11338              <p>The entries in the result metadata buffers for a
11339single capture may not overlap,<wbr/> except for this entry.<wbr/> The
11340FINAL buffers must retain FIFO ordering relative to the
11341requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
11342always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
11343before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
11344in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
11345capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
11346only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
11347            </td>
11348          </tr>
11349
11350          <tr class="entries_header">
11351            <th class="th_details" colspan="5">HAL Implementation Details</th>
11352          </tr>
11353          <tr class="entry_cont">
11354            <td class="entry_details" colspan="5">
11355              <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
11356for information on how to implement partial results.<wbr/></p>
11357            </td>
11358          </tr>
11359
11360          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11361           <!-- end of entry -->
11362        
11363        
11364
11365      <!-- end of kind -->
11366      </tbody>
11367
11368  <!-- end of section -->
11369  <tr><td colspan="6" id="section_request" class="section">request</td></tr>
11370
11371
11372      <tr><td colspan="6" class="kind">controls</td></tr>
11373
11374      <thead class="entries_header">
11375        <tr>
11376          <th class="th_name">Property Name</th>
11377          <th class="th_type">Type</th>
11378          <th class="th_description">Description</th>
11379          <th class="th_units">Units</th>
11380          <th class="th_range">Range</th>
11381          <th class="th_tags">Tags</th>
11382        </tr>
11383      </thead>
11384
11385      <tbody>
11386
11387        
11388
11389        
11390
11391        
11392
11393        
11394
11395                
11396          <tr class="entry" id="controls_android.request.frameCount">
11397            <td class="entry_name
11398                entry_name_deprecated
11399             " rowspan="1">
11400              android.<wbr/>request.<wbr/>frame<wbr/>Count
11401            </td>
11402            <td class="entry_type">
11403                <span class="entry_type_name">int32</span>
11404
11405              <span class="entry_type_visibility"> [system]</span>
11406
11407
11408              <span class="entry_type_deprecated">[deprecated] </span>
11409
11410
11411
11412            </td> <!-- entry_type -->
11413
11414            <td class="entry_description">
11415              <p>A frame counter set by the framework.<wbr/> Must
11416be maintained unchanged in output frame.<wbr/> This value monotonically
11417increases with every new result (that is,<wbr/> each new result has a unique
11418frameCount value).<wbr/></p>
11419            </td>
11420
11421            <td class="entry_units">
11422              incrementing integer
11423            </td>
11424
11425            <td class="entry_range">
11426              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
11427              <p>Any int.<wbr/></p>
11428            </td>
11429
11430            <td class="entry_tags">
11431            </td>
11432
11433          </tr>
11434
11435
11436          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11437           <!-- end of entry -->
11438        
11439                
11440          <tr class="entry" id="controls_android.request.id">
11441            <td class="entry_name
11442             " rowspan="1">
11443              android.<wbr/>request.<wbr/>id
11444            </td>
11445            <td class="entry_type">
11446                <span class="entry_type_name">int32</span>
11447
11448              <span class="entry_type_visibility"> [hidden]</span>
11449
11450
11451
11452
11453
11454            </td> <!-- entry_type -->
11455
11456            <td class="entry_description">
11457              <p>An application-specified ID for the current
11458request.<wbr/> Must be maintained unchanged in output
11459frame</p>
11460            </td>
11461
11462            <td class="entry_units">
11463              arbitrary integer assigned by application
11464            </td>
11465
11466            <td class="entry_range">
11467              <p>Any int</p>
11468            </td>
11469
11470            <td class="entry_tags">
11471              <ul class="entry_tags">
11472                  <li><a href="#tag_V1">V1</a></li>
11473              </ul>
11474            </td>
11475
11476          </tr>
11477
11478
11479          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11480           <!-- end of entry -->
11481        
11482                
11483          <tr class="entry" id="controls_android.request.inputStreams">
11484            <td class="entry_name
11485                entry_name_deprecated
11486             " rowspan="3">
11487              android.<wbr/>request.<wbr/>input<wbr/>Streams
11488            </td>
11489            <td class="entry_type">
11490                <span class="entry_type_name">int32</span>
11491                <span class="entry_type_container">x</span>
11492
11493                <span class="entry_type_array">
11494                  n
11495                </span>
11496              <span class="entry_type_visibility"> [system]</span>
11497
11498
11499              <span class="entry_type_deprecated">[deprecated] </span>
11500
11501
11502
11503            </td> <!-- entry_type -->
11504
11505            <td class="entry_description">
11506              <p>List which camera reprocess stream is used
11507for the source of reprocessing data.<wbr/></p>
11508            </td>
11509
11510            <td class="entry_units">
11511              List of camera reprocess stream IDs
11512            </td>
11513
11514            <td class="entry_range">
11515              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
11516              <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
11517            </td>
11518
11519            <td class="entry_tags">
11520              <ul class="entry_tags">
11521                  <li><a href="#tag_HAL2">HAL2</a></li>
11522              </ul>
11523            </td>
11524
11525          </tr>
11526          <tr class="entries_header">
11527            <th class="th_details" colspan="5">Details</th>
11528          </tr>
11529          <tr class="entry_cont">
11530            <td class="entry_details" colspan="5">
11531              <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
11532REPROCESS.<wbr/> Ignored otherwise</p>
11533            </td>
11534          </tr>
11535
11536
11537          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11538           <!-- end of entry -->
11539        
11540                
11541          <tr class="entry" id="controls_android.request.metadataMode">
11542            <td class="entry_name
11543             " rowspan="1">
11544              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
11545            </td>
11546            <td class="entry_type">
11547                <span class="entry_type_name entry_type_name_enum">byte</span>
11548
11549              <span class="entry_type_visibility"> [system]</span>
11550
11551
11552
11553
11554                <ul class="entry_type_enum">
11555                  <li>
11556                    <span class="entry_type_enum_name">NONE</span>
11557                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
11558for application-bound buffer data.<wbr/> If no
11559application-bound streams exist,<wbr/> no frame should be
11560placed in the output frame queue.<wbr/> If such streams
11561exist,<wbr/> a frame should be placed on the output queue
11562with null metadata but with the necessary output buffer
11563information.<wbr/> Timestamp information should still be
11564included with any output stream buffers</p></span>
11565                  </li>
11566                  <li>
11567                    <span class="entry_type_enum_name">FULL</span>
11568                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
11569only be produced if they are separately
11570enabled</p></span>
11571                  </li>
11572                </ul>
11573
11574            </td> <!-- entry_type -->
11575
11576            <td class="entry_description">
11577              <p>How much metadata to produce on
11578output</p>
11579            </td>
11580
11581            <td class="entry_units">
11582            </td>
11583
11584            <td class="entry_range">
11585            </td>
11586
11587            <td class="entry_tags">
11588              <ul class="entry_tags">
11589                  <li><a href="#tag_FUTURE">FUTURE</a></li>
11590              </ul>
11591            </td>
11592
11593          </tr>
11594
11595
11596          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11597           <!-- end of entry -->
11598        
11599                
11600          <tr class="entry" id="controls_android.request.outputStreams">
11601            <td class="entry_name
11602                entry_name_deprecated
11603             " rowspan="3">
11604              android.<wbr/>request.<wbr/>output<wbr/>Streams
11605            </td>
11606            <td class="entry_type">
11607                <span class="entry_type_name">int32</span>
11608                <span class="entry_type_container">x</span>
11609
11610                <span class="entry_type_array">
11611                  n
11612                </span>
11613              <span class="entry_type_visibility"> [system]</span>
11614
11615
11616              <span class="entry_type_deprecated">[deprecated] </span>
11617
11618
11619
11620            </td> <!-- entry_type -->
11621
11622            <td class="entry_description">
11623              <p>Lists which camera output streams image data
11624from this capture must be sent to</p>
11625            </td>
11626
11627            <td class="entry_units">
11628              List of camera stream IDs
11629            </td>
11630
11631            <td class="entry_range">
11632              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
11633              <p>List must only include streams that have been
11634created</p>
11635            </td>
11636
11637            <td class="entry_tags">
11638              <ul class="entry_tags">
11639                  <li><a href="#tag_HAL2">HAL2</a></li>
11640              </ul>
11641            </td>
11642
11643          </tr>
11644          <tr class="entries_header">
11645            <th class="th_details" colspan="5">Details</th>
11646          </tr>
11647          <tr class="entry_cont">
11648            <td class="entry_details" colspan="5">
11649              <p>If no output streams are listed,<wbr/> then the image
11650data should simply be discarded.<wbr/> The image data must
11651still be captured for metadata and statistics production,<wbr/>
11652and the lens and flash must operate as requested.<wbr/></p>
11653            </td>
11654          </tr>
11655
11656
11657          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11658           <!-- end of entry -->
11659        
11660                
11661          <tr class="entry" id="controls_android.request.type">
11662            <td class="entry_name
11663                entry_name_deprecated
11664             " rowspan="1">
11665              android.<wbr/>request.<wbr/>type
11666            </td>
11667            <td class="entry_type">
11668                <span class="entry_type_name entry_type_name_enum">byte</span>
11669
11670              <span class="entry_type_visibility"> [system]</span>
11671
11672
11673              <span class="entry_type_deprecated">[deprecated] </span>
11674
11675
11676                <ul class="entry_type_enum">
11677                  <li>
11678                    <span class="entry_type_enum_name">CAPTURE</span>
11679                    <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
11680and process it according to the
11681settings</p></span>
11682                  </li>
11683                  <li>
11684                    <span class="entry_type_enum_name">REPROCESS</span>
11685                    <span class="entry_type_enum_notes"><p>Process previously captured data; the
11686<a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
11687source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
11688needed for reprocessing with [RP]</p></span>
11689                  </li>
11690                </ul>
11691
11692            </td> <!-- entry_type -->
11693
11694            <td class="entry_description">
11695              <p>The type of the request; either CAPTURE or
11696REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p>
11697            </td>
11698
11699            <td class="entry_units">
11700            </td>
11701
11702            <td class="entry_range">
11703              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
11704            </td>
11705
11706            <td class="entry_tags">
11707              <ul class="entry_tags">
11708                  <li><a href="#tag_HAL2">HAL2</a></li>
11709              </ul>
11710            </td>
11711
11712          </tr>
11713
11714
11715          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11716           <!-- end of entry -->
11717        
11718        
11719
11720      <!-- end of kind -->
11721      </tbody>
11722      <tr><td colspan="6" class="kind">static</td></tr>
11723
11724      <thead class="entries_header">
11725        <tr>
11726          <th class="th_name">Property Name</th>
11727          <th class="th_type">Type</th>
11728          <th class="th_description">Description</th>
11729          <th class="th_units">Units</th>
11730          <th class="th_range">Range</th>
11731          <th class="th_tags">Tags</th>
11732        </tr>
11733      </thead>
11734
11735      <tbody>
11736
11737        
11738
11739        
11740
11741        
11742
11743        
11744
11745                
11746          <tr class="entry" id="static_android.request.maxNumOutputStreams">
11747            <td class="entry_name
11748             " rowspan="3">
11749              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
11750            </td>
11751            <td class="entry_type">
11752                <span class="entry_type_name">int32</span>
11753                <span class="entry_type_container">x</span>
11754
11755                <span class="entry_type_array">
11756                  3
11757                </span>
11758              <span class="entry_type_visibility"> [hidden]</span>
11759
11760
11761
11762
11763
11764            </td> <!-- entry_type -->
11765
11766            <td class="entry_description">
11767              <p>The maximum numbers of different types of output streams
11768that can be configured and used simultaneously by a camera device.<wbr/></p>
11769            </td>
11770
11771            <td class="entry_units">
11772            </td>
11773
11774            <td class="entry_range">
11775              <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
11776<p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
11777<p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
11778for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
11779&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>
11780            </td>
11781
11782            <td class="entry_tags">
11783              <ul class="entry_tags">
11784                  <li><a href="#tag_BC">BC</a></li>
11785              </ul>
11786            </td>
11787
11788          </tr>
11789          <tr class="entries_header">
11790            <th class="th_details" colspan="5">Details</th>
11791          </tr>
11792          <tr class="entry_cont">
11793            <td class="entry_details" colspan="5">
11794              <p>This is a 3 element tuple that contains the max number of output simultaneous
11795streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
11796formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
11797stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
11798number 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>
11799<p>This lists the upper bound of the number of output streams supported by
11800the camera device.<wbr/> Using more streams simultaneously may require more hardware and
11801CPU resources that will consume more power.<wbr/> The image format for an output stream can
11802be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
11803The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
11804into the 3 stream types as below:</p>
11805<ul>
11806<li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
11807Typically JPEG format (ImageFormat#JPEG).<wbr/></li>
11808<li>Raw formats: ImageFormat#RAW_<wbr/>SENSOR and ImageFormat#RAW_<wbr/>OPAQUE.<wbr/></li>
11809<li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>
11810Typically Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888,<wbr/> ImageFormat#NV21,<wbr/> ImageFormat#YV12.<wbr/></li>
11811</ul>
11812            </td>
11813          </tr>
11814
11815
11816          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11817           <!-- end of entry -->
11818        
11819                
11820          <tr class="entry" id="static_android.request.maxNumOutputRaw">
11821            <td class="entry_name
11822             " rowspan="3">
11823              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
11824            </td>
11825            <td class="entry_type">
11826                <span class="entry_type_name">int32</span>
11827
11828              <span class="entry_type_visibility"> [public]</span>
11829
11830              <span class="entry_type_synthetic">[synthetic] </span>
11831
11832
11833
11834
11835            </td> <!-- entry_type -->
11836
11837            <td class="entry_description">
11838              <p>The maximum numbers of different types of output streams
11839that can be configured and used simultaneously by a camera device
11840for any <code>RAW</code> formats.<wbr/></p>
11841            </td>
11842
11843            <td class="entry_units">
11844            </td>
11845
11846            <td class="entry_range">
11847              <p>&gt;= 0</p>
11848            </td>
11849
11850            <td class="entry_tags">
11851            </td>
11852
11853          </tr>
11854          <tr class="entries_header">
11855            <th class="th_details" colspan="5">Details</th>
11856          </tr>
11857          <tr class="entry_cont">
11858            <td class="entry_details" colspan="5">
11859              <p>This value contains the max number of output simultaneous
11860streams from the raw sensor.<wbr/></p>
11861<p>This lists the upper bound of the number of output streams supported by
11862the camera device.<wbr/> Using more streams simultaneously may require more hardware and
11863CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
11864be 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>
11865<p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
11866<ul>
11867<li>ImageFormat#RAW_<wbr/>SENSOR</li>
11868<li>Opaque <code>RAW</code></li>
11869</ul>
11870            </td>
11871          </tr>
11872
11873
11874          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11875           <!-- end of entry -->
11876        
11877                
11878          <tr class="entry" id="static_android.request.maxNumOutputProc">
11879            <td class="entry_name
11880             " rowspan="3">
11881              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
11882            </td>
11883            <td class="entry_type">
11884                <span class="entry_type_name">int32</span>
11885
11886              <span class="entry_type_visibility"> [public]</span>
11887
11888              <span class="entry_type_synthetic">[synthetic] </span>
11889
11890
11891
11892
11893            </td> <!-- entry_type -->
11894
11895            <td class="entry_description">
11896              <p>The maximum numbers of different types of output streams
11897that can be configured and used simultaneously by a camera device
11898for any processed (but not-stalling) formats.<wbr/></p>
11899            </td>
11900
11901            <td class="entry_units">
11902            </td>
11903
11904            <td class="entry_range">
11905              <p>&gt;= 3
11906for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
11907&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>
11908            </td>
11909
11910            <td class="entry_tags">
11911            </td>
11912
11913          </tr>
11914          <tr class="entries_header">
11915            <th class="th_details" colspan="5">Details</th>
11916          </tr>
11917          <tr class="entry_cont">
11918            <td class="entry_details" colspan="5">
11919              <p>This value contains the max number of output simultaneous
11920streams for any processed (but not-stalling) formats.<wbr/></p>
11921<p>This lists the upper bound of the number of output streams supported by
11922the camera device.<wbr/> Using more streams simultaneously may require more hardware and
11923CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
11924be 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>
11925<p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
11926Typically:</p>
11927<ul>
11928<li>Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</li>
11929<li>ImageFormat#NV21</li>
11930<li>ImageFormat#YV12</li>
11931<li>Implementation-defined formats,<wbr/> i.<wbr/>e.<wbr/> StreamConfiguration#isOutputSupportedFor(Class)</li>
11932</ul>
11933<p>For full guarantees,<wbr/> query StreamConfigurationMap#getOutputStallDuration with
11934a processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
11935            </td>
11936          </tr>
11937
11938
11939          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11940           <!-- end of entry -->
11941        
11942                
11943          <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
11944            <td class="entry_name
11945             " rowspan="3">
11946              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
11947            </td>
11948            <td class="entry_type">
11949                <span class="entry_type_name">int32</span>
11950
11951              <span class="entry_type_visibility"> [public]</span>
11952
11953              <span class="entry_type_synthetic">[synthetic] </span>
11954
11955
11956
11957
11958            </td> <!-- entry_type -->
11959
11960            <td class="entry_description">
11961              <p>The maximum numbers of different types of output streams
11962that can be configured and used simultaneously by a camera device
11963for any processed (and stalling) formats.<wbr/></p>
11964            </td>
11965
11966            <td class="entry_units">
11967            </td>
11968
11969            <td class="entry_range">
11970              <p>&gt;= 1</p>
11971            </td>
11972
11973            <td class="entry_tags">
11974            </td>
11975
11976          </tr>
11977          <tr class="entries_header">
11978            <th class="th_details" colspan="5">Details</th>
11979          </tr>
11980          <tr class="entry_cont">
11981            <td class="entry_details" colspan="5">
11982              <p>This value contains the max number of output simultaneous
11983streams for any processed (but not-stalling) formats.<wbr/></p>
11984<p>This lists the upper bound of the number of output streams supported by
11985the camera device.<wbr/> Using more streams simultaneously may require more hardware and
11986CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
11987be 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>
11988<p>A processed and stalling format is defined as any non-RAW format with a stallDurations &gt; 0.<wbr/>
11989Typically only the <code>JPEG</code> format (ImageFormat#JPEG)</p>
11990<p>For full guarantees,<wbr/> query StreamConfigurationMap#getOutputStallDuration with
11991a processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
11992            </td>
11993          </tr>
11994
11995
11996          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11997           <!-- end of entry -->
11998        
11999                
12000          <tr class="entry" id="static_android.request.maxNumReprocessStreams">
12001            <td class="entry_name
12002                entry_name_deprecated
12003             " rowspan="3">
12004              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
12005            </td>
12006            <td class="entry_type">
12007                <span class="entry_type_name">int32</span>
12008                <span class="entry_type_container">x</span>
12009
12010                <span class="entry_type_array">
12011                  1
12012                </span>
12013              <span class="entry_type_visibility"> [system]</span>
12014
12015
12016              <span class="entry_type_deprecated">[deprecated] </span>
12017
12018
12019
12020            </td> <!-- entry_type -->
12021
12022            <td class="entry_description">
12023              <p>How many reprocessing streams of any type
12024can be allocated at the same time.<wbr/></p>
12025            </td>
12026
12027            <td class="entry_units">
12028            </td>
12029
12030            <td class="entry_range">
12031              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
12032              <p>&gt;= 0</p>
12033            </td>
12034
12035            <td class="entry_tags">
12036              <ul class="entry_tags">
12037                  <li><a href="#tag_HAL2">HAL2</a></li>
12038              </ul>
12039            </td>
12040
12041          </tr>
12042          <tr class="entries_header">
12043            <th class="th_details" colspan="5">Details</th>
12044          </tr>
12045          <tr class="entry_cont">
12046            <td class="entry_details" colspan="5">
12047              <p>Only used by HAL2.<wbr/>x.<wbr/></p>
12048<p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
12049            </td>
12050          </tr>
12051
12052
12053          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12054           <!-- end of entry -->
12055        
12056                
12057          <tr class="entry" id="static_android.request.maxNumInputStreams">
12058            <td class="entry_name
12059             " rowspan="3">
12060              android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
12061            </td>
12062            <td class="entry_type">
12063                <span class="entry_type_name">int32</span>
12064
12065              <span class="entry_type_visibility"> [hidden]</span>
12066
12067
12068
12069
12070
12071            </td> <!-- entry_type -->
12072
12073            <td class="entry_description">
12074              <p>The maximum numbers of any type of input streams
12075that can be configured and used simultaneously by a camera device.<wbr/></p>
12076            </td>
12077
12078            <td class="entry_units">
12079            </td>
12080
12081            <td class="entry_range">
12082              <p>&gt;= 0 for LIMITED mode device (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>).<wbr/>
12083&gt;= 1 for FULL mode device (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>).<wbr/></p>
12084            </td>
12085
12086            <td class="entry_tags">
12087            </td>
12088
12089          </tr>
12090          <tr class="entries_header">
12091            <th class="th_details" colspan="5">Details</th>
12092          </tr>
12093          <tr class="entry_cont">
12094            <td class="entry_details" colspan="5">
12095              <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
12096<p>The image format for a input stream can be any supported
12097format provided by
12098<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/> When using an
12099input stream,<wbr/> there must be at least one output stream
12100configured to to receive the reprocessed images.<wbr/></p>
12101<p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
12102stream image format will be RAW_<wbr/>OPAQUE,<wbr/> the associated output stream image format
12103should be JPEG.<wbr/></p>
12104            </td>
12105          </tr>
12106
12107
12108          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12109           <!-- end of entry -->
12110        
12111                
12112          <tr class="entry" id="static_android.request.pipelineMaxDepth">
12113            <td class="entry_name
12114             " rowspan="5">
12115              android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
12116            </td>
12117            <td class="entry_type">
12118                <span class="entry_type_name">byte</span>
12119
12120              <span class="entry_type_visibility"> [public]</span>
12121
12122
12123
12124
12125
12126            </td> <!-- entry_type -->
12127
12128            <td class="entry_description">
12129              <p>Specifies the number of maximum pipeline stages a frame
12130has to go through from when it's exposed to when it's available
12131to the framework.<wbr/></p>
12132            </td>
12133
12134            <td class="entry_units">
12135            </td>
12136
12137            <td class="entry_range">
12138            </td>
12139
12140            <td class="entry_tags">
12141            </td>
12142
12143          </tr>
12144          <tr class="entries_header">
12145            <th class="th_details" colspan="5">Details</th>
12146          </tr>
12147          <tr class="entry_cont">
12148            <td class="entry_details" colspan="5">
12149              <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
12150one stage to readout) from the sensor.<wbr/> The ISP then usually adds
12151its own stages to do custom HW processing.<wbr/> Further stages may be
12152added by SW processing.<wbr/></p>
12153<p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
12154processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
12155depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
12156the max pipeline depth.<wbr/></p>
12157<p>A pipeline depth of X stages is equivalent to a pipeline latency of
12158X frame intervals.<wbr/></p>
12159<p>This value will be 8 or less.<wbr/></p>
12160            </td>
12161          </tr>
12162
12163          <tr class="entries_header">
12164            <th class="th_details" colspan="5">HAL Implementation Details</th>
12165          </tr>
12166          <tr class="entry_cont">
12167            <td class="entry_details" colspan="5">
12168              <p>This value should be 4 or less.<wbr/></p>
12169            </td>
12170          </tr>
12171
12172          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12173           <!-- end of entry -->
12174        
12175                
12176          <tr class="entry" id="static_android.request.partialResultCount">
12177            <td class="entry_name
12178             " rowspan="3">
12179              android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
12180            </td>
12181            <td class="entry_type">
12182                <span class="entry_type_name">int32</span>
12183
12184              <span class="entry_type_visibility"> [public]</span>
12185
12186
12187
12188
12189
12190            </td> <!-- entry_type -->
12191
12192            <td class="entry_description">
12193              <p>Optional.<wbr/> Defaults to 1.<wbr/> Defines how many sub-components
12194a result will be composed of.<wbr/></p>
12195            </td>
12196
12197            <td class="entry_units">
12198            </td>
12199
12200            <td class="entry_range">
12201              <p>&gt;= 1</p>
12202            </td>
12203
12204            <td class="entry_tags">
12205            </td>
12206
12207          </tr>
12208          <tr class="entries_header">
12209            <th class="th_details" colspan="5">Details</th>
12210          </tr>
12211          <tr class="entry_cont">
12212            <td class="entry_details" colspan="5">
12213              <p>In order to combat the pipeline latency,<wbr/> partial results
12214may be delivered to the application layer from the camera device as
12215soon as they are available.<wbr/></p>
12216<p>A value of 1 means that partial results are not supported.<wbr/></p>
12217<p>A typical use case for this might be: after requesting an AF lock the
12218new AF state might be available 50% of the way through the pipeline.<wbr/>
12219The camera device could then immediately dispatch this state via a
12220partial result to the framework/<wbr/>application layer,<wbr/> and the rest of
12221the metadata via later partial results.<wbr/></p>
12222            </td>
12223          </tr>
12224
12225
12226          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12227           <!-- end of entry -->
12228        
12229                
12230          <tr class="entry" id="static_android.request.availableCapabilities">
12231            <td class="entry_name
12232             " rowspan="5">
12233              android.<wbr/>request.<wbr/>available<wbr/>Capabilities
12234            </td>
12235            <td class="entry_type">
12236                <span class="entry_type_name entry_type_name_enum">byte</span>
12237                <span class="entry_type_container">x</span>
12238
12239                <span class="entry_type_array">
12240                  n
12241                </span>
12242              <span class="entry_type_visibility"> [public]</span>
12243
12244
12245
12246
12247                <ul class="entry_type_enum">
12248                  <li>
12249                    <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span>
12250                    <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
12251device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
12252will support.<wbr/></p>
12253<p>The full set of features supported by this capability makes
12254the camera2 api backwards compatible with the camera1
12255(android.<wbr/>hardware.<wbr/>Camera) API.<wbr/></p>
12256<p>TODO: @hide this.<wbr/> Doesn't really mean anything except
12257act as a catch-all for all the 'base' functionality.<wbr/></p></span>
12258                  </li>
12259                  <li>
12260                    <span class="entry_type_enum_name">OPTIONAL</span>
12261                    <span class="entry_type_enum_notes"><p>This is a catch-all capability to include all other
12262tags or functionality not encapsulated by one of the other
12263capabilities.<wbr/></p>
12264<p>A typical example is all tags marked 'optional'.<wbr/></p>
12265<p>TODO: @hide.<wbr/> We may not need this if we @hide all the optional
12266tags not belonging to a capability.<wbr/></p></span>
12267                  </li>
12268                  <li>
12269                    <span class="entry_type_enum_name">MANUAL_SENSOR</span>
12270                    <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
12271as auto exposure,<wbr/> and auto focus can be bypassed).<wbr/>
12272The camera device supports basic manual control of the sensor image
12273acquisition related stages.<wbr/> This means the following controls are
12274guaranteed to be supported:</p>
12275<ul>
12276<li>Manual frame duration control<ul>
12277<li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
12278<li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
12279<li><a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a></li>
12280</ul>
12281</li>
12282<li>Manual exposure control<ul>
12283<li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
12284<li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
12285</ul>
12286</li>
12287<li>Manual sensitivity control<ul>
12288<li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
12289<li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
12290</ul>
12291</li>
12292<li>Manual lens control<ul>
12293<li>android.<wbr/>lens.<wbr/>*</li>
12294</ul>
12295</li>
12296<li>Manual flash control<ul>
12297<li>android.<wbr/>flash.<wbr/>*</li>
12298</ul>
12299</li>
12300<li>Manual black level locking<ul>
12301<li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
12302</ul>
12303</li>
12304</ul>
12305<p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
12306device will accurately report the values applied by 3A in the
12307result.<wbr/></p>
12308<p>A given camera device may also support additional manual sensor controls,<wbr/>
12309but this capability only covers the above list of controls.<wbr/></p></span>
12310                  </li>
12311                  <li>
12312                    <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span>
12313                    <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
12314The camera device supports basic manual control of the image post-processing
12315stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
12316<ul>
12317<li>Manual tonemap control<ul>
12318<li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
12319<li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
12320<li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
12321</ul>
12322</li>
12323<li>Manual white balance control<ul>
12324<li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
12325<li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
12326</ul>
12327</li>
12328<li>Lens shading map information<ul>
12329<li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
12330<li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
12331</ul>
12332</li>
12333</ul>
12334<p>If auto white balance is enabled,<wbr/> then the camera device
12335will accurately report the values applied by AWB in the result.<wbr/></p>
12336<p>The camera device will also support everything in MANUAL_<wbr/>SENSOR
12337except manual lens control and manual flash control.<wbr/></p>
12338<p>A given camera device may also support additional post-processing
12339controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
12340                  </li>
12341                  <li>
12342                    <span class="entry_type_enum_name">ZSL</span>
12343                    <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag use case.<wbr/></p>
12344<ul>
12345<li>At least one input stream can be used.<wbr/></li>
12346<li>RAW_<wbr/>OPAQUE is supported as an output/<wbr/>input format</li>
12347<li>Using RAW_<wbr/>OPAQUE does not cause a frame rate drop
12348  relative to the sensor's maximum capture rate (at that
12349  resolution).<wbr/></li>
12350<li>RAW_<wbr/>OPAQUE will be reprocessable into both YUV_<wbr/>420_<wbr/>888
12351  and JPEG formats.<wbr/></li>
12352<li>The maximum available resolution for RAW_<wbr/>OPAQUE streams
12353  (both input/<wbr/>output) will match the maximum available
12354  resolution of JPEG streams.<wbr/></li>
12355</ul>
12356<p>@hide this,<wbr/> TODO: remove it when input related APIs are ready.<wbr/></p></span>
12357                  </li>
12358                  <li>
12359                    <span class="entry_type_enum_name">DNG</span>
12360                    <span class="entry_type_enum_optional">optional</span>
12361                    <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers that can be
12362saved offline into a DNG format.<wbr/> It can reprocess DNG
12363files (produced from the same camera device) back into YUV.<wbr/></p>
12364<ul>
12365<li>At least one input stream can be used.<wbr/></li>
12366<li>RAW16 is supported as output/<wbr/>input format.<wbr/></li>
12367<li>RAW16 is reprocessable into both YUV_<wbr/>420_<wbr/>888 and JPEG
12368  formats.<wbr/></li>
12369<li>The maximum available resolution for RAW16 streams (both
12370  input/<wbr/>output) will match the value in
12371  <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></li>
12372<li>All DNG-related optional metadata entries are provided
12373  by the camera device.<wbr/></li>
12374</ul></span>
12375                  </li>
12376                </ul>
12377
12378            </td> <!-- entry_type -->
12379
12380            <td class="entry_description">
12381              <p>List of capabilities that the camera device
12382advertises as fully supporting.<wbr/></p>
12383            </td>
12384
12385            <td class="entry_units">
12386            </td>
12387
12388            <td class="entry_range">
12389            </td>
12390
12391            <td class="entry_tags">
12392            </td>
12393
12394          </tr>
12395          <tr class="entries_header">
12396            <th class="th_details" colspan="5">Details</th>
12397          </tr>
12398          <tr class="entry_cont">
12399            <td class="entry_details" colspan="5">
12400              <p>A capability is a contract that the camera device makes in order
12401to be able to satisfy one or more use cases.<wbr/></p>
12402<p>Listing a capability guarantees that the whole set of features
12403required to support a common use will all be available.<wbr/></p>
12404<p>Using a subset of the functionality provided by an unsupported
12405capability may be possible on a specific camera device implementation;
12406to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
12407<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
12408<a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
12409<p>XX: Maybe these should go into <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>
12410as a table instead?</p>
12411<p>The following capabilities are guaranteed to be available on
12412<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
12413<ul>
12414<li>MANUAL_<wbr/>SENSOR</li>
12415<li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
12416</ul>
12417<p>Other capabilities may be available on either FULL or LIMITED
12418devices,<wbr/> but the app.<wbr/> should query this field to be sure.<wbr/></p>
12419            </td>
12420          </tr>
12421
12422          <tr class="entries_header">
12423            <th class="th_details" colspan="5">HAL Implementation Details</th>
12424          </tr>
12425          <tr class="entry_cont">
12426            <td class="entry_details" colspan="5">
12427              <p>Additional constraint details per-capability will be available
12428in the Compatibility Test Suite.<wbr/></p>
12429<p>BACKWARD_<wbr/>COMPATIBLE capability requirements are not explicitly listed.<wbr/>
12430Instead refer to "BC" tags and the camera CTS tests in the
12431android.<wbr/>hardware.<wbr/>cts package.<wbr/></p>
12432<p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
12433<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
12434request and the result in order to be considered to be
12435capability-compliant.<wbr/></p>
12436<p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
12437then exposure time must be configurable via the request <em>and</em>
12438the actual exposure applied must be available via
12439the result.<wbr/></p>
12440            </td>
12441          </tr>
12442
12443          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12444           <!-- end of entry -->
12445        
12446                
12447          <tr class="entry" id="static_android.request.availableRequestKeys">
12448            <td class="entry_name
12449             " rowspan="5">
12450              android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
12451            </td>
12452            <td class="entry_type">
12453                <span class="entry_type_name">int32</span>
12454                <span class="entry_type_container">x</span>
12455
12456                <span class="entry_type_array">
12457                  n
12458                </span>
12459              <span class="entry_type_visibility"> [hidden]</span>
12460
12461
12462
12463
12464
12465            </td> <!-- entry_type -->
12466
12467            <td class="entry_description">
12468              <p>A list of all keys that the camera device has available
12469to use with CaptureRequest.<wbr/></p>
12470            </td>
12471
12472            <td class="entry_units">
12473            </td>
12474
12475            <td class="entry_range">
12476            </td>
12477
12478            <td class="entry_tags">
12479            </td>
12480
12481          </tr>
12482          <tr class="entries_header">
12483            <th class="th_details" colspan="5">Details</th>
12484          </tr>
12485          <tr class="entry_cont">
12486            <td class="entry_details" colspan="5">
12487              <p>Attempting to set a key into a CaptureRequest that is not
12488listed here will result in an invalid request and will be rejected
12489by the camera device.<wbr/></p>
12490<p>This field can be used to query the feature set of a camera device
12491at a more granular level than capabilities.<wbr/> This is especially
12492important for optional keys that are not listed under any capability
12493in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
12494<p>TODO: This should be used by #getAvailableCaptureRequestKeys.<wbr/></p>
12495            </td>
12496          </tr>
12497
12498          <tr class="entries_header">
12499            <th class="th_details" colspan="5">HAL Implementation Details</th>
12500          </tr>
12501          <tr class="entry_cont">
12502            <td class="entry_details" colspan="5">
12503              <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
12504extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
12505<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
12506vendor extensions API and not against this field.<wbr/></p>
12507<p>The HAL must not consume any request tags that are not listed either
12508here or in the vendor tag list.<wbr/></p>
12509<p>The public camera2 API will always make the vendor tags visible
12510via CameraCharacteristics#getAvailableCaptureRequestKeys.<wbr/></p>
12511            </td>
12512          </tr>
12513
12514          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12515           <!-- end of entry -->
12516        
12517                
12518          <tr class="entry" id="static_android.request.availableResultKeys">
12519            <td class="entry_name
12520             " rowspan="5">
12521              android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
12522            </td>
12523            <td class="entry_type">
12524                <span class="entry_type_name">int32</span>
12525                <span class="entry_type_container">x</span>
12526
12527                <span class="entry_type_array">
12528                  n
12529                </span>
12530              <span class="entry_type_visibility"> [hidden]</span>
12531
12532
12533
12534
12535
12536            </td> <!-- entry_type -->
12537
12538            <td class="entry_description">
12539              <p>A list of all keys that the camera device has available
12540to use with CaptureResult.<wbr/></p>
12541            </td>
12542
12543            <td class="entry_units">
12544            </td>
12545
12546            <td class="entry_range">
12547            </td>
12548
12549            <td class="entry_tags">
12550            </td>
12551
12552          </tr>
12553          <tr class="entries_header">
12554            <th class="th_details" colspan="5">Details</th>
12555          </tr>
12556          <tr class="entry_cont">
12557            <td class="entry_details" colspan="5">
12558              <p>Attempting to get a key from a CaptureResult that is not
12559listed here will always return a <code>null</code> value.<wbr/> Getting a key from
12560a CaptureResult that is listed here must never return a <code>null</code>
12561value.<wbr/></p>
12562<p>The following keys may return <code>null</code> unless they are enabled:</p>
12563<ul>
12564<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>
12565</ul>
12566<p>(Those sometimes-null keys should nevertheless be listed here
12567if they are available.<wbr/>)</p>
12568<p>This field can be used to query the feature set of a camera device
12569at a more granular level than capabilities.<wbr/> This is especially
12570important for optional keys that are not listed under any capability
12571in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
12572<p>TODO: This should be used by #getAvailableCaptureResultKeys.<wbr/></p>
12573            </td>
12574          </tr>
12575
12576          <tr class="entries_header">
12577            <th class="th_details" colspan="5">HAL Implementation Details</th>
12578          </tr>
12579          <tr class="entry_cont">
12580            <td class="entry_details" colspan="5">
12581              <p>Tags listed here must always have an entry in the result metadata,<wbr/>
12582even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
12583matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
12584<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
12585extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
12586<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
12587vendor extensions API and not against this field.<wbr/></p>
12588<p>The HAL must not produce any result tags that are not listed either
12589here or in the vendor tag list.<wbr/></p>
12590<p>The public camera2 API will always make the vendor tags visible
12591via CameraCharacteristics#getAvailableCaptureResultKeys.<wbr/></p>
12592            </td>
12593          </tr>
12594
12595          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12596           <!-- end of entry -->
12597        
12598                
12599          <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
12600            <td class="entry_name
12601             " rowspan="5">
12602              android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
12603            </td>
12604            <td class="entry_type">
12605                <span class="entry_type_name">int32</span>
12606                <span class="entry_type_container">x</span>
12607
12608                <span class="entry_type_array">
12609                  n
12610                </span>
12611              <span class="entry_type_visibility"> [hidden]</span>
12612
12613
12614
12615
12616
12617            </td> <!-- entry_type -->
12618
12619            <td class="entry_description">
12620              <p>A list of all keys that the camera device has available
12621to use with CameraCharacteristics.<wbr/></p>
12622            </td>
12623
12624            <td class="entry_units">
12625            </td>
12626
12627            <td class="entry_range">
12628            </td>
12629
12630            <td class="entry_tags">
12631            </td>
12632
12633          </tr>
12634          <tr class="entries_header">
12635            <th class="th_details" colspan="5">Details</th>
12636          </tr>
12637          <tr class="entry_cont">
12638            <td class="entry_details" colspan="5">
12639              <p>This entry follows the same rules as
12640<a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
12641CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
12642details.<wbr/></p>
12643<p>TODO: This should be used by CameraCharacteristics#getKeys.<wbr/></p>
12644            </td>
12645          </tr>
12646
12647          <tr class="entries_header">
12648            <th class="th_details" colspan="5">HAL Implementation Details</th>
12649          </tr>
12650          <tr class="entry_cont">
12651            <td class="entry_details" colspan="5">
12652              <p>Tags listed here must always have an entry in the static info metadata,<wbr/>
12653even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
12654matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
12655<p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
12656extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
12657<p>Setting/<wbr/>getting vendor tags will be checked against the metadata
12658vendor extensions API and not against this field.<wbr/></p>
12659<p>The HAL must not have any tags in its static info that are not listed
12660either here or in the vendor tag list.<wbr/></p>
12661<p>The public camera2 API will always make the vendor tags visible
12662via CameraCharacteristics#getKeys.<wbr/></p>
12663            </td>
12664          </tr>
12665
12666          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12667           <!-- end of entry -->
12668        
12669        
12670
12671      <!-- end of kind -->
12672      </tbody>
12673      <tr><td colspan="6" class="kind">dynamic</td></tr>
12674
12675      <thead class="entries_header">
12676        <tr>
12677          <th class="th_name">Property Name</th>
12678          <th class="th_type">Type</th>
12679          <th class="th_description">Description</th>
12680          <th class="th_units">Units</th>
12681          <th class="th_range">Range</th>
12682          <th class="th_tags">Tags</th>
12683        </tr>
12684      </thead>
12685
12686      <tbody>
12687
12688        
12689
12690        
12691
12692        
12693
12694        
12695
12696                
12697          <tr class="entry" id="dynamic_android.request.frameCount">
12698            <td class="entry_name
12699             " rowspan="3">
12700              android.<wbr/>request.<wbr/>frame<wbr/>Count
12701            </td>
12702            <td class="entry_type">
12703                <span class="entry_type_name">int32</span>
12704
12705              <span class="entry_type_visibility"> [public]</span>
12706
12707
12708
12709
12710
12711            </td> <!-- entry_type -->
12712
12713            <td class="entry_description">
12714              <p>A frame counter set by the framework.<wbr/> This value monotonically
12715increases with every new result (that is,<wbr/> each new result has a unique
12716frameCount value).<wbr/></p>
12717            </td>
12718
12719            <td class="entry_units">
12720              count of frames
12721            </td>
12722
12723            <td class="entry_range">
12724              <p>&gt; 0</p>
12725            </td>
12726
12727            <td class="entry_tags">
12728            </td>
12729
12730          </tr>
12731          <tr class="entries_header">
12732            <th class="th_details" colspan="5">Details</th>
12733          </tr>
12734          <tr class="entry_cont">
12735            <td class="entry_details" colspan="5">
12736              <p>Reset on release()</p>
12737            </td>
12738          </tr>
12739
12740
12741          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12742           <!-- end of entry -->
12743        
12744                
12745          <tr class="entry" id="dynamic_android.request.id">
12746            <td class="entry_name
12747             " rowspan="1">
12748              android.<wbr/>request.<wbr/>id
12749            </td>
12750            <td class="entry_type">
12751                <span class="entry_type_name">int32</span>
12752
12753              <span class="entry_type_visibility"> [hidden]</span>
12754
12755
12756
12757
12758
12759            </td> <!-- entry_type -->
12760
12761            <td class="entry_description">
12762              <p>An application-specified ID for the current
12763request.<wbr/> Must be maintained unchanged in output
12764frame</p>
12765            </td>
12766
12767            <td class="entry_units">
12768              arbitrary integer assigned by application
12769            </td>
12770
12771            <td class="entry_range">
12772              <p>Any int</p>
12773            </td>
12774
12775            <td class="entry_tags">
12776              <ul class="entry_tags">
12777                  <li><a href="#tag_V1">V1</a></li>
12778              </ul>
12779            </td>
12780
12781          </tr>
12782
12783
12784          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12785           <!-- end of entry -->
12786        
12787                
12788          <tr class="entry" id="dynamic_android.request.metadataMode">
12789            <td class="entry_name
12790             " rowspan="1">
12791              android.<wbr/>request.<wbr/>metadata<wbr/>Mode
12792            </td>
12793            <td class="entry_type">
12794                <span class="entry_type_name entry_type_name_enum">byte</span>
12795
12796              <span class="entry_type_visibility"> [system]</span>
12797
12798
12799
12800
12801                <ul class="entry_type_enum">
12802                  <li>
12803                    <span class="entry_type_enum_name">NONE</span>
12804                    <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
12805for application-bound buffer data.<wbr/> If no
12806application-bound streams exist,<wbr/> no frame should be
12807placed in the output frame queue.<wbr/> If such streams
12808exist,<wbr/> a frame should be placed on the output queue
12809with null metadata but with the necessary output buffer
12810information.<wbr/> Timestamp information should still be
12811included with any output stream buffers</p></span>
12812                  </li>
12813                  <li>
12814                    <span class="entry_type_enum_name">FULL</span>
12815                    <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
12816only be produced if they are separately
12817enabled</p></span>
12818                  </li>
12819                </ul>
12820
12821            </td> <!-- entry_type -->
12822
12823            <td class="entry_description">
12824              <p>How much metadata to produce on
12825output</p>
12826            </td>
12827
12828            <td class="entry_units">
12829            </td>
12830
12831            <td class="entry_range">
12832            </td>
12833
12834            <td class="entry_tags">
12835              <ul class="entry_tags">
12836                  <li><a href="#tag_FUTURE">FUTURE</a></li>
12837              </ul>
12838            </td>
12839
12840          </tr>
12841
12842
12843          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12844           <!-- end of entry -->
12845        
12846                
12847          <tr class="entry" id="dynamic_android.request.outputStreams">
12848            <td class="entry_name
12849                entry_name_deprecated
12850             " rowspan="3">
12851              android.<wbr/>request.<wbr/>output<wbr/>Streams
12852            </td>
12853            <td class="entry_type">
12854                <span class="entry_type_name">int32</span>
12855                <span class="entry_type_container">x</span>
12856
12857                <span class="entry_type_array">
12858                  n
12859                </span>
12860              <span class="entry_type_visibility"> [system]</span>
12861
12862
12863              <span class="entry_type_deprecated">[deprecated] </span>
12864
12865
12866
12867            </td> <!-- entry_type -->
12868
12869            <td class="entry_description">
12870              <p>Lists which camera output streams image data
12871from this capture must be sent to</p>
12872            </td>
12873
12874            <td class="entry_units">
12875              List of camera stream IDs
12876            </td>
12877
12878            <td class="entry_range">
12879              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
12880              <p>List must only include streams that have been
12881created</p>
12882            </td>
12883
12884            <td class="entry_tags">
12885              <ul class="entry_tags">
12886                  <li><a href="#tag_HAL2">HAL2</a></li>
12887              </ul>
12888            </td>
12889
12890          </tr>
12891          <tr class="entries_header">
12892            <th class="th_details" colspan="5">Details</th>
12893          </tr>
12894          <tr class="entry_cont">
12895            <td class="entry_details" colspan="5">
12896              <p>If no output streams are listed,<wbr/> then the image
12897data should simply be discarded.<wbr/> The image data must
12898still be captured for metadata and statistics production,<wbr/>
12899and the lens and flash must operate as requested.<wbr/></p>
12900            </td>
12901          </tr>
12902
12903
12904          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12905           <!-- end of entry -->
12906        
12907                
12908          <tr class="entry" id="dynamic_android.request.pipelineDepth">
12909            <td class="entry_name
12910             " rowspan="5">
12911              android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
12912            </td>
12913            <td class="entry_type">
12914                <span class="entry_type_name">byte</span>
12915
12916              <span class="entry_type_visibility"> [public]</span>
12917
12918
12919
12920
12921
12922            </td> <!-- entry_type -->
12923
12924            <td class="entry_description">
12925              <p>Specifies the number of pipeline stages the frame went
12926through from when it was exposed to when the final completed result
12927was available to the framework.<wbr/></p>
12928            </td>
12929
12930            <td class="entry_units">
12931            </td>
12932
12933            <td class="entry_range">
12934              <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
12935            </td>
12936
12937            <td class="entry_tags">
12938            </td>
12939
12940          </tr>
12941          <tr class="entries_header">
12942            <th class="th_details" colspan="5">Details</th>
12943          </tr>
12944          <tr class="entry_cont">
12945            <td class="entry_details" colspan="5">
12946              <p>Depending on what settings are used in the request,<wbr/> and
12947what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
12948and some pipeline stages skipped.<wbr/></p>
12949<p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
12950            </td>
12951          </tr>
12952
12953          <tr class="entries_header">
12954            <th class="th_details" colspan="5">HAL Implementation Details</th>
12955          </tr>
12956          <tr class="entry_cont">
12957            <td class="entry_details" colspan="5">
12958              <p>This value must always represent the accurate count of how many
12959pipeline stages were actually used.<wbr/></p>
12960            </td>
12961          </tr>
12962
12963          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12964           <!-- end of entry -->
12965        
12966        
12967
12968      <!-- end of kind -->
12969      </tbody>
12970
12971  <!-- end of section -->
12972  <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr>
12973
12974
12975      <tr><td colspan="6" class="kind">controls</td></tr>
12976
12977      <thead class="entries_header">
12978        <tr>
12979          <th class="th_name">Property Name</th>
12980          <th class="th_type">Type</th>
12981          <th class="th_description">Description</th>
12982          <th class="th_units">Units</th>
12983          <th class="th_range">Range</th>
12984          <th class="th_tags">Tags</th>
12985        </tr>
12986      </thead>
12987
12988      <tbody>
12989
12990        
12991
12992        
12993
12994        
12995
12996        
12997
12998                
12999          <tr class="entry" id="controls_android.scaler.cropRegion">
13000            <td class="entry_name
13001             " rowspan="3">
13002              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
13003            </td>
13004            <td class="entry_type">
13005                <span class="entry_type_name">int32</span>
13006                <span class="entry_type_container">x</span>
13007
13008                <span class="entry_type_array">
13009                  4
13010                </span>
13011              <span class="entry_type_visibility"> [public as rectangle]</span>
13012
13013
13014
13015
13016
13017            </td> <!-- entry_type -->
13018
13019            <td class="entry_description">
13020              <p>(x,<wbr/> y,<wbr/> width,<wbr/> height).<wbr/></p>
13021<p>A rectangle with the top-level corner of (x,<wbr/>y) and size
13022(width,<wbr/> height).<wbr/> The region of the sensor that is used for
13023output.<wbr/> Each stream must use this rectangle to produce its
13024output,<wbr/> cropping to a smaller region if necessary to
13025maintain the stream's aspect ratio.<wbr/></p>
13026<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
13027            </td>
13028
13029            <td class="entry_units">
13030              (x,<wbr/>y) of top-left corner,<wbr/> width and height of region
13031          in pixels; (0,<wbr/>0) is top-left corner of
13032          android.<wbr/>sensor.<wbr/>active<wbr/>Array<wbr/>Size
13033            </td>
13034
13035            <td class="entry_range">
13036            </td>
13037
13038            <td class="entry_tags">
13039              <ul class="entry_tags">
13040                  <li><a href="#tag_BC">BC</a></li>
13041              </ul>
13042            </td>
13043
13044          </tr>
13045          <tr class="entries_header">
13046            <th class="th_details" colspan="5">Details</th>
13047          </tr>
13048          <tr class="entry_cont">
13049            <td class="entry_details" colspan="5">
13050              <p>The crop region is applied after the RAW to other color space (e.<wbr/>g.<wbr/> YUV)
13051conversion.<wbr/> Since raw streams (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/>
13052it is not croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
13053<p>For non-raw streams,<wbr/> any additional per-stream cropping will
13054be done to maximize the final pixel area of the stream.<wbr/></p>
13055<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
13056ratio,<wbr/> then 4:3 streams should use the exact crop
13057region.<wbr/> 16:9 streams should further crop vertically
13058(letterbox).<wbr/></p>
13059<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
13060outputs should crop horizontally (pillarbox),<wbr/> and 16:9
13061streams should match exactly.<wbr/> These additional crops must
13062be centered within the crop region.<wbr/></p>
13063<p>The output streams must maintain square pixels at all
13064times,<wbr/> no matter what the relative aspect ratios of the
13065crop region and the stream are.<wbr/>  Negative values for
13066corner are allowed for raw output if full pixel array is
13067larger than active pixel array.<wbr/> Width and height may be
13068rounded to nearest larger supportable width,<wbr/> especially
13069for raw output,<wbr/> where only a few fixed scales may be
13070possible.<wbr/> The width and height of the crop region cannot
13071be set to be smaller than floor( activeArraySize.<wbr/>width /<wbr/>
13072<a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> ) and floor(
13073activeArraySize.<wbr/>height /<wbr/>
13074<a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a>),<wbr/> respectively.<wbr/></p>
13075            </td>
13076          </tr>
13077
13078
13079          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13080           <!-- end of entry -->
13081        
13082        
13083
13084      <!-- end of kind -->
13085      </tbody>
13086      <tr><td colspan="6" class="kind">static</td></tr>
13087
13088      <thead class="entries_header">
13089        <tr>
13090          <th class="th_name">Property Name</th>
13091          <th class="th_type">Type</th>
13092          <th class="th_description">Description</th>
13093          <th class="th_units">Units</th>
13094          <th class="th_range">Range</th>
13095          <th class="th_tags">Tags</th>
13096        </tr>
13097      </thead>
13098
13099      <tbody>
13100
13101        
13102
13103        
13104
13105        
13106
13107        
13108
13109                
13110          <tr class="entry" id="static_android.scaler.availableFormats">
13111            <td class="entry_name
13112                entry_name_deprecated
13113             " rowspan="5">
13114              android.<wbr/>scaler.<wbr/>available<wbr/>Formats
13115            </td>
13116            <td class="entry_type">
13117                <span class="entry_type_name entry_type_name_enum">int32</span>
13118                <span class="entry_type_container">x</span>
13119
13120                <span class="entry_type_array">
13121                  n
13122                </span>
13123              <span class="entry_type_visibility"> [hidden as imageFormat]</span>
13124
13125
13126              <span class="entry_type_deprecated">[deprecated] </span>
13127
13128
13129                <ul class="entry_type_enum">
13130                  <li>
13131                    <span class="entry_type_enum_name">RAW16</span>
13132                    <span class="entry_type_enum_optional">optional</span>
13133                    <span class="entry_type_enum_value">0x20</span>
13134                    <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
13135buffers with 16-bit pixels.<wbr/> Buffers of this format are typically
13136expected to have a Bayer Color Filter Array (CFA) layout,<wbr/> which
13137is given in <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors
13138with CFAs that are not representable by a format in
13139<a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not use this
13140format.<wbr/></p>
13141<p>Buffers of this format will also follow the constraints given for
13142RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
13143<p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
13144the full set of performance guarantees.<wbr/></p></span>
13145                  </li>
13146                  <li>
13147                    <span class="entry_type_enum_name">RAW_OPAQUE</span>
13148                    <span class="entry_type_enum_optional">optional</span>
13149                    <span class="entry_type_enum_value">0x24</span>
13150                    <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE is a format for raw image buffers coming from an
13151image sensor.<wbr/> The actual structure of buffers of this format is
13152platform-specific,<wbr/> but must follow several constraints:</p>
13153<ol>
13154<li>No image post-processing operations may have been applied to
13155buffers of this type.<wbr/> These buffers contain raw image data coming
13156directly from the image sensor.<wbr/></li>
13157<li>If a buffer of this format is passed to the camera device for
13158reprocessing,<wbr/> the resulting images will be identical to the images
13159produced if the buffer had come directly from the sensor and was
13160processed with the same settings.<wbr/></li>
13161</ol>
13162<p>The intended use for this format is to allow access to the native
13163raw format buffers coming directly from the camera sensor without
13164any additional conversions or decrease in framerate.<wbr/></p>
13165<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
13166performance guarantees.<wbr/></p></span>
13167                  </li>
13168                  <li>
13169                    <span class="entry_type_enum_name">YV12</span>
13170                    <span class="entry_type_enum_optional">optional</span>
13171                    <span class="entry_type_enum_value">0x32315659</span>
13172                    <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
13173                  </li>
13174                  <li>
13175                    <span class="entry_type_enum_name">YCrCb_420_SP</span>
13176                    <span class="entry_type_enum_optional">optional</span>
13177                    <span class="entry_type_enum_value">0x11</span>
13178                    <span class="entry_type_enum_notes"><p>NV21</p></span>
13179                  </li>
13180                  <li>
13181                    <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span>
13182                    <span class="entry_type_enum_value">0x22</span>
13183                    <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
13184                  </li>
13185                  <li>
13186                    <span class="entry_type_enum_name">YCbCr_420_888</span>
13187                    <span class="entry_type_enum_value">0x23</span>
13188                    <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
13189                  </li>
13190                  <li>
13191                    <span class="entry_type_enum_name">BLOB</span>
13192                    <span class="entry_type_enum_value">0x21</span>
13193                    <span class="entry_type_enum_notes"><p>JPEG format</p></span>
13194                  </li>
13195                </ul>
13196
13197            </td> <!-- entry_type -->
13198
13199            <td class="entry_description">
13200              <p>The list of image formats that are supported by this
13201camera device for output streams.<wbr/></p>
13202            </td>
13203
13204            <td class="entry_units">
13205            </td>
13206
13207            <td class="entry_range">
13208              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13209            </td>
13210
13211            <td class="entry_tags">
13212              <ul class="entry_tags">
13213                  <li><a href="#tag_BC">BC</a></li>
13214              </ul>
13215            </td>
13216
13217          </tr>
13218          <tr class="entries_header">
13219            <th class="th_details" colspan="5">Details</th>
13220          </tr>
13221          <tr class="entry_cont">
13222            <td class="entry_details" colspan="5">
13223              <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
13224<p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
13225            </td>
13226          </tr>
13227
13228          <tr class="entries_header">
13229            <th class="th_details" colspan="5">HAL Implementation Details</th>
13230          </tr>
13231          <tr class="entry_cont">
13232            <td class="entry_details" colspan="5">
13233              <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
13234system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
13235<p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
13236gralloc module will select a format based on the usage flags provided
13237by the camera HAL device and the other endpoint of the stream.<wbr/> It is
13238usually used by preview and recording streams,<wbr/> where the application doesn't
13239need access the image data.<wbr/></p>
13240<p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
13241needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
13242<p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
13243<p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
13244recommended that any information used by the camera device when
13245processing images is fully expressed by the result metadata
13246for that image buffer.<wbr/></p>
13247            </td>
13248          </tr>
13249
13250          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13251           <!-- end of entry -->
13252        
13253                
13254          <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
13255            <td class="entry_name
13256                entry_name_deprecated
13257             " rowspan="3">
13258              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
13259            </td>
13260            <td class="entry_type">
13261                <span class="entry_type_name">int64</span>
13262                <span class="entry_type_container">x</span>
13263
13264                <span class="entry_type_array">
13265                  n
13266                </span>
13267              <span class="entry_type_visibility"> [hidden]</span>
13268
13269
13270              <span class="entry_type_deprecated">[deprecated] </span>
13271
13272
13273
13274            </td> <!-- entry_type -->
13275
13276            <td class="entry_description">
13277              <p>The minimum frame duration that is supported
13278for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
13279            </td>
13280
13281            <td class="entry_units">
13282              ns
13283            </td>
13284
13285            <td class="entry_range">
13286              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13287              <p>TODO: Remove property.<wbr/></p>
13288            </td>
13289
13290            <td class="entry_tags">
13291              <ul class="entry_tags">
13292                  <li><a href="#tag_BC">BC</a></li>
13293              </ul>
13294            </td>
13295
13296          </tr>
13297          <tr class="entries_header">
13298            <th class="th_details" colspan="5">Details</th>
13299          </tr>
13300          <tr class="entry_cont">
13301            <td class="entry_details" colspan="5">
13302              <p>This corresponds to the minimum steady-state frame duration when only
13303that JPEG stream is active and captured in a burst,<wbr/> with all
13304processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
13305<p>When multiple streams are configured,<wbr/> the minimum
13306frame duration will be &gt;= max(individual stream min
13307durations)</p>
13308            </td>
13309          </tr>
13310
13311
13312          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13313           <!-- end of entry -->
13314        
13315                
13316          <tr class="entry" id="static_android.scaler.availableJpegSizes">
13317            <td class="entry_name
13318                entry_name_deprecated
13319             " rowspan="5">
13320              android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
13321            </td>
13322            <td class="entry_type">
13323                <span class="entry_type_name">int32</span>
13324                <span class="entry_type_container">x</span>
13325
13326                <span class="entry_type_array">
13327                  n x 2
13328                </span>
13329              <span class="entry_type_visibility"> [hidden as size]</span>
13330
13331
13332              <span class="entry_type_deprecated">[deprecated] </span>
13333
13334
13335
13336            </td> <!-- entry_type -->
13337
13338            <td class="entry_description">
13339              <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
13340            </td>
13341
13342            <td class="entry_units">
13343            </td>
13344
13345            <td class="entry_range">
13346              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13347              <p>TODO: Remove property.<wbr/></p>
13348            </td>
13349
13350            <td class="entry_tags">
13351              <ul class="entry_tags">
13352                  <li><a href="#tag_BC">BC</a></li>
13353              </ul>
13354            </td>
13355
13356          </tr>
13357          <tr class="entries_header">
13358            <th class="th_details" colspan="5">Details</th>
13359          </tr>
13360          <tr class="entry_cont">
13361            <td class="entry_details" colspan="5">
13362              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
13363sensor 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>
13364            </td>
13365          </tr>
13366
13367          <tr class="entries_header">
13368            <th class="th_details" colspan="5">HAL Implementation Details</th>
13369          </tr>
13370          <tr class="entry_cont">
13371            <td class="entry_details" colspan="5">
13372              <p>The HAL must include sensor maximum resolution
13373(defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
13374and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
13375            </td>
13376          </tr>
13377
13378          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13379           <!-- end of entry -->
13380        
13381                
13382          <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
13383            <td class="entry_name
13384             " rowspan="1">
13385              android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
13386            </td>
13387            <td class="entry_type">
13388                <span class="entry_type_name">float</span>
13389
13390              <span class="entry_type_visibility"> [public]</span>
13391
13392
13393
13394
13395
13396            </td> <!-- entry_type -->
13397
13398            <td class="entry_description">
13399              <p>The maximum ratio between active area width
13400and crop region width,<wbr/> or between active area height and
13401crop region height,<wbr/> if the crop region height is larger
13402than width</p>
13403            </td>
13404
13405            <td class="entry_units">
13406            </td>
13407
13408            <td class="entry_range">
13409              <p>&gt;=1</p>
13410            </td>
13411
13412            <td class="entry_tags">
13413              <ul class="entry_tags">
13414                  <li><a href="#tag_BC">BC</a></li>
13415              </ul>
13416            </td>
13417
13418          </tr>
13419
13420
13421          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13422           <!-- end of entry -->
13423        
13424                
13425          <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
13426            <td class="entry_name
13427                entry_name_deprecated
13428             " rowspan="3">
13429              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
13430            </td>
13431            <td class="entry_type">
13432                <span class="entry_type_name">int64</span>
13433                <span class="entry_type_container">x</span>
13434
13435                <span class="entry_type_array">
13436                  n
13437                </span>
13438              <span class="entry_type_visibility"> [hidden]</span>
13439
13440
13441              <span class="entry_type_deprecated">[deprecated] </span>
13442
13443
13444
13445            </td> <!-- entry_type -->
13446
13447            <td class="entry_description">
13448              <p>For each available processed output size (defined in
13449<a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
13450minimum supportable frame duration for that size.<wbr/></p>
13451            </td>
13452
13453            <td class="entry_units">
13454              ns
13455            </td>
13456
13457            <td class="entry_range">
13458              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13459              <p>TODO: Remove property.<wbr/></p>
13460            </td>
13461
13462            <td class="entry_tags">
13463              <ul class="entry_tags">
13464                  <li><a href="#tag_BC">BC</a></li>
13465              </ul>
13466            </td>
13467
13468          </tr>
13469          <tr class="entries_header">
13470            <th class="th_details" colspan="5">Details</th>
13471          </tr>
13472          <tr class="entry_cont">
13473            <td class="entry_details" colspan="5">
13474              <p>This should correspond to the frame duration when only that processed
13475stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
13476set to FAST.<wbr/></p>
13477<p>When multiple streams are configured,<wbr/> the minimum frame duration will
13478be &gt;= max(individual stream min durations).<wbr/></p>
13479            </td>
13480          </tr>
13481
13482
13483          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13484           <!-- end of entry -->
13485        
13486                
13487          <tr class="entry" id="static_android.scaler.availableProcessedSizes">
13488            <td class="entry_name
13489                entry_name_deprecated
13490             " rowspan="5">
13491              android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
13492            </td>
13493            <td class="entry_type">
13494                <span class="entry_type_name">int32</span>
13495                <span class="entry_type_container">x</span>
13496
13497                <span class="entry_type_array">
13498                  n x 2
13499                </span>
13500              <span class="entry_type_visibility"> [hidden as size]</span>
13501
13502
13503              <span class="entry_type_deprecated">[deprecated] </span>
13504
13505
13506
13507            </td> <!-- entry_type -->
13508
13509            <td class="entry_description">
13510              <p>The resolutions available for use with
13511processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
13512platform opaque YUV/<wbr/>RGB streams to the GPU or video
13513encoders.<wbr/></p>
13514            </td>
13515
13516            <td class="entry_units">
13517            </td>
13518
13519            <td class="entry_range">
13520              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13521              <p>TODO: Remove property.<wbr/></p>
13522            </td>
13523
13524            <td class="entry_tags">
13525              <ul class="entry_tags">
13526                  <li><a href="#tag_BC">BC</a></li>
13527              </ul>
13528            </td>
13529
13530          </tr>
13531          <tr class="entries_header">
13532            <th class="th_details" colspan="5">Details</th>
13533          </tr>
13534          <tr class="entry_cont">
13535            <td class="entry_details" colspan="5">
13536              <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
13537<p>For a given use case,<wbr/> the actual maximum supported resolution
13538may be lower than what is listed here,<wbr/> depending on the destination
13539Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
13540the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
13541smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
13542can provide.<wbr/></p>
13543<p>Please reference the documentation for the image data destination to
13544check if it limits the maximum size for image data.<wbr/></p>
13545            </td>
13546          </tr>
13547
13548          <tr class="entries_header">
13549            <th class="th_details" colspan="5">HAL Implementation Details</th>
13550          </tr>
13551          <tr class="entry_cont">
13552            <td class="entry_details" colspan="5">
13553              <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/>
13554the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>
13555and each below resolution if it is smaller than or equal to the sensor
13556maximum resolution (if they are not listed in JPEG sizes already):</p>
13557<ul>
13558<li>240p (320 x 240)</li>
13559<li>480p (640 x 480)</li>
13560<li>720p (1280 x 720)</li>
13561<li>1080p (1920 x 1080)</li>
13562</ul>
13563<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/>
13564the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
13565            </td>
13566          </tr>
13567
13568          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13569           <!-- end of entry -->
13570        
13571                
13572          <tr class="entry" id="static_android.scaler.availableRawMinDurations">
13573            <td class="entry_name
13574                entry_name_deprecated
13575             " rowspan="3">
13576              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
13577            </td>
13578            <td class="entry_type">
13579                <span class="entry_type_name">int64</span>
13580                <span class="entry_type_container">x</span>
13581
13582                <span class="entry_type_array">
13583                  n
13584                </span>
13585              <span class="entry_type_visibility"> [system]</span>
13586
13587
13588              <span class="entry_type_deprecated">[deprecated] </span>
13589
13590
13591
13592            </td> <!-- entry_type -->
13593
13594            <td class="entry_description">
13595              <p>For each available raw output size (defined in
13596<a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
13597supportable frame duration for that size.<wbr/></p>
13598            </td>
13599
13600            <td class="entry_units">
13601              ns
13602            </td>
13603
13604            <td class="entry_range">
13605              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13606              <p>TODO: Remove property.<wbr/></p>
13607            </td>
13608
13609            <td class="entry_tags">
13610              <ul class="entry_tags">
13611                  <li><a href="#tag_BC">BC</a></li>
13612              </ul>
13613            </td>
13614
13615          </tr>
13616          <tr class="entries_header">
13617            <th class="th_details" colspan="5">Details</th>
13618          </tr>
13619          <tr class="entry_cont">
13620            <td class="entry_details" colspan="5">
13621              <p>Should correspond to the frame duration when only the raw stream is
13622active.<wbr/></p>
13623<p>When multiple streams are configured,<wbr/> the minimum
13624frame duration will be &gt;= max(individual stream min
13625durations)</p>
13626            </td>
13627          </tr>
13628
13629
13630          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13631           <!-- end of entry -->
13632        
13633                
13634          <tr class="entry" id="static_android.scaler.availableRawSizes">
13635            <td class="entry_name
13636                entry_name_deprecated
13637             " rowspan="1">
13638              android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
13639            </td>
13640            <td class="entry_type">
13641                <span class="entry_type_name">int32</span>
13642                <span class="entry_type_container">x</span>
13643
13644                <span class="entry_type_array">
13645                  n x 2
13646                </span>
13647              <span class="entry_type_visibility"> [system as size]</span>
13648
13649
13650              <span class="entry_type_deprecated">[deprecated] </span>
13651
13652
13653
13654            </td> <!-- entry_type -->
13655
13656            <td class="entry_description">
13657              <p>The resolutions available for use with raw
13658sensor output streams,<wbr/> listed as width,<wbr/>
13659height</p>
13660            </td>
13661
13662            <td class="entry_units">
13663            </td>
13664
13665            <td class="entry_range">
13666              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13667              <p>TODO: Remove property.<wbr/>
13668Must include: - sensor maximum resolution.<wbr/></p>
13669            </td>
13670
13671            <td class="entry_tags">
13672            </td>
13673
13674          </tr>
13675
13676
13677          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13678           <!-- end of entry -->
13679        
13680                
13681          <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
13682            <td class="entry_name
13683             " rowspan="5">
13684              android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
13685            </td>
13686            <td class="entry_type">
13687                <span class="entry_type_name">int32</span>
13688                <span class="entry_type_container">x</span>
13689
13690                <span class="entry_type_array">
13691                  n
13692                </span>
13693              <span class="entry_type_visibility"> [hidden as imageFormat]</span>
13694
13695
13696
13697
13698
13699            </td> <!-- entry_type -->
13700
13701            <td class="entry_description">
13702              <p>The mapping of image formats that are supported by this
13703camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
13704            </td>
13705
13706            <td class="entry_units">
13707            </td>
13708
13709            <td class="entry_range">
13710            </td>
13711
13712            <td class="entry_tags">
13713            </td>
13714
13715          </tr>
13716          <tr class="entries_header">
13717            <th class="th_details" colspan="5">Details</th>
13718          </tr>
13719          <tr class="entry_cont">
13720            <td class="entry_details" colspan="5">
13721              <p>All camera devices with at least 1
13722<a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
13723available input format.<wbr/></p>
13724<p>The camera device will support the following map of formats,<wbr/>
13725if its dependent capability is supported:</p>
13726<table>
13727<thead>
13728<tr>
13729<th align="left">Input Format</th>
13730<th align="left">Output Format</th>
13731<th align="left">Capability</th>
13732</tr>
13733</thead>
13734<tbody>
13735<tr>
13736<td align="left">RAW_<wbr/>OPAQUE</td>
13737<td align="left">JPEG</td>
13738<td align="left">ZSL</td>
13739</tr>
13740<tr>
13741<td align="left">RAW_<wbr/>OPAQUE</td>
13742<td align="left">YUV_<wbr/>420_<wbr/>888</td>
13743<td align="left">ZSL</td>
13744</tr>
13745<tr>
13746<td align="left">RAW_<wbr/>OPAQUE</td>
13747<td align="left">RAW16</td>
13748<td align="left">DNG</td>
13749</tr>
13750<tr>
13751<td align="left">RAW16</td>
13752<td align="left">YUV_<wbr/>420_<wbr/>888</td>
13753<td align="left">DNG</td>
13754</tr>
13755<tr>
13756<td align="left">RAW16</td>
13757<td align="left">JPEG</td>
13758<td align="left">DNG</td>
13759</tr>
13760</tbody>
13761</table>
13762<p>For ZSL-capable camera devices,<wbr/> using the RAW_<wbr/>OPAQUE format
13763as either input or output will never hurt maximum frame rate (i.<wbr/>e.<wbr/>
13764Stream<wbr/>Configuration<wbr/>Map#get<wbr/>Output<wbr/>Stall<wbr/>Duration(int,<wbr/>Size)
13765for a <code>format =</code> RAW_<wbr/>OPAQUE is always 0).<wbr/></p>
13766<p>Attempting to configure an input stream with output streams not
13767listed as available in this map is not valid.<wbr/></p>
13768<p>TODO: typedef to ReprocessFormatMap</p>
13769            </td>
13770          </tr>
13771
13772          <tr class="entries_header">
13773            <th class="th_details" colspan="5">HAL Implementation Details</th>
13774          </tr>
13775          <tr class="entry_cont">
13776            <td class="entry_details" colspan="5">
13777              <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
13778of the image format enumerations.<wbr/></p>
13779<p>This value is encoded as a variable-size array-of-arrays.<wbr/>
13780The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
13781<code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
13782inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
13783<p>A code sample to read/<wbr/>write this encoding (with a device that
13784supports reprocessing RAW_<wbr/>OPAQUE to RAW16,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
13785and reprocessing RAW16 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
13786<pre><code>//<wbr/> reading
13787int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
13788for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
13789    int32_<wbr/>t format = contents[i++];
13790    int32_<wbr/>t length = contents[i++];
13791    int32_<wbr/>t output_<wbr/>formats[length];
13792    memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
13793           length * sizeof(int32_<wbr/>t));
13794    i += length;
13795}
13796
13797//<wbr/> writing (static example,<wbr/> DNG+ZSL)
13798int32_<wbr/>t[] contents = {
13799  RAW_<wbr/>OPAQUE,<wbr/> 3,<wbr/> RAW16,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
13800  RAW16,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
13801};
13802update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
13803      sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
13804</code></pre>
13805<p>If the HAL claims to support any of the capabilities listed in the
13806above details,<wbr/> then it must also support all the input-output
13807combinations listed for that capability.<wbr/> It can optionally support
13808additional formats if it so chooses.<wbr/></p>
13809<p>Refer to <a href="#static_android.scaler.availableFormats">android.<wbr/>scaler.<wbr/>available<wbr/>Formats</a> for the enum values
13810which correspond to HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
13811system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
13812            </td>
13813          </tr>
13814
13815          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13816           <!-- end of entry -->
13817        
13818                
13819          <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
13820            <td class="entry_name
13821             " rowspan="5">
13822              android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
13823            </td>
13824            <td class="entry_type">
13825                <span class="entry_type_name entry_type_name_enum">int32</span>
13826                <span class="entry_type_container">x</span>
13827
13828                <span class="entry_type_array">
13829                  n x 4
13830                </span>
13831              <span class="entry_type_visibility"> [hidden as streamConfiguration]</span>
13832
13833
13834
13835
13836                <ul class="entry_type_enum">
13837                  <li>
13838                    <span class="entry_type_enum_name">OUTPUT</span>
13839                  </li>
13840                  <li>
13841                    <span class="entry_type_enum_name">INPUT</span>
13842                  </li>
13843                </ul>
13844
13845            </td> <!-- entry_type -->
13846
13847            <td class="entry_description">
13848              <p>The available stream configurations that this
13849camera device supports
13850(i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
13851            </td>
13852
13853            <td class="entry_units">
13854            </td>
13855
13856            <td class="entry_range">
13857            </td>
13858
13859            <td class="entry_tags">
13860            </td>
13861
13862          </tr>
13863          <tr class="entries_header">
13864            <th class="th_details" colspan="5">Details</th>
13865          </tr>
13866          <tr class="entry_cont">
13867            <td class="entry_details" colspan="5">
13868              <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
13869tuples.<wbr/></p>
13870<p>For a given use case,<wbr/> the actual maximum supported resolution
13871may be lower than what is listed here,<wbr/> depending on the destination
13872Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
13873the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
13874smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
13875can provide.<wbr/></p>
13876<p>Please reference the documentation for the image data destination to
13877check if it limits the maximum size for image data.<wbr/></p>
13878<p>Not all output formats may be supported in a configuration with
13879an input stream of a particular format.<wbr/> For more details,<wbr/> see
13880<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
13881<p>The following table describes the minimum required output stream
13882configurations based on the hardware level
13883(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
13884<table>
13885<thead>
13886<tr>
13887<th align="center">Format</th>
13888<th align="center">Size</th>
13889<th align="center">Hardware Level</th>
13890<th align="center">Notes</th>
13891</tr>
13892</thead>
13893<tbody>
13894<tr>
13895<td align="center">JPEG</td>
13896<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
13897<td align="center">Any</td>
13898<td align="center"></td>
13899</tr>
13900<tr>
13901<td align="center">JPEG</td>
13902<td align="center">1920x1080 (1080p)</td>
13903<td align="center">Any</td>
13904<td align="center">if 1080p &lt;= activeArraySize</td>
13905</tr>
13906<tr>
13907<td align="center">JPEG</td>
13908<td align="center">1280x720 (720)</td>
13909<td align="center">Any</td>
13910<td align="center">if 720p &lt;= activeArraySize</td>
13911</tr>
13912<tr>
13913<td align="center">JPEG</td>
13914<td align="center">640x480 (480p)</td>
13915<td align="center">Any</td>
13916<td align="center">if 480p &lt;= activeArraySize</td>
13917</tr>
13918<tr>
13919<td align="center">JPEG</td>
13920<td align="center">320x240 (240p)</td>
13921<td align="center">Any</td>
13922<td align="center">if 240p &lt;= activeArraySize</td>
13923</tr>
13924<tr>
13925<td align="center">YUV_<wbr/>420_<wbr/>888</td>
13926<td align="center">all output sizes available for JPEG</td>
13927<td align="center">FULL</td>
13928<td align="center"></td>
13929</tr>
13930<tr>
13931<td align="center">YUV_<wbr/>420_<wbr/>888</td>
13932<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
13933<td align="center">LIMITED</td>
13934<td align="center"></td>
13935</tr>
13936<tr>
13937<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
13938<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
13939<td align="center">Any</td>
13940<td align="center"></td>
13941</tr>
13942</tbody>
13943</table>
13944<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
13945mandatory stream configurations on a per-capability basis.<wbr/></p>
13946            </td>
13947          </tr>
13948
13949          <tr class="entries_header">
13950            <th class="th_details" colspan="5">HAL Implementation Details</th>
13951          </tr>
13952          <tr class="entry_cont">
13953            <td class="entry_details" colspan="5">
13954              <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
13955of sensor maximum resolution for JPEG formats (regardless of hardware
13956level).<wbr/></p>
13957<p>(The following is a rewording of the above required table):</p>
13958<p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
13959<ul>
13960<li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
13961(e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
13962(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/>
13963it does not have to be included in the supported JPEG sizes.<wbr/></li>
13964<li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
13965the dimensions being a multiple of 16.<wbr/></li>
13966</ul>
13967<p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
13968However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
13969resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
13970additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
13971if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
13972ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
139733264x2448.<wbr/></p>
13974<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/>
13975the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
13976here as output streams.<wbr/></p>
13977<p>It must also include each below resolution if it is smaller than or
13978equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
13979formats),<wbr/> as output streams:</p>
13980<ul>
13981<li>240p (320 x 240)</li>
13982<li>480p (640 x 480)</li>
13983<li>720p (1280 x 720)</li>
13984<li>1080p (1920 x 1080)</li>
13985</ul>
13986<p>For LIMITED capability devices
13987(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
13988the HAL only has to list up to the maximum video size
13989supported by the device.<wbr/></p>
13990<p>Regardless of hardware level,<wbr/> every output resolution available for
13991YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
13992<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
13993<ul>
13994<li>availableFormats</li>
13995<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
13996</ul>
13997            </td>
13998          </tr>
13999
14000          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14001           <!-- end of entry -->
14002        
14003                
14004          <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
14005            <td class="entry_name
14006             " rowspan="3">
14007              android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
14008            </td>
14009            <td class="entry_type">
14010                <span class="entry_type_name">int64</span>
14011                <span class="entry_type_container">x</span>
14012
14013                <span class="entry_type_array">
14014                  4 x n
14015                </span>
14016              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
14017
14018
14019
14020
14021
14022            </td> <!-- entry_type -->
14023
14024            <td class="entry_description">
14025              <p>This lists the minimum frame duration for each
14026format/<wbr/>size combination.<wbr/></p>
14027            </td>
14028
14029            <td class="entry_units">
14030              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
14031            </td>
14032
14033            <td class="entry_range">
14034            </td>
14035
14036            <td class="entry_tags">
14037              <ul class="entry_tags">
14038                  <li><a href="#tag_V1">V1</a></li>
14039              </ul>
14040            </td>
14041
14042          </tr>
14043          <tr class="entries_header">
14044            <th class="th_details" colspan="5">Details</th>
14045          </tr>
14046          <tr class="entry_cont">
14047            <td class="entry_details" colspan="5">
14048              <p>This should correspond to the frame duration when only that
14049stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
14050set to either OFF or FAST.<wbr/></p>
14051<p>When multiple streams are used in a request,<wbr/> the minimum frame
14052duration will be max(individual stream min durations).<wbr/></p>
14053<p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
14054is the same regardless of whether the stream is input or output.<wbr/></p>
14055<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
14056<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
14057calculating the max frame rate.<wbr/></p>
14058<p>(Keep in sync with
14059StreamConfigurationMap#getOutputMinFrameDuration)</p>
14060            </td>
14061          </tr>
14062
14063
14064          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14065           <!-- end of entry -->
14066        
14067                
14068          <tr class="entry" id="static_android.scaler.availableStallDurations">
14069            <td class="entry_name
14070             " rowspan="5">
14071              android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
14072            </td>
14073            <td class="entry_type">
14074                <span class="entry_type_name">int64</span>
14075                <span class="entry_type_container">x</span>
14076
14077                <span class="entry_type_array">
14078                  4 x n
14079                </span>
14080              <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
14081
14082
14083
14084
14085
14086            </td> <!-- entry_type -->
14087
14088            <td class="entry_description">
14089              <p>This lists the maximum stall duration for each
14090format/<wbr/>size combination.<wbr/></p>
14091            </td>
14092
14093            <td class="entry_units">
14094              (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
14095            </td>
14096
14097            <td class="entry_range">
14098            </td>
14099
14100            <td class="entry_tags">
14101              <ul class="entry_tags">
14102                  <li><a href="#tag_V1">V1</a></li>
14103              </ul>
14104            </td>
14105
14106          </tr>
14107          <tr class="entries_header">
14108            <th class="th_details" colspan="5">Details</th>
14109          </tr>
14110          <tr class="entry_cont">
14111            <td class="entry_details" colspan="5">
14112              <p>A stall duration is how much extra time would get added
14113to the normal minimum frame duration for a repeating request
14114that has streams with non-zero stall.<wbr/></p>
14115<p>For example,<wbr/> consider JPEG captures which have the following
14116characteristics:</p>
14117<ul>
14118<li>JPEG streams act like processed YUV streams in requests for which
14119they are not included; in requests in which they are directly
14120referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
14121JPEG stream requires the underlying YUV data to always be ready for
14122use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
14123frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
14124<li>The JPEG processor can run concurrently to the rest of the camera
14125pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
14126</ul>
14127<p>In other words,<wbr/> using a repeating YUV request would result
14128in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
14129JPEG request is submitted periodically,<wbr/> the frame rate will stay
14130at 30 FPS (as long as we wait for the previous JPEG to return each
14131time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
14132the frame rate will drop from 30 FPS.<wbr/></p>
14133<p>In general,<wbr/> submitting a new request with a non-0 stall time
14134stream will <em>not</em> cause a frame rate drop unless there are still
14135outstanding buffers for that stream from previous requests.<wbr/></p>
14136<p>Submitting a repeating request with streams (call this <code>S</code>)
14137is the same as setting the minimum frame duration from
14138the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
14139the maximum stall duration for <code>S</code>.<wbr/></p>
14140<p>If interleaving requests with and without a stall duration,<wbr/>
14141a request will stall by the maximum of the remaining times
14142for each can-stall stream with outstanding buffers.<wbr/></p>
14143<p>This means that a stalling request will not have an exposure start
14144until the stall has completed.<wbr/></p>
14145<p>This should correspond to the stall duration when only that stream is
14146active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
14147or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
14148effectively results in an indeterminate stall duration for all
14149streams in a request (the regular stall calculation rules are
14150ignored).<wbr/></p>
14151<p>The following formats may always have a stall duration:</p>
14152<ul>
14153<li>JPEG</li>
14154<li>RAW16</li>
14155</ul>
14156<p>The following formats will never have a stall duration:</p>
14157<ul>
14158<li>YUV_<wbr/>420_<wbr/>888</li>
14159<li>IMPLEMENTATION_<wbr/>DEFINED</li>
14160</ul>
14161<p>All other formats may or may not have an allowed stall duration on
14162a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
14163for more details.<wbr/></p>
14164<p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
14165calculating the max frame rate (absent stalls).<wbr/></p>
14166<p>(Keep up to date with
14167StreamConfigurationMap#getOutputStallDuration(int,<wbr/> Size) )</p>
14168            </td>
14169          </tr>
14170
14171          <tr class="entries_header">
14172            <th class="th_details" colspan="5">HAL Implementation Details</th>
14173          </tr>
14174          <tr class="entry_cont">
14175            <td class="entry_details" colspan="5">
14176              <p>If possible,<wbr/> it is recommended that all non-JPEG formats
14177(such as RAW16) should not have a stall duration.<wbr/></p>
14178            </td>
14179          </tr>
14180
14181          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14182           <!-- end of entry -->
14183        
14184                
14185          <tr class="entry" id="static_android.scaler.streamConfigurationMap">
14186            <td class="entry_name
14187             " rowspan="5">
14188              android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
14189            </td>
14190            <td class="entry_type">
14191                <span class="entry_type_name">int32</span>
14192
14193              <span class="entry_type_visibility"> [public as streamConfigurationMap]</span>
14194
14195              <span class="entry_type_synthetic">[synthetic] </span>
14196
14197
14198
14199
14200            </td> <!-- entry_type -->
14201
14202            <td class="entry_description">
14203              <p>The available stream configurations that this
14204camera device supports; also includes the minimum frame durations
14205and the stall durations for each format/<wbr/>size combination.<wbr/></p>
14206            </td>
14207
14208            <td class="entry_units">
14209            </td>
14210
14211            <td class="entry_range">
14212            </td>
14213
14214            <td class="entry_tags">
14215            </td>
14216
14217          </tr>
14218          <tr class="entries_header">
14219            <th class="th_details" colspan="5">Details</th>
14220          </tr>
14221          <tr class="entry_cont">
14222            <td class="entry_details" colspan="5">
14223              <p>All camera devices will support sensor maximum resolution (defined by
14224<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>
14225<p>For a given use case,<wbr/> the actual maximum supported resolution
14226may be lower than what is listed here,<wbr/> depending on the destination
14227Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
14228the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
14229smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
14230can provide.<wbr/></p>
14231<p>Please reference the documentation for the image data destination to
14232check if it limits the maximum size for image data.<wbr/></p>
14233<p>The following table describes the minimum required output stream
14234configurations based on the hardware level
14235(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
14236<table>
14237<thead>
14238<tr>
14239<th align="center">Format</th>
14240<th align="center">Size</th>
14241<th align="center">Hardware Level</th>
14242<th align="center">Notes</th>
14243</tr>
14244</thead>
14245<tbody>
14246<tr>
14247<td align="center">JPEG</td>
14248<td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
14249<td align="center">Any</td>
14250<td align="center"></td>
14251</tr>
14252<tr>
14253<td align="center">JPEG</td>
14254<td align="center">1920x1080 (1080p)</td>
14255<td align="center">Any</td>
14256<td align="center">if 1080p &lt;= activeArraySize</td>
14257</tr>
14258<tr>
14259<td align="center">JPEG</td>
14260<td align="center">1280x720 (720)</td>
14261<td align="center">Any</td>
14262<td align="center">if 720p &lt;= activeArraySize</td>
14263</tr>
14264<tr>
14265<td align="center">JPEG</td>
14266<td align="center">640x480 (480p)</td>
14267<td align="center">Any</td>
14268<td align="center">if 480p &lt;= activeArraySize</td>
14269</tr>
14270<tr>
14271<td align="center">JPEG</td>
14272<td align="center">320x240 (240p)</td>
14273<td align="center">Any</td>
14274<td align="center">if 240p &lt;= activeArraySize</td>
14275</tr>
14276<tr>
14277<td align="center">YUV_<wbr/>420_<wbr/>888</td>
14278<td align="center">all output sizes available for JPEG</td>
14279<td align="center">FULL</td>
14280<td align="center"></td>
14281</tr>
14282<tr>
14283<td align="center">YUV_<wbr/>420_<wbr/>888</td>
14284<td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
14285<td align="center">LIMITED</td>
14286<td align="center"></td>
14287</tr>
14288<tr>
14289<td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
14290<td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
14291<td align="center">Any</td>
14292<td align="center"></td>
14293</tr>
14294</tbody>
14295</table>
14296<p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
14297mandatory stream configurations on a per-capability basis.<wbr/></p>
14298            </td>
14299          </tr>
14300
14301          <tr class="entries_header">
14302            <th class="th_details" colspan="5">HAL Implementation Details</th>
14303          </tr>
14304          <tr class="entry_cont">
14305            <td class="entry_details" colspan="5">
14306              <p>Do not set this property directly
14307(it is synthetic and will not be available at the HAL layer);
14308set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
14309<p>Not all output formats may be supported in a configuration with
14310an input stream of a particular format.<wbr/> For more details,<wbr/> see
14311<a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
14312<p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
14313of sensor maximum resolution for JPEG formats (regardless of hardware
14314level).<wbr/></p>
14315<p>(The following is a rewording of the above required table):</p>
14316<p>The HAL must include sensor maximum resolution (defined by
14317<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
14318<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/>
14319the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
14320here as output streams.<wbr/></p>
14321<p>It must also include each below resolution if it is smaller than or
14322equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
14323formats),<wbr/> as output streams:</p>
14324<ul>
14325<li>240p (320 x 240)</li>
14326<li>480p (640 x 480)</li>
14327<li>720p (1280 x 720)</li>
14328<li>1080p (1920 x 1080)</li>
14329</ul>
14330<p>For LIMITED capability devices
14331(<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
14332the HAL only has to list up to the maximum video size
14333supported by the device.<wbr/></p>
14334<p>Regardless of hardware level,<wbr/> every output resolution available for
14335YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
14336<p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
14337<ul>
14338<li>availableFormats</li>
14339<li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
14340</ul>
14341            </td>
14342          </tr>
14343
14344          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14345           <!-- end of entry -->
14346        
14347                
14348          <tr class="entry" id="static_android.scaler.croppingType">
14349            <td class="entry_name
14350             " rowspan="3">
14351              android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
14352            </td>
14353            <td class="entry_type">
14354                <span class="entry_type_name entry_type_name_enum">byte</span>
14355
14356              <span class="entry_type_visibility"> [public]</span>
14357
14358
14359
14360
14361                <ul class="entry_type_enum">
14362                  <li>
14363                    <span class="entry_type_enum_name">CENTER_ONLY</span>
14364                    <span class="entry_type_enum_notes"><p>The camera device will only support centered crop regions.<wbr/></p></span>
14365                  </li>
14366                  <li>
14367                    <span class="entry_type_enum_name">FREEFORM</span>
14368                    <span class="entry_type_enum_notes"><p>The camera device will support arbitrarily chosen crop regions.<wbr/></p></span>
14369                  </li>
14370                </ul>
14371
14372            </td> <!-- entry_type -->
14373
14374            <td class="entry_description">
14375              <p>The crop type that this camera device supports.<wbr/></p>
14376            </td>
14377
14378            <td class="entry_units">
14379            </td>
14380
14381            <td class="entry_range">
14382            </td>
14383
14384            <td class="entry_tags">
14385            </td>
14386
14387          </tr>
14388          <tr class="entries_header">
14389            <th class="th_details" colspan="5">Details</th>
14390          </tr>
14391          <tr class="entry_cont">
14392            <td class="entry_details" colspan="5">
14393              <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
14394device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
14395crop 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>)
14396and keep the crop region width and height unchanged.<wbr/> The camera device will return the
14397final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
14398<p>Camera devices that support FREEFORM cropping will support any crop region that
14399is inside of the active array.<wbr/> The camera device will apply the same crop region and
14400return 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>
14401<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
14402FREEFORM cropping.<wbr/></p>
14403            </td>
14404          </tr>
14405
14406
14407          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14408           <!-- end of entry -->
14409        
14410        
14411
14412      <!-- end of kind -->
14413      </tbody>
14414      <tr><td colspan="6" class="kind">dynamic</td></tr>
14415
14416      <thead class="entries_header">
14417        <tr>
14418          <th class="th_name">Property Name</th>
14419          <th class="th_type">Type</th>
14420          <th class="th_description">Description</th>
14421          <th class="th_units">Units</th>
14422          <th class="th_range">Range</th>
14423          <th class="th_tags">Tags</th>
14424        </tr>
14425      </thead>
14426
14427      <tbody>
14428
14429        
14430
14431        
14432
14433        
14434
14435        
14436
14437                
14438          <tr class="entry" id="dynamic_android.scaler.cropRegion">
14439            <td class="entry_name
14440             " rowspan="3">
14441              android.<wbr/>scaler.<wbr/>crop<wbr/>Region
14442            </td>
14443            <td class="entry_type">
14444                <span class="entry_type_name">int32</span>
14445                <span class="entry_type_container">x</span>
14446
14447                <span class="entry_type_array">
14448                  4
14449                </span>
14450              <span class="entry_type_visibility"> [public as rectangle]</span>
14451
14452
14453
14454
14455
14456            </td> <!-- entry_type -->
14457
14458            <td class="entry_description">
14459              <p>(x,<wbr/> y,<wbr/> width,<wbr/> height).<wbr/></p>
14460<p>A rectangle with the top-level corner of (x,<wbr/>y) and size
14461(width,<wbr/> height).<wbr/> The region of the sensor that is used for
14462output.<wbr/> Each stream must use this rectangle to produce its
14463output,<wbr/> cropping to a smaller region if necessary to
14464maintain the stream's aspect ratio.<wbr/></p>
14465<p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
14466            </td>
14467
14468            <td class="entry_units">
14469              (x,<wbr/>y) of top-left corner,<wbr/> width and height of region
14470          in pixels; (0,<wbr/>0) is top-left corner of
14471          android.<wbr/>sensor.<wbr/>active<wbr/>Array<wbr/>Size
14472            </td>
14473
14474            <td class="entry_range">
14475            </td>
14476
14477            <td class="entry_tags">
14478              <ul class="entry_tags">
14479                  <li><a href="#tag_BC">BC</a></li>
14480              </ul>
14481            </td>
14482
14483          </tr>
14484          <tr class="entries_header">
14485            <th class="th_details" colspan="5">Details</th>
14486          </tr>
14487          <tr class="entry_cont">
14488            <td class="entry_details" colspan="5">
14489              <p>The crop region is applied after the RAW to other color space (e.<wbr/>g.<wbr/> YUV)
14490conversion.<wbr/> Since raw streams (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/>
14491it is not croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
14492<p>For non-raw streams,<wbr/> any additional per-stream cropping will
14493be done to maximize the final pixel area of the stream.<wbr/></p>
14494<p>For example,<wbr/> if the crop region is set to a 4:3 aspect
14495ratio,<wbr/> then 4:3 streams should use the exact crop
14496region.<wbr/> 16:9 streams should further crop vertically
14497(letterbox).<wbr/></p>
14498<p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
14499outputs should crop horizontally (pillarbox),<wbr/> and 16:9
14500streams should match exactly.<wbr/> These additional crops must
14501be centered within the crop region.<wbr/></p>
14502<p>The output streams must maintain square pixels at all
14503times,<wbr/> no matter what the relative aspect ratios of the
14504crop region and the stream are.<wbr/>  Negative values for
14505corner are allowed for raw output if full pixel array is
14506larger than active pixel array.<wbr/> Width and height may be
14507rounded to nearest larger supportable width,<wbr/> especially
14508for raw output,<wbr/> where only a few fixed scales may be
14509possible.<wbr/> The width and height of the crop region cannot
14510be set to be smaller than floor( activeArraySize.<wbr/>width /<wbr/>
14511<a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> ) and floor(
14512activeArraySize.<wbr/>height /<wbr/>
14513<a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a>),<wbr/> respectively.<wbr/></p>
14514            </td>
14515          </tr>
14516
14517
14518          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14519           <!-- end of entry -->
14520        
14521        
14522
14523      <!-- end of kind -->
14524      </tbody>
14525
14526  <!-- end of section -->
14527  <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr>
14528
14529
14530      <tr><td colspan="6" class="kind">controls</td></tr>
14531
14532      <thead class="entries_header">
14533        <tr>
14534          <th class="th_name">Property Name</th>
14535          <th class="th_type">Type</th>
14536          <th class="th_description">Description</th>
14537          <th class="th_units">Units</th>
14538          <th class="th_range">Range</th>
14539          <th class="th_tags">Tags</th>
14540        </tr>
14541      </thead>
14542
14543      <tbody>
14544
14545        
14546
14547        
14548
14549        
14550
14551        
14552
14553                
14554          <tr class="entry" id="controls_android.sensor.exposureTime">
14555            <td class="entry_name
14556             " rowspan="3">
14557              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
14558            </td>
14559            <td class="entry_type">
14560                <span class="entry_type_name">int64</span>
14561
14562              <span class="entry_type_visibility"> [public]</span>
14563
14564
14565
14566
14567
14568            </td> <!-- entry_type -->
14569
14570            <td class="entry_description">
14571              <p>Duration each pixel is exposed to
14572light.<wbr/></p>
14573            </td>
14574
14575            <td class="entry_units">
14576              nanoseconds
14577            </td>
14578
14579            <td class="entry_range">
14580              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
14581            </td>
14582
14583            <td class="entry_tags">
14584              <ul class="entry_tags">
14585                  <li><a href="#tag_V1">V1</a></li>
14586              </ul>
14587            </td>
14588
14589          </tr>
14590          <tr class="entries_header">
14591            <th class="th_details" colspan="5">Details</th>
14592          </tr>
14593          <tr class="entry_cont">
14594            <td class="entry_details" colspan="5">
14595              <p>If the sensor can't expose this exact duration,<wbr/> it should shorten the
14596duration exposed to the nearest possible value (rather than expose longer).<wbr/></p>
14597            </td>
14598          </tr>
14599
14600
14601          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14602           <!-- end of entry -->
14603        
14604                
14605          <tr class="entry" id="controls_android.sensor.frameDuration">
14606            <td class="entry_name
14607             " rowspan="5">
14608              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
14609            </td>
14610            <td class="entry_type">
14611                <span class="entry_type_name">int64</span>
14612
14613              <span class="entry_type_visibility"> [public]</span>
14614
14615
14616
14617
14618
14619            </td> <!-- entry_type -->
14620
14621            <td class="entry_description">
14622              <p>Duration from start of frame exposure to
14623start of next frame exposure.<wbr/></p>
14624            </td>
14625
14626            <td class="entry_units">
14627              nanoseconds
14628            </td>
14629
14630            <td class="entry_range">
14631              <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
14632<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
14633is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
14634            </td>
14635
14636            <td class="entry_tags">
14637              <ul class="entry_tags">
14638                  <li><a href="#tag_V1">V1</a></li>
14639              </ul>
14640            </td>
14641
14642          </tr>
14643          <tr class="entries_header">
14644            <th class="th_details" colspan="5">Details</th>
14645          </tr>
14646          <tr class="entry_cont">
14647            <td class="entry_details" colspan="5">
14648              <p>The maximum frame rate that can be supported by a camera subsystem is
14649a function of many factors:</p>
14650<ul>
14651<li>Requested resolutions of output image streams</li>
14652<li>Availability of binning /<wbr/> skipping modes on the imager</li>
14653<li>The bandwidth of the imager interface</li>
14654<li>The bandwidth of the various ISP processing blocks</li>
14655</ul>
14656<p>Since these factors can vary greatly between different ISPs and
14657sensors,<wbr/> the camera abstraction tries to represent the bandwidth
14658restrictions with as simple a model as possible.<wbr/></p>
14659<p>The model presented has the following characteristics:</p>
14660<ul>
14661<li>The image sensor is always configured to output the smallest
14662resolution possible given the application's requested output stream
14663sizes.<wbr/>  The smallest resolution is defined as being at least as large
14664as the largest requested output stream size; the camera pipeline must
14665never digitally upsample sensor data when the crop region covers the
14666whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
14667resolutions are configured,<wbr/> the sensor can provide a higher frame
14668rate.<wbr/></li>
14669<li>Since any request may use any or all the currently configured
14670output streams,<wbr/> the sensor and ISP must be configured to support
14671scaling a single capture to all the streams at the same time.<wbr/>  This
14672means the camera pipeline must be ready to produce the largest
14673requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
14674frame rate of a given configured stream set is governed only by the
14675largest requested stream resolution.<wbr/></li>
14676<li>Using more than one output stream in a request does not affect the
14677frame duration.<wbr/></li>
14678<li>Certain format-streams may need to do additional background processing
14679before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
14680can run concurrently to the rest of the camera pipeline,<wbr/> but
14681cannot process more than 1 capture at a time.<wbr/></li>
14682</ul>
14683<p>The necessary information for the application,<wbr/> given the model above,<wbr/>
14684is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field
14685using StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size).<wbr/>
14686These are used to determine the maximum frame rate /<wbr/> minimum frame
14687duration that is possible for a given stream configuration.<wbr/></p>
14688<p>Specifically,<wbr/> the application can use the following rules to
14689determine the minimum frame duration it can request from the camera
14690device:</p>
14691<ol>
14692<li>Let the set of currently configured input/<wbr/>output streams
14693be called <code>S</code>.<wbr/></li>
14694<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by
14695looking it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using
14696StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size) (with
14697its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called
14698<code>F</code>.<wbr/></li>
14699<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
14700for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
14701used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
14702</ol>
14703<p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in
14704StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size) using its
14705respective size/<wbr/>format),<wbr/> then the frame duration in
14706<code>F</code> determines the steady state frame rate that the application will
14707get if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind
14708of request be called <code>Rsimple</code>.<wbr/></p>
14709<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
14710by a single capture of a new request <code>Rstall</code> (which has at least
14711one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
14712same minimum frame duration this will not cause a frame rate loss
14713if all buffers from the previous <code>Rstall</code> have already been
14714delivered.<wbr/></p>
14715<p>For more details about stalling,<wbr/> see
14716StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size).<wbr/></p>
14717            </td>
14718          </tr>
14719
14720          <tr class="entries_header">
14721            <th class="th_details" colspan="5">HAL Implementation Details</th>
14722          </tr>
14723          <tr class="entry_cont">
14724            <td class="entry_details" colspan="5">
14725              <p>For more details about stalling,<wbr/> see
14726<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
14727            </td>
14728          </tr>
14729
14730          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14731           <!-- end of entry -->
14732        
14733                
14734          <tr class="entry" id="controls_android.sensor.sensitivity">
14735            <td class="entry_name
14736             " rowspan="3">
14737              android.<wbr/>sensor.<wbr/>sensitivity
14738            </td>
14739            <td class="entry_type">
14740                <span class="entry_type_name">int32</span>
14741
14742              <span class="entry_type_visibility"> [public]</span>
14743
14744
14745
14746
14747
14748            </td> <!-- entry_type -->
14749
14750            <td class="entry_description">
14751              <p>Gain applied to image data.<wbr/> Must be
14752implemented through analog gain only if set to values
14753below 'maximum analog sensitivity'.<wbr/></p>
14754<p>If the sensor can't apply this exact gain,<wbr/> it should lessen the
14755gain to the nearest possible value (rather than gain more).<wbr/></p>
14756            </td>
14757
14758            <td class="entry_units">
14759              ISO arithmetic units
14760            </td>
14761
14762            <td class="entry_range">
14763              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
14764            </td>
14765
14766            <td class="entry_tags">
14767              <ul class="entry_tags">
14768                  <li><a href="#tag_V1">V1</a></li>
14769              </ul>
14770            </td>
14771
14772          </tr>
14773          <tr class="entries_header">
14774            <th class="th_details" colspan="5">Details</th>
14775          </tr>
14776          <tr class="entry_cont">
14777            <td class="entry_details" colspan="5">
14778              <p>ISO 12232:2006 REI method</p>
14779            </td>
14780          </tr>
14781
14782
14783          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14784           <!-- end of entry -->
14785        
14786                
14787          <tr class="entry" id="controls_android.sensor.testPatternData">
14788            <td class="entry_name
14789             " rowspan="5">
14790              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
14791            </td>
14792            <td class="entry_type">
14793                <span class="entry_type_name">int32</span>
14794                <span class="entry_type_container">x</span>
14795
14796                <span class="entry_type_array">
14797                  4
14798                </span>
14799              <span class="entry_type_visibility"> [public]</span>
14800
14801
14802
14803
14804
14805            </td> <!-- entry_type -->
14806
14807            <td class="entry_description">
14808              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
14809when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
14810            </td>
14811
14812            <td class="entry_units">
14813            </td>
14814
14815            <td class="entry_range">
14816              <p>Optional.<wbr/>
14817Must be supported if <a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a> contains
14818SOLID_<wbr/>COLOR.<wbr/></p>
14819            </td>
14820
14821            <td class="entry_tags">
14822            </td>
14823
14824          </tr>
14825          <tr class="entries_header">
14826            <th class="th_details" colspan="5">Details</th>
14827          </tr>
14828          <tr class="entry_cont">
14829            <td class="entry_details" colspan="5">
14830              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
14831The camera device then uses the most significant X bits
14832that correspond to how many bits are in its Bayer raw sensor
14833output.<wbr/></p>
14834<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
1483510 most significant bits from each color channel.<wbr/></p>
14836            </td>
14837          </tr>
14838
14839          <tr class="entries_header">
14840            <th class="th_details" colspan="5">HAL Implementation Details</th>
14841          </tr>
14842          <tr class="entry_cont">
14843            <td class="entry_details" colspan="5">
14844              
14845            </td>
14846          </tr>
14847
14848          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14849           <!-- end of entry -->
14850        
14851                
14852          <tr class="entry" id="controls_android.sensor.testPatternMode">
14853            <td class="entry_name
14854             " rowspan="5">
14855              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
14856            </td>
14857            <td class="entry_type">
14858                <span class="entry_type_name entry_type_name_enum">int32</span>
14859
14860              <span class="entry_type_visibility"> [public]</span>
14861
14862
14863
14864
14865                <ul class="entry_type_enum">
14866                  <li>
14867                    <span class="entry_type_enum_name">OFF</span>
14868                    <span class="entry_type_enum_notes"><p>Default.<wbr/> No test pattern mode is used,<wbr/> and the camera
14869device returns captures from the image sensor.<wbr/></p></span>
14870                  </li>
14871                  <li>
14872                    <span class="entry_type_enum_name">SOLID_COLOR</span>
14873                    <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
14874respective color channel provided in
14875<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
14876<p>For example:</p>
14877<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
14878</code></pre>
14879<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
14880<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
14881</code></pre>
14882<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
14883are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
14884                  </li>
14885                  <li>
14886                    <span class="entry_type_enum_name">COLOR_BARS</span>
14887                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
14888<p>The vertical bars (left-to-right) are as follows:</p>
14889<ul>
14890<li>100% white</li>
14891<li>yellow</li>
14892<li>cyan</li>
14893<li>green</li>
14894<li>magenta</li>
14895<li>red</li>
14896<li>blue</li>
14897<li>black</li>
14898</ul>
14899<p>In general the image would look like the following:</p>
14900<pre><code>W Y C G M R B K
14901W Y C G M R B K
14902W Y C G M R B K
14903W Y C G M R B K
14904W Y C G M R B K
14905.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
14906.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
14907.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
14908
14909(B = Blue,<wbr/> K = Black)
14910</code></pre>
14911<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
14912When this is not possible,<wbr/> the bar size should be rounded
14913down to the nearest integer and the pattern can repeat
14914on the right side.<wbr/></p>
14915<p>Each bar's height must always take up the full sensor
14916pixel array height.<wbr/></p>
14917<p>Each pixel in this test pattern must be set to either
149180% intensity or 100% intensity.<wbr/></p></span>
14919                  </li>
14920                  <li>
14921                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
14922                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
14923each bar should start at its specified color at the top,<wbr/>
14924and fade to gray at the bottom.<wbr/></p>
14925<p>Furthermore each bar is further subdivided into a left and
14926right half.<wbr/> The left half should have a smooth gradient,<wbr/>
14927and the right half should have a quantized gradient.<wbr/></p>
14928<p>In particular,<wbr/> the right half's should consist of blocks of the
14929same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
14930<p>The least significant bits in the quantized gradient should
14931be copied from the most significant bits of the smooth gradient.<wbr/></p>
14932<p>The height of each bar should always be a multiple of 128.<wbr/>
14933When this is not the case,<wbr/> the pattern should repeat at the bottom
14934of the image.<wbr/></p></span>
14935                  </li>
14936                  <li>
14937                    <span class="entry_type_enum_name">PN9</span>
14938                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
14939generated from a PN9 512-bit sequence (typically implemented
14940in hardware with a linear feedback shift register).<wbr/></p>
14941<p>The generator should be reset at the beginning of each frame,<wbr/>
14942and thus each subsequent raw frame with this test pattern should
14943be exactly the same as the last.<wbr/></p></span>
14944                  </li>
14945                  <li>
14946                    <span class="entry_type_enum_name">CUSTOM1</span>
14947                    <span class="entry_type_enum_value">256</span>
14948                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
14949available only on this camera device are at least this numeric
14950value.<wbr/></p>
14951<p>All of the custom test patterns will be static
14952(that is the raw image must not vary from frame to frame).<wbr/></p></span>
14953                  </li>
14954                </ul>
14955
14956            </td> <!-- entry_type -->
14957
14958            <td class="entry_description">
14959              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
14960doing a real exposure from the camera.<wbr/></p>
14961            </td>
14962
14963            <td class="entry_units">
14964            </td>
14965
14966            <td class="entry_range">
14967              <p>Optional.<wbr/> Defaults to OFF.<wbr/> Value must be one of
14968<a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
14969            </td>
14970
14971            <td class="entry_tags">
14972            </td>
14973
14974          </tr>
14975          <tr class="entries_header">
14976            <th class="th_details" colspan="5">Details</th>
14977          </tr>
14978          <tr class="entry_cont">
14979            <td class="entry_details" colspan="5">
14980              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
14981by android.<wbr/>sensor.<wbr/>* should be ignored.<wbr/> All other controls should
14982work as normal.<wbr/></p>
14983<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
14984occur (and that the test pattern remain unmodified,<wbr/> since the flash
14985would not actually affect it).<wbr/></p>
14986            </td>
14987          </tr>
14988
14989          <tr class="entries_header">
14990            <th class="th_details" colspan="5">HAL Implementation Details</th>
14991          </tr>
14992          <tr class="entry_cont">
14993            <td class="entry_details" colspan="5">
14994              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
14995<p>The HAL may choose to substitute test patterns from the sensor
14996with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
14997indistinguishable to the ISP whether the data came from the
14998sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
14999            </td>
15000          </tr>
15001
15002          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15003           <!-- end of entry -->
15004        
15005        
15006
15007      <!-- end of kind -->
15008      </tbody>
15009      <tr><td colspan="6" class="kind">static</td></tr>
15010
15011      <thead class="entries_header">
15012        <tr>
15013          <th class="th_name">Property Name</th>
15014          <th class="th_type">Type</th>
15015          <th class="th_description">Description</th>
15016          <th class="th_units">Units</th>
15017          <th class="th_range">Range</th>
15018          <th class="th_tags">Tags</th>
15019        </tr>
15020      </thead>
15021
15022      <tbody>
15023
15024        
15025
15026        
15027
15028        
15029
15030        
15031                
15032            
15033
15034                
15035          <tr class="entry" id="static_android.sensor.info.activeArraySize">
15036            <td class="entry_name
15037             " rowspan="3">
15038              android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
15039            </td>
15040            <td class="entry_type">
15041                <span class="entry_type_name">int32</span>
15042                <span class="entry_type_container">x</span>
15043
15044                <span class="entry_type_array">
15045                  4
15046                </span>
15047              <span class="entry_type_visibility"> [public as rectangle]</span>
15048
15049
15050
15051                <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
15052
15053
15054            </td> <!-- entry_type -->
15055
15056            <td class="entry_description">
15057              <p>Area of raw data which corresponds to only
15058active pixels.<wbr/></p>
15059            </td>
15060
15061            <td class="entry_units">
15062            </td>
15063
15064            <td class="entry_range">
15065              <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
15066&gt;= <code>(0,<wbr/>0)</code>.<wbr/> The <code>(width,<wbr/> height)</code> must be &lt;=
15067<code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p>
15068            </td>
15069
15070            <td class="entry_tags">
15071              <ul class="entry_tags">
15072                  <li><a href="#tag_DNG">DNG</a></li>
15073              </ul>
15074            </td>
15075
15076          </tr>
15077          <tr class="entries_header">
15078            <th class="th_details" colspan="5">Details</th>
15079          </tr>
15080          <tr class="entry_cont">
15081            <td class="entry_details" colspan="5">
15082              <p>It is smaller or equal to
15083sensor full pixel array,<wbr/> which could include the black calibration pixels.<wbr/></p>
15084            </td>
15085          </tr>
15086
15087
15088          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15089           <!-- end of entry -->
15090        
15091                
15092          <tr class="entry" id="static_android.sensor.info.sensitivityRange">
15093            <td class="entry_name
15094             " rowspan="1">
15095              android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
15096            </td>
15097            <td class="entry_type">
15098                <span class="entry_type_name">int32</span>
15099                <span class="entry_type_container">x</span>
15100
15101                <span class="entry_type_array">
15102                  2
15103                </span>
15104              <span class="entry_type_visibility"> [public as rangeInt]</span>
15105
15106
15107
15108                <div class="entry_type_notes">Range of supported sensitivities</div>
15109
15110
15111            </td> <!-- entry_type -->
15112
15113            <td class="entry_description">
15114              <p>Range of valid sensitivities</p>
15115            </td>
15116
15117            <td class="entry_units">
15118            </td>
15119
15120            <td class="entry_range">
15121              <p>Min &lt;= 100,<wbr/> Max &gt;= 1600</p>
15122            </td>
15123
15124            <td class="entry_tags">
15125              <ul class="entry_tags">
15126                  <li><a href="#tag_BC">BC</a></li>
15127                  <li><a href="#tag_V1">V1</a></li>
15128              </ul>
15129            </td>
15130
15131          </tr>
15132
15133
15134          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15135           <!-- end of entry -->
15136        
15137                
15138          <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
15139            <td class="entry_name
15140             " rowspan="1">
15141              android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
15142            </td>
15143            <td class="entry_type">
15144                <span class="entry_type_name entry_type_name_enum">byte</span>
15145
15146              <span class="entry_type_visibility"> [public]</span>
15147
15148
15149
15150
15151                <ul class="entry_type_enum">
15152                  <li>
15153                    <span class="entry_type_enum_name">RGGB</span>
15154                  </li>
15155                  <li>
15156                    <span class="entry_type_enum_name">GRBG</span>
15157                  </li>
15158                  <li>
15159                    <span class="entry_type_enum_name">GBRG</span>
15160                  </li>
15161                  <li>
15162                    <span class="entry_type_enum_name">BGGR</span>
15163                  </li>
15164                  <li>
15165                    <span class="entry_type_enum_name">RGB</span>
15166                    <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
15167values for each pixel,<wbr/> instead of just 1 16-bit value
15168per pixel.<wbr/></p></span>
15169                  </li>
15170                </ul>
15171
15172            </td> <!-- entry_type -->
15173
15174            <td class="entry_description">
15175              <p>Arrangement of color filters on sensor;
15176represents the colors in the top-left 2x2 section of
15177the sensor,<wbr/> in reading order</p>
15178            </td>
15179
15180            <td class="entry_units">
15181            </td>
15182
15183            <td class="entry_range">
15184            </td>
15185
15186            <td class="entry_tags">
15187              <ul class="entry_tags">
15188                  <li><a href="#tag_DNG">DNG</a></li>
15189              </ul>
15190            </td>
15191
15192          </tr>
15193
15194
15195          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15196           <!-- end of entry -->
15197        
15198                
15199          <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
15200            <td class="entry_name
15201             " rowspan="3">
15202              android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
15203            </td>
15204            <td class="entry_type">
15205                <span class="entry_type_name">int64</span>
15206                <span class="entry_type_container">x</span>
15207
15208                <span class="entry_type_array">
15209                  2
15210                </span>
15211              <span class="entry_type_visibility"> [public as rangeLong]</span>
15212
15213
15214
15215                <div class="entry_type_notes">nanoseconds</div>
15216
15217
15218            </td> <!-- entry_type -->
15219
15220            <td class="entry_description">
15221              <p>Range of valid exposure
15222times used by <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>.<wbr/></p>
15223            </td>
15224
15225            <td class="entry_units">
15226            </td>
15227
15228            <td class="entry_range">
15229              <p>Min &lt;= 100e3 (100 us).<wbr/> For FULL capability devices
15230(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> Max SHOULD be
15231&gt;= 1e9 (1sec),<wbr/> MUST be &gt;= 100e6 (100ms)</p>
15232            </td>
15233
15234            <td class="entry_tags">
15235              <ul class="entry_tags">
15236                  <li><a href="#tag_V1">V1</a></li>
15237              </ul>
15238            </td>
15239
15240          </tr>
15241
15242          <tr class="entries_header">
15243            <th class="th_details" colspan="5">HAL Implementation Details</th>
15244          </tr>
15245          <tr class="entry_cont">
15246            <td class="entry_details" colspan="5">
15247              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
15248The maximum of the range SHOULD be at least
152491 second (1e9),<wbr/> MUST be at least 100ms.<wbr/></p>
15250            </td>
15251          </tr>
15252
15253          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15254           <!-- end of entry -->
15255        
15256                
15257          <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
15258            <td class="entry_name
15259             " rowspan="5">
15260              android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
15261            </td>
15262            <td class="entry_type">
15263                <span class="entry_type_name">int64</span>
15264
15265              <span class="entry_type_visibility"> [public]</span>
15266
15267
15268
15269
15270
15271            </td> <!-- entry_type -->
15272
15273            <td class="entry_description">
15274              <p>Maximum possible frame duration (minimum frame
15275rate).<wbr/></p>
15276            </td>
15277
15278            <td class="entry_units">
15279              nanoseconds
15280            </td>
15281
15282            <td class="entry_range">
15283              <p>For FULL capability devices
15284(<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> Max SHOULD be
15285&gt;= 1e9 (1sec),<wbr/> MUST be &gt;= 100e6 (100ms)</p>
15286            </td>
15287
15288            <td class="entry_tags">
15289              <ul class="entry_tags">
15290                  <li><a href="#tag_V1">V1</a></li>
15291              </ul>
15292            </td>
15293
15294          </tr>
15295          <tr class="entries_header">
15296            <th class="th_details" colspan="5">Details</th>
15297          </tr>
15298          <tr class="entry_cont">
15299            <td class="entry_details" colspan="5">
15300              <p>The largest possible <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>
15301that will be accepted by the camera device.<wbr/> Attempting to use
15302frame durations beyond the maximum will result in the frame duration
15303being clipped to the maximum.<wbr/> See that control
15304for a full definition of frame durations.<wbr/></p>
15305<p>Refer to
15306StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/>Size)
15307for the minimum frame duration values.<wbr/></p>
15308            </td>
15309          </tr>
15310
15311          <tr class="entries_header">
15312            <th class="th_details" colspan="5">HAL Implementation Details</th>
15313          </tr>
15314          <tr class="entry_cont">
15315            <td class="entry_details" colspan="5">
15316              <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
15317The maximum of the range SHOULD be at least
153181 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
15319<p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
15320equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
15321value (since exposure time overrides frame duration).<wbr/></p>
15322<p>Available minimum frame durations for JPEG must be no greater
15323than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
15324minimum frame durations (for that respective size).<wbr/></p>
15325<p>Since JPEG processing is considered offline and can take longer than
15326a single uncompressed capture,<wbr/> refer to
15327<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
15328for details about encoding this scenario.<wbr/></p>
15329            </td>
15330          </tr>
15331
15332          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15333           <!-- end of entry -->
15334        
15335                
15336          <tr class="entry" id="static_android.sensor.info.physicalSize">
15337            <td class="entry_name
15338             " rowspan="3">
15339              android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
15340            </td>
15341            <td class="entry_type">
15342                <span class="entry_type_name">float</span>
15343                <span class="entry_type_container">x</span>
15344
15345                <span class="entry_type_array">
15346                  2
15347                </span>
15348              <span class="entry_type_visibility"> [public as sizeF]</span>
15349
15350
15351
15352                <div class="entry_type_notes">width x height in millimeters</div>
15353
15354
15355            </td> <!-- entry_type -->
15356
15357            <td class="entry_description">
15358              <p>The physical dimensions of the full pixel
15359array</p>
15360            </td>
15361
15362            <td class="entry_units">
15363            </td>
15364
15365            <td class="entry_range">
15366            </td>
15367
15368            <td class="entry_tags">
15369              <ul class="entry_tags">
15370                  <li><a href="#tag_V1">V1</a></li>
15371                  <li><a href="#tag_BC">BC</a></li>
15372              </ul>
15373            </td>
15374
15375          </tr>
15376          <tr class="entries_header">
15377            <th class="th_details" colspan="5">Details</th>
15378          </tr>
15379          <tr class="entry_cont">
15380            <td class="entry_details" colspan="5">
15381              <p>Needed for FOV calculation for old API</p>
15382            </td>
15383          </tr>
15384
15385
15386          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15387           <!-- end of entry -->
15388        
15389                
15390          <tr class="entry" id="static_android.sensor.info.pixelArraySize">
15391            <td class="entry_name
15392             " rowspan="3">
15393              android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
15394            </td>
15395            <td class="entry_type">
15396                <span class="entry_type_name">int32</span>
15397                <span class="entry_type_container">x</span>
15398
15399                <span class="entry_type_array">
15400                  2
15401                </span>
15402              <span class="entry_type_visibility"> [public as size]</span>
15403
15404
15405
15406
15407
15408            </td> <!-- entry_type -->
15409
15410            <td class="entry_description">
15411              <p>Dimensions of full pixel array,<wbr/> possibly
15412including black calibration pixels.<wbr/></p>
15413            </td>
15414
15415            <td class="entry_units">
15416            </td>
15417
15418            <td class="entry_range">
15419            </td>
15420
15421            <td class="entry_tags">
15422              <ul class="entry_tags">
15423                  <li><a href="#tag_DNG">DNG</a></li>
15424                  <li><a href="#tag_BC">BC</a></li>
15425              </ul>
15426            </td>
15427
15428          </tr>
15429          <tr class="entries_header">
15430            <th class="th_details" colspan="5">Details</th>
15431          </tr>
15432          <tr class="entry_cont">
15433            <td class="entry_details" colspan="5">
15434              <p>Maximum output resolution for raw format must
15435match this in
15436<a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/></p>
15437            </td>
15438          </tr>
15439
15440
15441          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15442           <!-- end of entry -->
15443        
15444                
15445          <tr class="entry" id="static_android.sensor.info.whiteLevel">
15446            <td class="entry_name
15447             " rowspan="5">
15448              android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
15449            </td>
15450            <td class="entry_type">
15451                <span class="entry_type_name">int32</span>
15452
15453              <span class="entry_type_visibility"> [public]</span>
15454
15455
15456
15457
15458
15459            </td> <!-- entry_type -->
15460
15461            <td class="entry_description">
15462              <p>Maximum raw value output by sensor.<wbr/></p>
15463            </td>
15464
15465            <td class="entry_units">
15466            </td>
15467
15468            <td class="entry_range">
15469              <p>&gt; 255 (8-bit output)</p>
15470            </td>
15471
15472            <td class="entry_tags">
15473              <ul class="entry_tags">
15474                  <li><a href="#tag_DNG">DNG</a></li>
15475              </ul>
15476            </td>
15477
15478          </tr>
15479          <tr class="entries_header">
15480            <th class="th_details" colspan="5">Details</th>
15481          </tr>
15482          <tr class="entry_cont">
15483            <td class="entry_details" colspan="5">
15484              <p>This specifies the fully-saturated encoding level for the raw
15485sample values from the sensor.<wbr/>  This is typically caused by the
15486sensor becoming highly non-linear or clipping.<wbr/> The minimum for
15487each channel is specified by the offset in the
15488<a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> tag.<wbr/></p>
15489<p>The white level is typically determined either by sensor bit depth
15490(8-14 bits is expected),<wbr/> or by the point where the sensor response
15491becomes too non-linear to be useful.<wbr/>  The default value for this is
15492maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
15493            </td>
15494          </tr>
15495
15496          <tr class="entries_header">
15497            <th class="th_details" colspan="5">HAL Implementation Details</th>
15498          </tr>
15499          <tr class="entry_cont">
15500            <td class="entry_details" colspan="5">
15501              <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
15502so the value for linear sensors should not be significantly lower
15503than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
15504            </td>
15505          </tr>
15506
15507          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15508           <!-- end of entry -->
15509        
15510        
15511        
15512
15513                
15514          <tr class="entry" id="static_android.sensor.referenceIlluminant1">
15515            <td class="entry_name
15516             " rowspan="5">
15517              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
15518            </td>
15519            <td class="entry_type">
15520                <span class="entry_type_name entry_type_name_enum">byte</span>
15521
15522              <span class="entry_type_visibility"> [public]</span>
15523
15524
15525
15526
15527                <ul class="entry_type_enum">
15528                  <li>
15529                    <span class="entry_type_enum_name">DAYLIGHT</span>
15530                    <span class="entry_type_enum_value">1</span>
15531                  </li>
15532                  <li>
15533                    <span class="entry_type_enum_name">FLUORESCENT</span>
15534                    <span class="entry_type_enum_value">2</span>
15535                  </li>
15536                  <li>
15537                    <span class="entry_type_enum_name">TUNGSTEN</span>
15538                    <span class="entry_type_enum_value">3</span>
15539                    <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
15540                  </li>
15541                  <li>
15542                    <span class="entry_type_enum_name">FLASH</span>
15543                    <span class="entry_type_enum_value">4</span>
15544                  </li>
15545                  <li>
15546                    <span class="entry_type_enum_name">FINE_WEATHER</span>
15547                    <span class="entry_type_enum_value">9</span>
15548                  </li>
15549                  <li>
15550                    <span class="entry_type_enum_name">CLOUDY_WEATHER</span>
15551                    <span class="entry_type_enum_value">10</span>
15552                  </li>
15553                  <li>
15554                    <span class="entry_type_enum_name">SHADE</span>
15555                    <span class="entry_type_enum_value">11</span>
15556                  </li>
15557                  <li>
15558                    <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span>
15559                    <span class="entry_type_enum_value">12</span>
15560                    <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
15561                  </li>
15562                  <li>
15563                    <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span>
15564                    <span class="entry_type_enum_value">13</span>
15565                    <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
15566                  </li>
15567                  <li>
15568                    <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span>
15569                    <span class="entry_type_enum_value">14</span>
15570                    <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
15571                  </li>
15572                  <li>
15573                    <span class="entry_type_enum_name">WHITE_FLUORESCENT</span>
15574                    <span class="entry_type_enum_value">15</span>
15575                    <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
15576                  </li>
15577                  <li>
15578                    <span class="entry_type_enum_name">STANDARD_A</span>
15579                    <span class="entry_type_enum_value">17</span>
15580                  </li>
15581                  <li>
15582                    <span class="entry_type_enum_name">STANDARD_B</span>
15583                    <span class="entry_type_enum_value">18</span>
15584                  </li>
15585                  <li>
15586                    <span class="entry_type_enum_name">STANDARD_C</span>
15587                    <span class="entry_type_enum_value">19</span>
15588                  </li>
15589                  <li>
15590                    <span class="entry_type_enum_name">D55</span>
15591                    <span class="entry_type_enum_value">20</span>
15592                  </li>
15593                  <li>
15594                    <span class="entry_type_enum_name">D65</span>
15595                    <span class="entry_type_enum_value">21</span>
15596                  </li>
15597                  <li>
15598                    <span class="entry_type_enum_name">D75</span>
15599                    <span class="entry_type_enum_value">22</span>
15600                  </li>
15601                  <li>
15602                    <span class="entry_type_enum_name">D50</span>
15603                    <span class="entry_type_enum_value">23</span>
15604                  </li>
15605                  <li>
15606                    <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span>
15607                    <span class="entry_type_enum_value">24</span>
15608                  </li>
15609                </ul>
15610
15611            </td> <!-- entry_type -->
15612
15613            <td class="entry_description">
15614              <p>The standard reference illuminant used as the scene light source when
15615calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
15616<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
15617<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
15618            </td>
15619
15620            <td class="entry_units">
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_DNG">DNG</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>The values in this tag correspond to the values defined for the
15639EXIF LightSource tag.<wbr/> These illuminants are standard light sources
15640that are often used calibrating camera devices.<wbr/></p>
15641<p>If this tag is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
15642<a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
15643<a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
15644<p>Some devices may choose to provide a second set of calibration
15645information for improved quality,<wbr/> including
15646<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
15647            </td>
15648          </tr>
15649
15650          <tr class="entries_header">
15651            <th class="th_details" colspan="5">HAL Implementation Details</th>
15652          </tr>
15653          <tr class="entry_cont">
15654            <td class="entry_details" colspan="5">
15655              <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
15656and corresponding matrices must be present to support DNG output.<wbr/></p>
15657<p>When producing raw images with a color profile that has only been
15658calibrated against a single light source,<wbr/> it is valid to omit
15659<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
15660<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/>
15661and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
15662<p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
15663chosen so that it is representative of typical scene lighting.<wbr/>  In
15664general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
15665<p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
15666<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
15667chosen to represent the typical range of scene lighting conditions.<wbr/>
15668In general,<wbr/> low color temperature illuminant such as Standard-A will
15669be chosen for the first reference illuminant and a higher color
15670temperature illuminant such as D65 will be chosen for the second
15671reference illuminant.<wbr/></p>
15672            </td>
15673          </tr>
15674
15675          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15676           <!-- end of entry -->
15677        
15678                
15679          <tr class="entry" id="static_android.sensor.referenceIlluminant2">
15680            <td class="entry_name
15681             " rowspan="3">
15682              android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
15683            </td>
15684            <td class="entry_type">
15685                <span class="entry_type_name">byte</span>
15686
15687              <span class="entry_type_visibility"> [public]</span>
15688
15689
15690
15691
15692
15693            </td> <!-- entry_type -->
15694
15695            <td class="entry_description">
15696              <p>The standard reference illuminant used as the scene light source when
15697calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
15698<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
15699<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
15700            </td>
15701
15702            <td class="entry_units">
15703            </td>
15704
15705            <td class="entry_range">
15706            </td>
15707
15708            <td class="entry_tags">
15709              <ul class="entry_tags">
15710                  <li><a href="#tag_DNG">DNG</a></li>
15711              </ul>
15712            </td>
15713
15714          </tr>
15715          <tr class="entries_header">
15716            <th class="th_details" colspan="5">Details</th>
15717          </tr>
15718          <tr class="entry_cont">
15719            <td class="entry_details" colspan="5">
15720              <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/>
15721Valid values for this are the same as those given for the first
15722reference illuminant.<wbr/></p>
15723<p>If this tag is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
15724<a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
15725<a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
15726            </td>
15727          </tr>
15728
15729
15730          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15731           <!-- end of entry -->
15732        
15733                
15734          <tr class="entry" id="static_android.sensor.calibrationTransform1">
15735            <td class="entry_name
15736             " rowspan="3">
15737              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
15738            </td>
15739            <td class="entry_type">
15740                <span class="entry_type_name">rational</span>
15741                <span class="entry_type_container">x</span>
15742
15743                <span class="entry_type_array">
15744                  3 x 3
15745                </span>
15746              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
15747
15748
15749
15750                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
15751
15752
15753            </td> <!-- entry_type -->
15754
15755            <td class="entry_description">
15756              <p>A per-device calibration transform matrix that maps from the
15757reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
15758            </td>
15759
15760            <td class="entry_units">
15761            </td>
15762
15763            <td class="entry_range">
15764            </td>
15765
15766            <td class="entry_tags">
15767              <ul class="entry_tags">
15768                  <li><a href="#tag_DNG">DNG</a></li>
15769              </ul>
15770            </td>
15771
15772          </tr>
15773          <tr class="entries_header">
15774            <th class="th_details" colspan="5">Details</th>
15775          </tr>
15776          <tr class="entry_cont">
15777            <td class="entry_details" colspan="5">
15778              <p>This matrix is used to correct for per-device variations in the
15779sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
15780<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
15781contains a per-device calibration transform that maps colors
15782from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
15783colorspace) into this camera device's native sensor color
15784space under the first reference illuminant
15785(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
15786            </td>
15787          </tr>
15788
15789
15790          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15791           <!-- end of entry -->
15792        
15793                
15794          <tr class="entry" id="static_android.sensor.calibrationTransform2">
15795            <td class="entry_name
15796             " rowspan="3">
15797              android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
15798            </td>
15799            <td class="entry_type">
15800                <span class="entry_type_name">rational</span>
15801                <span class="entry_type_container">x</span>
15802
15803                <span class="entry_type_array">
15804                  3 x 3
15805                </span>
15806              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
15807
15808
15809
15810                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
15811
15812
15813            </td> <!-- entry_type -->
15814
15815            <td class="entry_description">
15816              <p>A per-device calibration transform matrix that maps from the
15817reference sensor colorspace to the actual device sensor colorspace
15818(this is the colorspace of the raw buffer data).<wbr/></p>
15819            </td>
15820
15821            <td class="entry_units">
15822            </td>
15823
15824            <td class="entry_range">
15825            </td>
15826
15827            <td class="entry_tags">
15828              <ul class="entry_tags">
15829                  <li><a href="#tag_DNG">DNG</a></li>
15830              </ul>
15831            </td>
15832
15833          </tr>
15834          <tr class="entries_header">
15835            <th class="th_details" colspan="5">Details</th>
15836          </tr>
15837          <tr class="entry_cont">
15838            <td class="entry_details" colspan="5">
15839              <p>This matrix is used to correct for per-device variations in the
15840sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
15841<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
15842contains a per-device calibration transform that maps colors
15843from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
15844colorspace) into this camera device's native sensor color
15845space under the second reference illuminant
15846(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
15847<p>This matrix will only be present if the second reference
15848illuminant is present.<wbr/></p>
15849            </td>
15850          </tr>
15851
15852
15853          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15854           <!-- end of entry -->
15855        
15856                
15857          <tr class="entry" id="static_android.sensor.colorTransform1">
15858            <td class="entry_name
15859             " rowspan="3">
15860              android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
15861            </td>
15862            <td class="entry_type">
15863                <span class="entry_type_name">rational</span>
15864                <span class="entry_type_container">x</span>
15865
15866                <span class="entry_type_array">
15867                  3 x 3
15868                </span>
15869              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
15870
15871
15872
15873                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
15874
15875
15876            </td> <!-- entry_type -->
15877
15878            <td class="entry_description">
15879              <p>A matrix that transforms color values from CIE XYZ color space to
15880reference sensor color space.<wbr/></p>
15881            </td>
15882
15883            <td class="entry_units">
15884            </td>
15885
15886            <td class="entry_range">
15887            </td>
15888
15889            <td class="entry_tags">
15890              <ul class="entry_tags">
15891                  <li><a href="#tag_DNG">DNG</a></li>
15892              </ul>
15893            </td>
15894
15895          </tr>
15896          <tr class="entries_header">
15897            <th class="th_details" colspan="5">Details</th>
15898          </tr>
15899          <tr class="entry_cont">
15900            <td class="entry_details" colspan="5">
15901              <p>This matrix is used to convert from the standard CIE XYZ color
15902space to the reference sensor colorspace,<wbr/> and is used when processing
15903raw buffer data.<wbr/></p>
15904<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
15905contains a color transform matrix that maps colors from the CIE
15906XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
15907"golden module" colorspace) under the first reference illuminant
15908(<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
15909<p>The white points chosen in both the reference sensor color space
15910and the CIE XYZ colorspace when calculating this transform will
15911match the standard white point for the first reference illuminant
15912(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
15913            </td>
15914          </tr>
15915
15916
15917          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15918           <!-- end of entry -->
15919        
15920                
15921          <tr class="entry" id="static_android.sensor.colorTransform2">
15922            <td class="entry_name
15923             " rowspan="3">
15924              android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
15925            </td>
15926            <td class="entry_type">
15927                <span class="entry_type_name">rational</span>
15928                <span class="entry_type_container">x</span>
15929
15930                <span class="entry_type_array">
15931                  3 x 3
15932                </span>
15933              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
15934
15935
15936
15937                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
15938
15939
15940            </td> <!-- entry_type -->
15941
15942            <td class="entry_description">
15943              <p>A matrix that transforms color values from CIE XYZ color space to
15944reference sensor color space.<wbr/></p>
15945            </td>
15946
15947            <td class="entry_units">
15948            </td>
15949
15950            <td class="entry_range">
15951            </td>
15952
15953            <td class="entry_tags">
15954              <ul class="entry_tags">
15955                  <li><a href="#tag_DNG">DNG</a></li>
15956              </ul>
15957            </td>
15958
15959          </tr>
15960          <tr class="entries_header">
15961            <th class="th_details" colspan="5">Details</th>
15962          </tr>
15963          <tr class="entry_cont">
15964            <td class="entry_details" colspan="5">
15965              <p>This matrix is used to convert from the standard CIE XYZ color
15966space to the reference sensor colorspace,<wbr/> and is used when processing
15967raw buffer data.<wbr/></p>
15968<p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
15969contains a color transform matrix that maps colors from the CIE
15970XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
15971"golden module" colorspace) under the second reference illuminant
15972(<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
15973<p>The white points chosen in both the reference sensor color space
15974and the CIE XYZ colorspace when calculating this transform will
15975match the standard white point for the second reference illuminant
15976(i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
15977<p>This matrix will only be present if the second reference
15978illuminant is present.<wbr/></p>
15979            </td>
15980          </tr>
15981
15982
15983          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15984           <!-- end of entry -->
15985        
15986                
15987          <tr class="entry" id="static_android.sensor.forwardMatrix1">
15988            <td class="entry_name
15989             " rowspan="3">
15990              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
15991            </td>
15992            <td class="entry_type">
15993                <span class="entry_type_name">rational</span>
15994                <span class="entry_type_container">x</span>
15995
15996                <span class="entry_type_array">
15997                  3 x 3
15998                </span>
15999              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
16000
16001
16002
16003                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
16004
16005
16006            </td> <!-- entry_type -->
16007
16008            <td class="entry_description">
16009              <p>A matrix that transforms white balanced camera colors from the reference
16010sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
16011            </td>
16012
16013            <td class="entry_units">
16014            </td>
16015
16016            <td class="entry_range">
16017            </td>
16018
16019            <td class="entry_tags">
16020              <ul class="entry_tags">
16021                  <li><a href="#tag_DNG">DNG</a></li>
16022              </ul>
16023            </td>
16024
16025          </tr>
16026          <tr class="entries_header">
16027            <th class="th_details" colspan="5">Details</th>
16028          </tr>
16029          <tr class="entry_cont">
16030            <td class="entry_details" colspan="5">
16031              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
16032is used when processing raw buffer data.<wbr/></p>
16033<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
16034a color transform matrix that maps white balanced colors from the
16035reference sensor color space to the CIE XYZ color space with a D50 white
16036point.<wbr/></p>
16037<p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
16038this matrix is chosen so that the standard white point for this reference
16039illuminant in the reference sensor colorspace is mapped to D50 in the
16040CIE XYZ colorspace.<wbr/></p>
16041            </td>
16042          </tr>
16043
16044
16045          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16046           <!-- end of entry -->
16047        
16048                
16049          <tr class="entry" id="static_android.sensor.forwardMatrix2">
16050            <td class="entry_name
16051             " rowspan="3">
16052              android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
16053            </td>
16054            <td class="entry_type">
16055                <span class="entry_type_name">rational</span>
16056                <span class="entry_type_container">x</span>
16057
16058                <span class="entry_type_array">
16059                  3 x 3
16060                </span>
16061              <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
16062
16063
16064
16065                <div class="entry_type_notes">3x3 matrix in row-major-order</div>
16066
16067
16068            </td> <!-- entry_type -->
16069
16070            <td class="entry_description">
16071              <p>A matrix that transforms white balanced camera colors from the reference
16072sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
16073            </td>
16074
16075            <td class="entry_units">
16076            </td>
16077
16078            <td class="entry_range">
16079            </td>
16080
16081            <td class="entry_tags">
16082              <ul class="entry_tags">
16083                  <li><a href="#tag_DNG">DNG</a></li>
16084              </ul>
16085            </td>
16086
16087          </tr>
16088          <tr class="entries_header">
16089            <th class="th_details" colspan="5">Details</th>
16090          </tr>
16091          <tr class="entry_cont">
16092            <td class="entry_details" colspan="5">
16093              <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
16094is used when processing raw buffer data.<wbr/></p>
16095<p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
16096a color transform matrix that maps white balanced colors from the
16097reference sensor color space to the CIE XYZ color space with a D50 white
16098point.<wbr/></p>
16099<p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
16100this matrix is chosen so that the standard white point for this reference
16101illuminant in the reference sensor colorspace is mapped to D50 in the
16102CIE XYZ colorspace.<wbr/></p>
16103<p>This matrix will only be present if the second reference
16104illuminant is present.<wbr/></p>
16105            </td>
16106          </tr>
16107
16108
16109          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16110           <!-- end of entry -->
16111        
16112                
16113          <tr class="entry" id="static_android.sensor.baseGainFactor">
16114            <td class="entry_name
16115             " rowspan="1">
16116              android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
16117            </td>
16118            <td class="entry_type">
16119                <span class="entry_type_name">rational</span>
16120
16121              <span class="entry_type_visibility"> [system]</span>
16122
16123
16124
16125
16126
16127            </td> <!-- entry_type -->
16128
16129            <td class="entry_description">
16130              <p>Gain factor from electrons to raw units when
16131ISO=100</p>
16132            </td>
16133
16134            <td class="entry_units">
16135            </td>
16136
16137            <td class="entry_range">
16138            </td>
16139
16140            <td class="entry_tags">
16141              <ul class="entry_tags">
16142                  <li><a href="#tag_FUTURE">FUTURE</a></li>
16143              </ul>
16144            </td>
16145
16146          </tr>
16147
16148
16149          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16150           <!-- end of entry -->
16151        
16152                
16153          <tr class="entry" id="static_android.sensor.blackLevelPattern">
16154            <td class="entry_name
16155             " rowspan="3">
16156              android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
16157            </td>
16158            <td class="entry_type">
16159                <span class="entry_type_name">int32</span>
16160                <span class="entry_type_container">x</span>
16161
16162                <span class="entry_type_array">
16163                  4
16164                </span>
16165              <span class="entry_type_visibility"> [public]</span>
16166
16167
16168
16169                <div class="entry_type_notes">2x2 raw count block</div>
16170
16171
16172            </td> <!-- entry_type -->
16173
16174            <td class="entry_description">
16175              <p>A fixed black level offset for each of the color filter arrangement
16176(CFA) mosaic channels.<wbr/></p>
16177            </td>
16178
16179            <td class="entry_units">
16180            </td>
16181
16182            <td class="entry_range">
16183              <p>&gt;= 0 for each.<wbr/></p>
16184            </td>
16185
16186            <td class="entry_tags">
16187              <ul class="entry_tags">
16188                  <li><a href="#tag_DNG">DNG</a></li>
16189              </ul>
16190            </td>
16191
16192          </tr>
16193          <tr class="entries_header">
16194            <th class="th_details" colspan="5">Details</th>
16195          </tr>
16196          <tr class="entry_cont">
16197            <td class="entry_details" colspan="5">
16198              <p>This tag specifies the zero light value for each of the CFA mosaic
16199channels in the camera sensor.<wbr/>  The maximal value output by the
16200sensor 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>
16201<p>The values are given in row-column scan order,<wbr/> with the first value
16202corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
16203            </td>
16204          </tr>
16205
16206
16207          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16208           <!-- end of entry -->
16209        
16210                
16211          <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
16212            <td class="entry_name
16213             " rowspan="3">
16214              android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
16215            </td>
16216            <td class="entry_type">
16217                <span class="entry_type_name">int32</span>
16218
16219              <span class="entry_type_visibility"> [public]</span>
16220
16221
16222
16223
16224
16225            </td> <!-- entry_type -->
16226
16227            <td class="entry_description">
16228              <p>Maximum sensitivity that is implemented
16229purely through analog gain.<wbr/></p>
16230            </td>
16231
16232            <td class="entry_units">
16233            </td>
16234
16235            <td class="entry_range">
16236            </td>
16237
16238            <td class="entry_tags">
16239              <ul class="entry_tags">
16240                  <li><a href="#tag_V1">V1</a></li>
16241                  <li><a href="#tag_FULL">FULL</a></li>
16242              </ul>
16243            </td>
16244
16245          </tr>
16246          <tr class="entries_header">
16247            <th class="th_details" colspan="5">Details</th>
16248          </tr>
16249          <tr class="entry_cont">
16250            <td class="entry_details" colspan="5">
16251              <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
16252equal to this,<wbr/> all applied gain must be analog.<wbr/> For
16253values above this,<wbr/> the gain applied can be a mix of analog and
16254digital.<wbr/></p>
16255            </td>
16256          </tr>
16257
16258
16259          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16260           <!-- end of entry -->
16261        
16262                
16263          <tr class="entry" id="static_android.sensor.orientation">
16264            <td class="entry_name
16265             " rowspan="1">
16266              android.<wbr/>sensor.<wbr/>orientation
16267            </td>
16268            <td class="entry_type">
16269                <span class="entry_type_name">int32</span>
16270
16271              <span class="entry_type_visibility"> [public]</span>
16272
16273
16274
16275
16276
16277            </td> <!-- entry_type -->
16278
16279            <td class="entry_description">
16280              <p>Clockwise angle through which the output
16281image needs to be rotated to be upright on the device
16282screen in its native orientation.<wbr/> Also defines the
16283direction of rolling shutter readout,<wbr/> which is from top
16284to bottom in the sensor's coordinate system</p>
16285            </td>
16286
16287            <td class="entry_units">
16288              degrees clockwise rotation,<wbr/> only multiples of
16289          90
16290            </td>
16291
16292            <td class="entry_range">
16293              <p>0,<wbr/>90,<wbr/>180,<wbr/>270</p>
16294            </td>
16295
16296            <td class="entry_tags">
16297              <ul class="entry_tags">
16298                  <li><a href="#tag_BC">BC</a></li>
16299              </ul>
16300            </td>
16301
16302          </tr>
16303
16304
16305          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16306           <!-- end of entry -->
16307        
16308                
16309          <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
16310            <td class="entry_name
16311             " rowspan="3">
16312              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
16313            </td>
16314            <td class="entry_type">
16315                <span class="entry_type_name">int32</span>
16316                <span class="entry_type_container">x</span>
16317
16318                <span class="entry_type_array">
16319                  3
16320                </span>
16321              <span class="entry_type_visibility"> [system]</span>
16322
16323
16324
16325                <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
16326
16327
16328            </td> <!-- entry_type -->
16329
16330            <td class="entry_description">
16331              <p>The number of input samples for each dimension of
16332<a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
16333            </td>
16334
16335            <td class="entry_units">
16336            </td>
16337
16338            <td class="entry_range">
16339              <p>Hue &gt;= 1,<wbr/>
16340Saturation &gt;= 2,<wbr/>
16341Value &gt;= 1</p>
16342            </td>
16343
16344            <td class="entry_tags">
16345              <ul class="entry_tags">
16346                  <li><a href="#tag_DNG">DNG</a></li>
16347              </ul>
16348            </td>
16349
16350          </tr>
16351          <tr class="entries_header">
16352            <th class="th_details" colspan="5">Details</th>
16353          </tr>
16354          <tr class="entry_cont">
16355            <td class="entry_details" colspan="5">
16356              <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
16357dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the
16358dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
16359element.<wbr/></p>
16360            </td>
16361          </tr>
16362
16363
16364          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16365           <!-- end of entry -->
16366        
16367                
16368          <tr class="entry" id="static_android.sensor.availableTestPatternModes">
16369            <td class="entry_name
16370             " rowspan="1">
16371              android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
16372            </td>
16373            <td class="entry_type">
16374                <span class="entry_type_name">int32</span>
16375                <span class="entry_type_container">x</span>
16376
16377                <span class="entry_type_array">
16378                  n
16379                </span>
16380              <span class="entry_type_visibility"> [public]</span>
16381
16382
16383
16384                <div class="entry_type_notes">list of enums</div>
16385
16386
16387            </td> <!-- entry_type -->
16388
16389            <td class="entry_description">
16390              <p>Optional.<wbr/> Defaults to [OFF].<wbr/> Lists the supported test
16391pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>.<wbr/></p>
16392            </td>
16393
16394            <td class="entry_units">
16395            </td>
16396
16397            <td class="entry_range">
16398              <p>Must include OFF.<wbr/> All custom modes must be &gt;= CUSTOM1</p>
16399            </td>
16400
16401            <td class="entry_tags">
16402            </td>
16403
16404          </tr>
16405
16406
16407          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16408           <!-- end of entry -->
16409        
16410        
16411
16412      <!-- end of kind -->
16413      </tbody>
16414      <tr><td colspan="6" class="kind">dynamic</td></tr>
16415
16416      <thead class="entries_header">
16417        <tr>
16418          <th class="th_name">Property Name</th>
16419          <th class="th_type">Type</th>
16420          <th class="th_description">Description</th>
16421          <th class="th_units">Units</th>
16422          <th class="th_range">Range</th>
16423          <th class="th_tags">Tags</th>
16424        </tr>
16425      </thead>
16426
16427      <tbody>
16428
16429        
16430
16431        
16432
16433        
16434
16435        
16436
16437                
16438          <tr class="entry" id="dynamic_android.sensor.exposureTime">
16439            <td class="entry_name
16440             " rowspan="3">
16441              android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
16442            </td>
16443            <td class="entry_type">
16444                <span class="entry_type_name">int64</span>
16445
16446              <span class="entry_type_visibility"> [public]</span>
16447
16448
16449
16450
16451
16452            </td> <!-- entry_type -->
16453
16454            <td class="entry_description">
16455              <p>Duration each pixel is exposed to
16456light.<wbr/></p>
16457            </td>
16458
16459            <td class="entry_units">
16460              nanoseconds
16461            </td>
16462
16463            <td class="entry_range">
16464              <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
16465            </td>
16466
16467            <td class="entry_tags">
16468              <ul class="entry_tags">
16469                  <li><a href="#tag_V1">V1</a></li>
16470              </ul>
16471            </td>
16472
16473          </tr>
16474          <tr class="entries_header">
16475            <th class="th_details" colspan="5">Details</th>
16476          </tr>
16477          <tr class="entry_cont">
16478            <td class="entry_details" colspan="5">
16479              <p>If the sensor can't expose this exact duration,<wbr/> it should shorten the
16480duration exposed to the nearest possible value (rather than expose longer).<wbr/></p>
16481            </td>
16482          </tr>
16483
16484
16485          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16486           <!-- end of entry -->
16487        
16488                
16489          <tr class="entry" id="dynamic_android.sensor.frameDuration">
16490            <td class="entry_name
16491             " rowspan="5">
16492              android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
16493            </td>
16494            <td class="entry_type">
16495                <span class="entry_type_name">int64</span>
16496
16497              <span class="entry_type_visibility"> [public]</span>
16498
16499
16500
16501
16502
16503            </td> <!-- entry_type -->
16504
16505            <td class="entry_description">
16506              <p>Duration from start of frame exposure to
16507start of next frame exposure.<wbr/></p>
16508            </td>
16509
16510            <td class="entry_units">
16511              nanoseconds
16512            </td>
16513
16514            <td class="entry_range">
16515              <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
16516<a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
16517is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
16518            </td>
16519
16520            <td class="entry_tags">
16521              <ul class="entry_tags">
16522                  <li><a href="#tag_V1">V1</a></li>
16523              </ul>
16524            </td>
16525
16526          </tr>
16527          <tr class="entries_header">
16528            <th class="th_details" colspan="5">Details</th>
16529          </tr>
16530          <tr class="entry_cont">
16531            <td class="entry_details" colspan="5">
16532              <p>The maximum frame rate that can be supported by a camera subsystem is
16533a function of many factors:</p>
16534<ul>
16535<li>Requested resolutions of output image streams</li>
16536<li>Availability of binning /<wbr/> skipping modes on the imager</li>
16537<li>The bandwidth of the imager interface</li>
16538<li>The bandwidth of the various ISP processing blocks</li>
16539</ul>
16540<p>Since these factors can vary greatly between different ISPs and
16541sensors,<wbr/> the camera abstraction tries to represent the bandwidth
16542restrictions with as simple a model as possible.<wbr/></p>
16543<p>The model presented has the following characteristics:</p>
16544<ul>
16545<li>The image sensor is always configured to output the smallest
16546resolution possible given the application's requested output stream
16547sizes.<wbr/>  The smallest resolution is defined as being at least as large
16548as the largest requested output stream size; the camera pipeline must
16549never digitally upsample sensor data when the crop region covers the
16550whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
16551resolutions are configured,<wbr/> the sensor can provide a higher frame
16552rate.<wbr/></li>
16553<li>Since any request may use any or all the currently configured
16554output streams,<wbr/> the sensor and ISP must be configured to support
16555scaling a single capture to all the streams at the same time.<wbr/>  This
16556means the camera pipeline must be ready to produce the largest
16557requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
16558frame rate of a given configured stream set is governed only by the
16559largest requested stream resolution.<wbr/></li>
16560<li>Using more than one output stream in a request does not affect the
16561frame duration.<wbr/></li>
16562<li>Certain format-streams may need to do additional background processing
16563before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
16564can run concurrently to the rest of the camera pipeline,<wbr/> but
16565cannot process more than 1 capture at a time.<wbr/></li>
16566</ul>
16567<p>The necessary information for the application,<wbr/> given the model above,<wbr/>
16568is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field
16569using StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size).<wbr/>
16570These are used to determine the maximum frame rate /<wbr/> minimum frame
16571duration that is possible for a given stream configuration.<wbr/></p>
16572<p>Specifically,<wbr/> the application can use the following rules to
16573determine the minimum frame duration it can request from the camera
16574device:</p>
16575<ol>
16576<li>Let the set of currently configured input/<wbr/>output streams
16577be called <code>S</code>.<wbr/></li>
16578<li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by
16579looking it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using
16580StreamConfigurationMap#getOutputMinFrameDuration(int,<wbr/> Size) (with
16581its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called
16582<code>F</code>.<wbr/></li>
16583<li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
16584for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
16585used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
16586</ol>
16587<p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in
16588StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size) using its
16589respective size/<wbr/>format),<wbr/> then the frame duration in
16590<code>F</code> determines the steady state frame rate that the application will
16591get if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind
16592of request be called <code>Rsimple</code>.<wbr/></p>
16593<p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
16594by a single capture of a new request <code>Rstall</code> (which has at least
16595one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
16596same minimum frame duration this will not cause a frame rate loss
16597if all buffers from the previous <code>Rstall</code> have already been
16598delivered.<wbr/></p>
16599<p>For more details about stalling,<wbr/> see
16600StreamConfigurationMap#getOutputStallDuration(int,<wbr/>Size).<wbr/></p>
16601            </td>
16602          </tr>
16603
16604          <tr class="entries_header">
16605            <th class="th_details" colspan="5">HAL Implementation Details</th>
16606          </tr>
16607          <tr class="entry_cont">
16608            <td class="entry_details" colspan="5">
16609              <p>For more details about stalling,<wbr/> see
16610<a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
16611            </td>
16612          </tr>
16613
16614          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16615           <!-- end of entry -->
16616        
16617                
16618          <tr class="entry" id="dynamic_android.sensor.sensitivity">
16619            <td class="entry_name
16620             " rowspan="3">
16621              android.<wbr/>sensor.<wbr/>sensitivity
16622            </td>
16623            <td class="entry_type">
16624                <span class="entry_type_name">int32</span>
16625
16626              <span class="entry_type_visibility"> [public]</span>
16627
16628
16629
16630
16631
16632            </td> <!-- entry_type -->
16633
16634            <td class="entry_description">
16635              <p>Gain applied to image data.<wbr/> Must be
16636implemented through analog gain only if set to values
16637below 'maximum analog sensitivity'.<wbr/></p>
16638<p>If the sensor can't apply this exact gain,<wbr/> it should lessen the
16639gain to the nearest possible value (rather than gain more).<wbr/></p>
16640            </td>
16641
16642            <td class="entry_units">
16643              ISO arithmetic units
16644            </td>
16645
16646            <td class="entry_range">
16647              <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
16648            </td>
16649
16650            <td class="entry_tags">
16651              <ul class="entry_tags">
16652                  <li><a href="#tag_V1">V1</a></li>
16653              </ul>
16654            </td>
16655
16656          </tr>
16657          <tr class="entries_header">
16658            <th class="th_details" colspan="5">Details</th>
16659          </tr>
16660          <tr class="entry_cont">
16661            <td class="entry_details" colspan="5">
16662              <p>ISO 12232:2006 REI method</p>
16663            </td>
16664          </tr>
16665
16666
16667          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16668           <!-- end of entry -->
16669        
16670                
16671          <tr class="entry" id="dynamic_android.sensor.timestamp">
16672            <td class="entry_name
16673             " rowspan="3">
16674              android.<wbr/>sensor.<wbr/>timestamp
16675            </td>
16676            <td class="entry_type">
16677                <span class="entry_type_name">int64</span>
16678
16679              <span class="entry_type_visibility"> [public]</span>
16680
16681
16682
16683
16684
16685            </td> <!-- entry_type -->
16686
16687            <td class="entry_description">
16688              <p>Time at start of exposure of first
16689row</p>
16690            </td>
16691
16692            <td class="entry_units">
16693              nanoseconds
16694            </td>
16695
16696            <td class="entry_range">
16697              <p>&gt; 0</p>
16698            </td>
16699
16700            <td class="entry_tags">
16701              <ul class="entry_tags">
16702                  <li><a href="#tag_BC">BC</a></li>
16703              </ul>
16704            </td>
16705
16706          </tr>
16707          <tr class="entries_header">
16708            <th class="th_details" colspan="5">Details</th>
16709          </tr>
16710          <tr class="entry_cont">
16711            <td class="entry_details" colspan="5">
16712              <p>Monotonic,<wbr/> should be synced to other timestamps in
16713system</p>
16714            </td>
16715          </tr>
16716
16717
16718          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16719           <!-- end of entry -->
16720        
16721                
16722          <tr class="entry" id="dynamic_android.sensor.temperature">
16723            <td class="entry_name
16724             " rowspan="1">
16725              android.<wbr/>sensor.<wbr/>temperature
16726            </td>
16727            <td class="entry_type">
16728                <span class="entry_type_name">float</span>
16729
16730              <span class="entry_type_visibility"> [system]</span>
16731
16732
16733
16734
16735
16736            </td> <!-- entry_type -->
16737
16738            <td class="entry_description">
16739              <p>The temperature of the sensor,<wbr/> sampled at the time
16740exposure began for this frame.<wbr/></p>
16741<p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
16742somewhere close to it.<wbr/></p>
16743            </td>
16744
16745            <td class="entry_units">
16746              celsius
16747            </td>
16748
16749            <td class="entry_range">
16750              <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
16751            </td>
16752
16753            <td class="entry_tags">
16754              <ul class="entry_tags">
16755                  <li><a href="#tag_FUTURE">FUTURE</a></li>
16756              </ul>
16757            </td>
16758
16759          </tr>
16760
16761
16762          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16763           <!-- end of entry -->
16764        
16765                
16766          <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
16767            <td class="entry_name
16768             " rowspan="3">
16769              android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
16770            </td>
16771            <td class="entry_type">
16772                <span class="entry_type_name">rational</span>
16773                <span class="entry_type_container">x</span>
16774
16775                <span class="entry_type_array">
16776                  3
16777                </span>
16778              <span class="entry_type_visibility"> [public]</span>
16779
16780
16781
16782
16783
16784            </td> <!-- entry_type -->
16785
16786            <td class="entry_description">
16787              <p>The estimated camera neutral color in the native sensor colorspace at
16788the time of capture.<wbr/></p>
16789            </td>
16790
16791            <td class="entry_units">
16792            </td>
16793
16794            <td class="entry_range">
16795            </td>
16796
16797            <td class="entry_tags">
16798              <ul class="entry_tags">
16799                  <li><a href="#tag_DNG">DNG</a></li>
16800              </ul>
16801            </td>
16802
16803          </tr>
16804          <tr class="entries_header">
16805            <th class="th_details" colspan="5">Details</th>
16806          </tr>
16807          <tr class="entry_cont">
16808            <td class="entry_details" colspan="5">
16809              <p>This value gives the neutral color point encoded as an RGB value in the
16810native sensor color space.<wbr/>  The neutral color point indicates the
16811currently estimated white point of the scene illumination.<wbr/>  It can be
16812used to interpolate between the provided color transforms when
16813processing raw sensor data.<wbr/></p>
16814<p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
16815            </td>
16816          </tr>
16817
16818
16819          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16820           <!-- end of entry -->
16821        
16822                
16823          <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
16824            <td class="entry_name
16825             " rowspan="3">
16826              android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
16827            </td>
16828            <td class="entry_type">
16829                <span class="entry_type_name">float</span>
16830                <span class="entry_type_container">x</span>
16831
16832                <span class="entry_type_array">
16833                  hue_samples x saturation_samples x value_samples x 3
16834                </span>
16835              <span class="entry_type_visibility"> [system]</span>
16836
16837
16838
16839                <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
16840
16841
16842            </td> <!-- entry_type -->
16843
16844            <td class="entry_description">
16845              <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
16846for each pixel.<wbr/></p>
16847            </td>
16848
16849            <td class="entry_units">
16850              
16851          Hue shift is given in degrees; saturation and value scale factors are
16852          unitless.<wbr/>
16853          
16854            </td>
16855
16856            <td class="entry_range">
16857            </td>
16858
16859            <td class="entry_tags">
16860              <ul class="entry_tags">
16861                  <li><a href="#tag_DNG">DNG</a></li>
16862              </ul>
16863            </td>
16864
16865          </tr>
16866          <tr class="entries_header">
16867            <th class="th_details" colspan="5">Details</th>
16868          </tr>
16869          <tr class="entry_cont">
16870            <td class="entry_details" colspan="5">
16871              <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
16872<a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
16873<p>Each entry of this map contains three floats corresponding to the
16874hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
16875hue shift has the lowest index.<wbr/> The map entries are stored in the tag
16876in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
16877hue divisions in the middle loop,<wbr/> and the saturation divisions in the
16878inner loop.<wbr/> All zero input saturation entries are required to have a
16879value scale factor of 1.<wbr/>0.<wbr/></p>
16880            </td>
16881          </tr>
16882
16883
16884          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16885           <!-- end of entry -->
16886        
16887                
16888          <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
16889            <td class="entry_name
16890             " rowspan="3">
16891              android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
16892            </td>
16893            <td class="entry_type">
16894                <span class="entry_type_name">float</span>
16895                <span class="entry_type_container">x</span>
16896
16897                <span class="entry_type_array">
16898                  samples x 2
16899                </span>
16900              <span class="entry_type_visibility"> [system]</span>
16901
16902
16903
16904                <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
16905
16906
16907            </td> <!-- entry_type -->
16908
16909            <td class="entry_description">
16910              <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
16911            </td>
16912
16913            <td class="entry_units">
16914            </td>
16915
16916            <td class="entry_range">
16917              <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
16918<code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
16919sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
16920            </td>
16921
16922            <td class="entry_tags">
16923              <ul class="entry_tags">
16924                  <li><a href="#tag_DNG">DNG</a></li>
16925              </ul>
16926            </td>
16927
16928          </tr>
16929          <tr class="entries_header">
16930            <th class="th_details" colspan="5">Details</th>
16931          </tr>
16932          <tr class="entry_cont">
16933            <td class="entry_details" colspan="5">
16934              <p>This tag contains a default tone curve that can be applied while
16935processing the image as a starting point for user adjustments.<wbr/>
16936The curve is specified as a list of value pairs in linear gamma.<wbr/>
16937The curve is interpolated using a cubic spline.<wbr/></p>
16938            </td>
16939          </tr>
16940
16941
16942          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16943           <!-- end of entry -->
16944        
16945                
16946          <tr class="entry" id="dynamic_android.sensor.greenSplit">
16947            <td class="entry_name
16948             " rowspan="5">
16949              android.<wbr/>sensor.<wbr/>green<wbr/>Split
16950            </td>
16951            <td class="entry_type">
16952                <span class="entry_type_name">float</span>
16953
16954              <span class="entry_type_visibility"> [public]</span>
16955
16956
16957
16958
16959
16960            </td> <!-- entry_type -->
16961
16962            <td class="entry_description">
16963              <p>The worst-case divergence between Bayer green channels.<wbr/></p>
16964            </td>
16965
16966            <td class="entry_units">
16967            </td>
16968
16969            <td class="entry_range">
16970              <p>&gt;= 0</p>
16971            </td>
16972
16973            <td class="entry_tags">
16974              <ul class="entry_tags">
16975                  <li><a href="#tag_DNG">DNG</a></li>
16976              </ul>
16977            </td>
16978
16979          </tr>
16980          <tr class="entries_header">
16981            <th class="th_details" colspan="5">Details</th>
16982          </tr>
16983          <tr class="entry_cont">
16984            <td class="entry_details" colspan="5">
16985              <p>This value is an estimate of the worst case split between the
16986Bayer green channels in the red and blue rows in the sensor color
16987filter array.<wbr/></p>
16988<p>The green split is calculated as follows:</p>
16989<ol>
16990<li>A 5x5 pixel (or larger) window W within the active sensor array is
16991chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
16992mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
16993chosen is implementation defined,<wbr/> and should be chosen to provide a
16994green split estimate that is both representative of the entire image
16995for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
16996<li>The arithmetic mean of the green channels from the red
16997rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
16998<li>The arithmetic mean of the green channels from the blue
16999rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
17000<li>The maximum ratio R of the two means is computed as follows:
17001<code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
17002</ol>
17003<p>The ratio R is the green split divergence reported for this property,<wbr/>
17004which represents how much the green channels differ in the mosaic
17005pattern.<wbr/>  This value is typically used to determine the treatment of
17006the green mosaic channels when demosaicing.<wbr/></p>
17007<p>The green split value can be roughly interpreted as follows:</p>
17008<ul>
17009<li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
17010<li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
17011correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
17012<li>R &gt; 1.<wbr/>20 will require strong software correction to produce
17013a usuable image (&gt;20% divergence).<wbr/></li>
17014</ul>
17015            </td>
17016          </tr>
17017
17018          <tr class="entries_header">
17019            <th class="th_details" colspan="5">HAL Implementation Details</th>
17020          </tr>
17021          <tr class="entry_cont">
17022            <td class="entry_details" colspan="5">
17023              <p>The green split given may be a static value based on prior
17024characterization of the camera sensor using the green split
17025calculation method given here over a large,<wbr/> representative,<wbr/> sample
17026set of images.<wbr/>  Other methods of calculation that produce equivalent
17027results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
17028            </td>
17029          </tr>
17030
17031          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17032           <!-- end of entry -->
17033        
17034                
17035          <tr class="entry" id="dynamic_android.sensor.testPatternData">
17036            <td class="entry_name
17037             " rowspan="5">
17038              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
17039            </td>
17040            <td class="entry_type">
17041                <span class="entry_type_name">int32</span>
17042                <span class="entry_type_container">x</span>
17043
17044                <span class="entry_type_array">
17045                  4
17046                </span>
17047              <span class="entry_type_visibility"> [public]</span>
17048
17049
17050
17051
17052
17053            </td> <!-- entry_type -->
17054
17055            <td class="entry_description">
17056              <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
17057when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
17058            </td>
17059
17060            <td class="entry_units">
17061            </td>
17062
17063            <td class="entry_range">
17064              <p>Optional.<wbr/>
17065Must be supported if <a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a> contains
17066SOLID_<wbr/>COLOR.<wbr/></p>
17067            </td>
17068
17069            <td class="entry_tags">
17070            </td>
17071
17072          </tr>
17073          <tr class="entries_header">
17074            <th class="th_details" colspan="5">Details</th>
17075          </tr>
17076          <tr class="entry_cont">
17077            <td class="entry_details" colspan="5">
17078              <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
17079The camera device then uses the most significant X bits
17080that correspond to how many bits are in its Bayer raw sensor
17081output.<wbr/></p>
17082<p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
1708310 most significant bits from each color channel.<wbr/></p>
17084            </td>
17085          </tr>
17086
17087          <tr class="entries_header">
17088            <th class="th_details" colspan="5">HAL Implementation Details</th>
17089          </tr>
17090          <tr class="entry_cont">
17091            <td class="entry_details" colspan="5">
17092              
17093            </td>
17094          </tr>
17095
17096          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17097           <!-- end of entry -->
17098        
17099                
17100          <tr class="entry" id="dynamic_android.sensor.testPatternMode">
17101            <td class="entry_name
17102             " rowspan="5">
17103              android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
17104            </td>
17105            <td class="entry_type">
17106                <span class="entry_type_name entry_type_name_enum">int32</span>
17107
17108              <span class="entry_type_visibility"> [public]</span>
17109
17110
17111
17112
17113                <ul class="entry_type_enum">
17114                  <li>
17115                    <span class="entry_type_enum_name">OFF</span>
17116                    <span class="entry_type_enum_notes"><p>Default.<wbr/> No test pattern mode is used,<wbr/> and the camera
17117device returns captures from the image sensor.<wbr/></p></span>
17118                  </li>
17119                  <li>
17120                    <span class="entry_type_enum_name">SOLID_COLOR</span>
17121                    <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
17122respective color channel provided in
17123<a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
17124<p>For example:</p>
17125<pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
17126</code></pre>
17127<p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
17128<pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
17129</code></pre>
17130<p>All red pixels are 100% red.<wbr/> Only the odd green pixels
17131are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
17132                  </li>
17133                  <li>
17134                    <span class="entry_type_enum_name">COLOR_BARS</span>
17135                    <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
17136<p>The vertical bars (left-to-right) are as follows:</p>
17137<ul>
17138<li>100% white</li>
17139<li>yellow</li>
17140<li>cyan</li>
17141<li>green</li>
17142<li>magenta</li>
17143<li>red</li>
17144<li>blue</li>
17145<li>black</li>
17146</ul>
17147<p>In general the image would look like the following:</p>
17148<pre><code>W Y C G M R B K
17149W Y C G M R B K
17150W Y C G M R B K
17151W Y C G M R B K
17152W Y C G M R B K
17153.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
17154.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
17155.<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
17156
17157(B = Blue,<wbr/> K = Black)
17158</code></pre>
17159<p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
17160When this is not possible,<wbr/> the bar size should be rounded
17161down to the nearest integer and the pattern can repeat
17162on the right side.<wbr/></p>
17163<p>Each bar's height must always take up the full sensor
17164pixel array height.<wbr/></p>
17165<p>Each pixel in this test pattern must be set to either
171660% intensity or 100% intensity.<wbr/></p></span>
17167                  </li>
17168                  <li>
17169                    <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
17170                    <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
17171each bar should start at its specified color at the top,<wbr/>
17172and fade to gray at the bottom.<wbr/></p>
17173<p>Furthermore each bar is further subdivided into a left and
17174right half.<wbr/> The left half should have a smooth gradient,<wbr/>
17175and the right half should have a quantized gradient.<wbr/></p>
17176<p>In particular,<wbr/> the right half's should consist of blocks of the
17177same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
17178<p>The least significant bits in the quantized gradient should
17179be copied from the most significant bits of the smooth gradient.<wbr/></p>
17180<p>The height of each bar should always be a multiple of 128.<wbr/>
17181When this is not the case,<wbr/> the pattern should repeat at the bottom
17182of the image.<wbr/></p></span>
17183                  </li>
17184                  <li>
17185                    <span class="entry_type_enum_name">PN9</span>
17186                    <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
17187generated from a PN9 512-bit sequence (typically implemented
17188in hardware with a linear feedback shift register).<wbr/></p>
17189<p>The generator should be reset at the beginning of each frame,<wbr/>
17190and thus each subsequent raw frame with this test pattern should
17191be exactly the same as the last.<wbr/></p></span>
17192                  </li>
17193                  <li>
17194                    <span class="entry_type_enum_name">CUSTOM1</span>
17195                    <span class="entry_type_enum_value">256</span>
17196                    <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
17197available only on this camera device are at least this numeric
17198value.<wbr/></p>
17199<p>All of the custom test patterns will be static
17200(that is the raw image must not vary from frame to frame).<wbr/></p></span>
17201                  </li>
17202                </ul>
17203
17204            </td> <!-- entry_type -->
17205
17206            <td class="entry_description">
17207              <p>When enabled,<wbr/> the sensor sends a test pattern instead of
17208doing a real exposure from the camera.<wbr/></p>
17209            </td>
17210
17211            <td class="entry_units">
17212            </td>
17213
17214            <td class="entry_range">
17215              <p>Optional.<wbr/> Defaults to OFF.<wbr/> Value must be one of
17216<a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
17217            </td>
17218
17219            <td class="entry_tags">
17220            </td>
17221
17222          </tr>
17223          <tr class="entries_header">
17224            <th class="th_details" colspan="5">Details</th>
17225          </tr>
17226          <tr class="entry_cont">
17227            <td class="entry_details" colspan="5">
17228              <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
17229by android.<wbr/>sensor.<wbr/>* should be ignored.<wbr/> All other controls should
17230work as normal.<wbr/></p>
17231<p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
17232occur (and that the test pattern remain unmodified,<wbr/> since the flash
17233would not actually affect it).<wbr/></p>
17234            </td>
17235          </tr>
17236
17237          <tr class="entries_header">
17238            <th class="th_details" colspan="5">HAL Implementation Details</th>
17239          </tr>
17240          <tr class="entry_cont">
17241            <td class="entry_details" colspan="5">
17242              <p>All test patterns are specified in the Bayer domain.<wbr/></p>
17243<p>The HAL may choose to substitute test patterns from the sensor
17244with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
17245indistinguishable to the ISP whether the data came from the
17246sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
17247            </td>
17248          </tr>
17249
17250          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17251           <!-- end of entry -->
17252        
17253        
17254
17255      <!-- end of kind -->
17256      </tbody>
17257
17258  <!-- end of section -->
17259  <tr><td colspan="6" id="section_shading" class="section">shading</td></tr>
17260
17261
17262      <tr><td colspan="6" class="kind">controls</td></tr>
17263
17264      <thead class="entries_header">
17265        <tr>
17266          <th class="th_name">Property Name</th>
17267          <th class="th_type">Type</th>
17268          <th class="th_description">Description</th>
17269          <th class="th_units">Units</th>
17270          <th class="th_range">Range</th>
17271          <th class="th_tags">Tags</th>
17272        </tr>
17273      </thead>
17274
17275      <tbody>
17276
17277        
17278
17279        
17280
17281        
17282
17283        
17284
17285                
17286          <tr class="entry" id="controls_android.shading.mode">
17287            <td class="entry_name
17288             " rowspan="3">
17289              android.<wbr/>shading.<wbr/>mode
17290            </td>
17291            <td class="entry_type">
17292                <span class="entry_type_name entry_type_name_enum">byte</span>
17293
17294              <span class="entry_type_visibility"> [public]</span>
17295
17296
17297
17298
17299                <ul class="entry_type_enum">
17300                  <li>
17301                    <span class="entry_type_enum_name">OFF</span>
17302                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied</p></span>
17303                  </li>
17304                  <li>
17305                    <span class="entry_type_enum_name">FAST</span>
17306                    <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor raw output</p></span>
17307                  </li>
17308                  <li>
17309                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
17310                    <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high quality</p></span>
17311                  </li>
17312                </ul>
17313
17314            </td> <!-- entry_type -->
17315
17316            <td class="entry_description">
17317              <p>Quality of lens shading correction applied
17318to the image data.<wbr/></p>
17319            </td>
17320
17321            <td class="entry_units">
17322            </td>
17323
17324            <td class="entry_range">
17325            </td>
17326
17327            <td class="entry_tags">
17328            </td>
17329
17330          </tr>
17331          <tr class="entries_header">
17332            <th class="th_details" colspan="5">Details</th>
17333          </tr>
17334          <tr class="entry_cont">
17335            <td class="entry_details" colspan="5">
17336              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
17337camera device,<wbr/> and an identity lens shading map data will be provided
17338if <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
17339shading map with size specified as <code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]</code>,<wbr/>
17340the output <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> for this case will be an identity map
17341shown below:</p>
17342<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/>
17343    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/>
17344  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/>
17345    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/>
17346  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/>
17347    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 ]
17348</code></pre>
17349<p>When set to other modes,<wbr/> lens shading correction will be applied by the
17350camera device.<wbr/> Applications can request lens shading map data by setting
17351<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
17352lens shading map data in <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a>,<wbr/> with size specified
17353by <a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a>; the returned shading map data will be the one
17354applied by the camera device for this capture request.<wbr/></p>
17355<p>The shading map data may depend on the AE and AWB statistics,<wbr/> therefore the reliability
17356of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and AWB are in
17357AUTO 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> OFF),<wbr/>
17358to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB to
17359be converged before using the returned shading map data.<wbr/></p>
17360            </td>
17361          </tr>
17362
17363
17364          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17365           <!-- end of entry -->
17366        
17367                
17368          <tr class="entry" id="controls_android.shading.strength">
17369            <td class="entry_name
17370             " rowspan="1">
17371              android.<wbr/>shading.<wbr/>strength
17372            </td>
17373            <td class="entry_type">
17374                <span class="entry_type_name">byte</span>
17375
17376              <span class="entry_type_visibility"> [system]</span>
17377
17378
17379
17380
17381
17382            </td> <!-- entry_type -->
17383
17384            <td class="entry_description">
17385              <p>Control the amount of shading correction
17386applied to the images</p>
17387            </td>
17388
17389            <td class="entry_units">
17390              unitless: 1-10; 10 is full shading
17391          compensation
17392            </td>
17393
17394            <td class="entry_range">
17395            </td>
17396
17397            <td class="entry_tags">
17398              <ul class="entry_tags">
17399                  <li><a href="#tag_FUTURE">FUTURE</a></li>
17400              </ul>
17401            </td>
17402
17403          </tr>
17404
17405
17406          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17407           <!-- end of entry -->
17408        
17409        
17410
17411      <!-- end of kind -->
17412      </tbody>
17413      <tr><td colspan="6" class="kind">dynamic</td></tr>
17414
17415      <thead class="entries_header">
17416        <tr>
17417          <th class="th_name">Property Name</th>
17418          <th class="th_type">Type</th>
17419          <th class="th_description">Description</th>
17420          <th class="th_units">Units</th>
17421          <th class="th_range">Range</th>
17422          <th class="th_tags">Tags</th>
17423        </tr>
17424      </thead>
17425
17426      <tbody>
17427
17428        
17429
17430        
17431
17432        
17433
17434        
17435
17436                
17437          <tr class="entry" id="dynamic_android.shading.mode">
17438            <td class="entry_name
17439             " rowspan="3">
17440              android.<wbr/>shading.<wbr/>mode
17441            </td>
17442            <td class="entry_type">
17443                <span class="entry_type_name entry_type_name_enum">byte</span>
17444
17445              <span class="entry_type_visibility"> [public]</span>
17446
17447
17448
17449
17450                <ul class="entry_type_enum">
17451                  <li>
17452                    <span class="entry_type_enum_name">OFF</span>
17453                    <span class="entry_type_enum_notes"><p>No lens shading correction is applied</p></span>
17454                  </li>
17455                  <li>
17456                    <span class="entry_type_enum_name">FAST</span>
17457                    <span class="entry_type_enum_notes"><p>Must not slow down frame rate relative to sensor raw output</p></span>
17458                  </li>
17459                  <li>
17460                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
17461                    <span class="entry_type_enum_notes"><p>Frame rate may be reduced by high quality</p></span>
17462                  </li>
17463                </ul>
17464
17465            </td> <!-- entry_type -->
17466
17467            <td class="entry_description">
17468              <p>Quality of lens shading correction applied
17469to the image data.<wbr/></p>
17470            </td>
17471
17472            <td class="entry_units">
17473            </td>
17474
17475            <td class="entry_range">
17476            </td>
17477
17478            <td class="entry_tags">
17479            </td>
17480
17481          </tr>
17482          <tr class="entries_header">
17483            <th class="th_details" colspan="5">Details</th>
17484          </tr>
17485          <tr class="entry_cont">
17486            <td class="entry_details" colspan="5">
17487              <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
17488camera device,<wbr/> and an identity lens shading map data will be provided
17489if <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
17490shading map with size specified as <code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]</code>,<wbr/>
17491the output <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> for this case will be an identity map
17492shown below:</p>
17493<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/>
17494    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/>
17495  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/>
17496    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/>
17497  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/>
17498    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 ]
17499</code></pre>
17500<p>When set to other modes,<wbr/> lens shading correction will be applied by the
17501camera device.<wbr/> Applications can request lens shading map data by setting
17502<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
17503lens shading map data in <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a>,<wbr/> with size specified
17504by <a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a>; the returned shading map data will be the one
17505applied by the camera device for this capture request.<wbr/></p>
17506<p>The shading map data may depend on the AE and AWB statistics,<wbr/> therefore the reliability
17507of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and AWB are in
17508AUTO 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> OFF),<wbr/>
17509to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB to
17510be converged before using the returned shading map data.<wbr/></p>
17511            </td>
17512          </tr>
17513
17514
17515          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17516           <!-- end of entry -->
17517        
17518        
17519
17520      <!-- end of kind -->
17521      </tbody>
17522
17523  <!-- end of section -->
17524  <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr>
17525
17526
17527      <tr><td colspan="6" class="kind">controls</td></tr>
17528
17529      <thead class="entries_header">
17530        <tr>
17531          <th class="th_name">Property Name</th>
17532          <th class="th_type">Type</th>
17533          <th class="th_description">Description</th>
17534          <th class="th_units">Units</th>
17535          <th class="th_range">Range</th>
17536          <th class="th_tags">Tags</th>
17537        </tr>
17538      </thead>
17539
17540      <tbody>
17541
17542        
17543
17544        
17545
17546        
17547
17548        
17549
17550                
17551          <tr class="entry" id="controls_android.statistics.faceDetectMode">
17552            <td class="entry_name
17553             " rowspan="3">
17554              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
17555            </td>
17556            <td class="entry_type">
17557                <span class="entry_type_name entry_type_name_enum">byte</span>
17558
17559              <span class="entry_type_visibility"> [public]</span>
17560
17561
17562
17563
17564                <ul class="entry_type_enum">
17565                  <li>
17566                    <span class="entry_type_enum_name">OFF</span>
17567                  </li>
17568                  <li>
17569                    <span class="entry_type_enum_name">SIMPLE</span>
17570                    <span class="entry_type_enum_notes"><p>Optional Return rectangle and confidence
17571only</p></span>
17572                  </li>
17573                  <li>
17574                    <span class="entry_type_enum_name">FULL</span>
17575                    <span class="entry_type_enum_notes"><p>Optional Return all face
17576metadata</p></span>
17577                  </li>
17578                </ul>
17579
17580            </td> <!-- entry_type -->
17581
17582            <td class="entry_description">
17583              <p>State of the face detector
17584unit</p>
17585            </td>
17586
17587            <td class="entry_units">
17588            </td>
17589
17590            <td class="entry_range">
17591              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
17592            </td>
17593
17594            <td class="entry_tags">
17595              <ul class="entry_tags">
17596                  <li><a href="#tag_BC">BC</a></li>
17597              </ul>
17598            </td>
17599
17600          </tr>
17601          <tr class="entries_header">
17602            <th class="th_details" colspan="5">Details</th>
17603          </tr>
17604          <tr class="entry_cont">
17605            <td class="entry_details" colspan="5">
17606              <p>Whether face detection is enabled,<wbr/> and whether it
17607should output just the basic fields or the full set of
17608fields.<wbr/> Value must be one of the
17609<a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a>.<wbr/></p>
17610            </td>
17611          </tr>
17612
17613
17614          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17615           <!-- end of entry -->
17616        
17617                
17618          <tr class="entry" id="controls_android.statistics.histogramMode">
17619            <td class="entry_name
17620             " rowspan="1">
17621              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
17622            </td>
17623            <td class="entry_type">
17624                <span class="entry_type_name entry_type_name_enum">byte</span>
17625
17626              <span class="entry_type_visibility"> [system as boolean]</span>
17627
17628
17629
17630
17631                <ul class="entry_type_enum">
17632                  <li>
17633                    <span class="entry_type_enum_name">OFF</span>
17634                  </li>
17635                  <li>
17636                    <span class="entry_type_enum_name">ON</span>
17637                  </li>
17638                </ul>
17639
17640            </td> <!-- entry_type -->
17641
17642            <td class="entry_description">
17643              <p>Operating mode for histogram
17644generation</p>
17645            </td>
17646
17647            <td class="entry_units">
17648            </td>
17649
17650            <td class="entry_range">
17651            </td>
17652
17653            <td class="entry_tags">
17654              <ul class="entry_tags">
17655                  <li><a href="#tag_FUTURE">FUTURE</a></li>
17656              </ul>
17657            </td>
17658
17659          </tr>
17660
17661
17662          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17663           <!-- end of entry -->
17664        
17665                
17666          <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
17667            <td class="entry_name
17668             " rowspan="1">
17669              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
17670            </td>
17671            <td class="entry_type">
17672                <span class="entry_type_name entry_type_name_enum">byte</span>
17673
17674              <span class="entry_type_visibility"> [system as boolean]</span>
17675
17676
17677
17678
17679                <ul class="entry_type_enum">
17680                  <li>
17681                    <span class="entry_type_enum_name">OFF</span>
17682                  </li>
17683                  <li>
17684                    <span class="entry_type_enum_name">ON</span>
17685                  </li>
17686                </ul>
17687
17688            </td> <!-- entry_type -->
17689
17690            <td class="entry_description">
17691              <p>Operating mode for sharpness map
17692generation</p>
17693            </td>
17694
17695            <td class="entry_units">
17696            </td>
17697
17698            <td class="entry_range">
17699            </td>
17700
17701            <td class="entry_tags">
17702              <ul class="entry_tags">
17703                  <li><a href="#tag_FUTURE">FUTURE</a></li>
17704              </ul>
17705            </td>
17706
17707          </tr>
17708
17709
17710          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17711           <!-- end of entry -->
17712        
17713                
17714          <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
17715            <td class="entry_name
17716             " rowspan="3">
17717              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
17718            </td>
17719            <td class="entry_type">
17720                <span class="entry_type_name entry_type_name_enum">byte</span>
17721
17722              <span class="entry_type_visibility"> [public as boolean]</span>
17723
17724
17725
17726
17727                <ul class="entry_type_enum">
17728                  <li>
17729                    <span class="entry_type_enum_name">OFF</span>
17730                  </li>
17731                  <li>
17732                    <span class="entry_type_enum_name">ON</span>
17733                  </li>
17734                </ul>
17735
17736            </td> <!-- entry_type -->
17737
17738            <td class="entry_description">
17739              <p>Operating mode for hotpixel map generation.<wbr/></p>
17740            </td>
17741
17742            <td class="entry_units">
17743            </td>
17744
17745            <td class="entry_range">
17746            </td>
17747
17748            <td class="entry_tags">
17749              <ul class="entry_tags">
17750                  <li><a href="#tag_V1">V1</a></li>
17751                  <li><a href="#tag_DNG">DNG</a></li>
17752              </ul>
17753            </td>
17754
17755          </tr>
17756          <tr class="entries_header">
17757            <th class="th_details" colspan="5">Details</th>
17758          </tr>
17759          <tr class="entry_cont">
17760            <td class="entry_details" colspan="5">
17761              <p>If set to ON,<wbr/> a hotpixel map is returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/>
17762If set to OFF,<wbr/> no hotpixel map should be returned.<wbr/></p>
17763<p>This must be set to a valid mode from <a href="#static_android.statistics.info.availableHotPixelMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes</a>.<wbr/></p>
17764            </td>
17765          </tr>
17766
17767
17768          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17769           <!-- end of entry -->
17770        
17771                
17772          <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
17773            <td class="entry_name
17774             " rowspan="3">
17775              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
17776            </td>
17777            <td class="entry_type">
17778                <span class="entry_type_name entry_type_name_enum">byte</span>
17779
17780              <span class="entry_type_visibility"> [public]</span>
17781
17782
17783
17784
17785                <ul class="entry_type_enum">
17786                  <li>
17787                    <span class="entry_type_enum_name">OFF</span>
17788                  </li>
17789                  <li>
17790                    <span class="entry_type_enum_name">ON</span>
17791                  </li>
17792                </ul>
17793
17794            </td> <!-- entry_type -->
17795
17796            <td class="entry_description">
17797              <p>Whether the camera device will output the lens
17798shading map in output result metadata.<wbr/></p>
17799            </td>
17800
17801            <td class="entry_units">
17802            </td>
17803
17804            <td class="entry_range">
17805            </td>
17806
17807            <td class="entry_tags">
17808            </td>
17809
17810          </tr>
17811          <tr class="entries_header">
17812            <th class="th_details" colspan="5">Details</th>
17813          </tr>
17814          <tr class="entry_cont">
17815            <td class="entry_details" colspan="5">
17816              <p>When set to ON,<wbr/>
17817<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> must be provided in
17818the output result metadata.<wbr/></p>
17819            </td>
17820          </tr>
17821
17822
17823          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17824           <!-- end of entry -->
17825        
17826        
17827
17828      <!-- end of kind -->
17829      </tbody>
17830      <tr><td colspan="6" class="kind">static</td></tr>
17831
17832      <thead class="entries_header">
17833        <tr>
17834          <th class="th_name">Property Name</th>
17835          <th class="th_type">Type</th>
17836          <th class="th_description">Description</th>
17837          <th class="th_units">Units</th>
17838          <th class="th_range">Range</th>
17839          <th class="th_tags">Tags</th>
17840        </tr>
17841      </thead>
17842
17843      <tbody>
17844
17845        
17846
17847        
17848
17849        
17850
17851        
17852                
17853            
17854
17855                
17856          <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
17857            <td class="entry_name
17858             " rowspan="3">
17859              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
17860            </td>
17861            <td class="entry_type">
17862                <span class="entry_type_name">byte</span>
17863                <span class="entry_type_container">x</span>
17864
17865                <span class="entry_type_array">
17866                  n
17867                </span>
17868              <span class="entry_type_visibility"> [public as enumList]</span>
17869
17870
17871
17872                <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
17873
17874
17875            </td> <!-- entry_type -->
17876
17877            <td class="entry_description">
17878              <p>Which face detection modes are available,<wbr/>
17879if any</p>
17880            </td>
17881
17882            <td class="entry_units">
17883              List of enum:
17884            OFF
17885            SIMPLE
17886            FULL
17887            </td>
17888
17889            <td class="entry_range">
17890            </td>
17891
17892            <td class="entry_tags">
17893            </td>
17894
17895          </tr>
17896          <tr class="entries_header">
17897            <th class="th_details" colspan="5">Details</th>
17898          </tr>
17899          <tr class="entry_cont">
17900            <td class="entry_details" colspan="5">
17901              <p>OFF means face detection is disabled,<wbr/> it must
17902be included in the list.<wbr/></p>
17903<p>SIMPLE means the device supports the
17904<a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
17905<a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a> outputs.<wbr/></p>
17906<p>FULL means the device additionally supports the
17907<a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a> and
17908<a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a> outputs.<wbr/></p>
17909            </td>
17910          </tr>
17911
17912
17913          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17914           <!-- end of entry -->
17915        
17916                
17917          <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
17918            <td class="entry_name
17919             " rowspan="1">
17920              android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
17921            </td>
17922            <td class="entry_type">
17923                <span class="entry_type_name">int32</span>
17924
17925              <span class="entry_type_visibility"> [system]</span>
17926
17927
17928
17929
17930
17931            </td> <!-- entry_type -->
17932
17933            <td class="entry_description">
17934              <p>Number of histogram buckets
17935supported</p>
17936            </td>
17937
17938            <td class="entry_units">
17939            </td>
17940
17941            <td class="entry_range">
17942              <p>&gt;= 64</p>
17943            </td>
17944
17945            <td class="entry_tags">
17946              <ul class="entry_tags">
17947                  <li><a href="#tag_FUTURE">FUTURE</a></li>
17948              </ul>
17949            </td>
17950
17951          </tr>
17952
17953
17954          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17955           <!-- end of entry -->
17956        
17957                
17958          <tr class="entry" id="static_android.statistics.info.maxFaceCount">
17959            <td class="entry_name
17960             " rowspan="1">
17961              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
17962            </td>
17963            <td class="entry_type">
17964                <span class="entry_type_name">int32</span>
17965
17966              <span class="entry_type_visibility"> [public]</span>
17967
17968
17969
17970
17971
17972            </td> <!-- entry_type -->
17973
17974            <td class="entry_description">
17975              <p>Maximum number of simultaneously detectable
17976faces</p>
17977            </td>
17978
17979            <td class="entry_units">
17980            </td>
17981
17982            <td class="entry_range">
17983              <p>&gt;= 4 if <a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a> lists
17984modes besides OFF,<wbr/> otherwise 0</p>
17985            </td>
17986
17987            <td class="entry_tags">
17988              <ul class="entry_tags">
17989                  <li><a href="#tag_BC">BC</a></li>
17990              </ul>
17991            </td>
17992
17993          </tr>
17994
17995
17996          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17997           <!-- end of entry -->
17998        
17999                
18000          <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
18001            <td class="entry_name
18002             " rowspan="1">
18003              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
18004            </td>
18005            <td class="entry_type">
18006                <span class="entry_type_name">int32</span>
18007
18008              <span class="entry_type_visibility"> [system]</span>
18009
18010
18011
18012
18013
18014            </td> <!-- entry_type -->
18015
18016            <td class="entry_description">
18017              <p>Maximum value possible for a histogram
18018bucket</p>
18019            </td>
18020
18021            <td class="entry_units">
18022            </td>
18023
18024            <td class="entry_range">
18025            </td>
18026
18027            <td class="entry_tags">
18028              <ul class="entry_tags">
18029                  <li><a href="#tag_FUTURE">FUTURE</a></li>
18030              </ul>
18031            </td>
18032
18033          </tr>
18034
18035
18036          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18037           <!-- end of entry -->
18038        
18039                
18040          <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
18041            <td class="entry_name
18042             " rowspan="1">
18043              android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
18044            </td>
18045            <td class="entry_type">
18046                <span class="entry_type_name">int32</span>
18047
18048              <span class="entry_type_visibility"> [system]</span>
18049
18050
18051
18052
18053
18054            </td> <!-- entry_type -->
18055
18056            <td class="entry_description">
18057              <p>Maximum value possible for a sharpness map
18058region.<wbr/></p>
18059            </td>
18060
18061            <td class="entry_units">
18062            </td>
18063
18064            <td class="entry_range">
18065            </td>
18066
18067            <td class="entry_tags">
18068              <ul class="entry_tags">
18069                  <li><a href="#tag_FUTURE">FUTURE</a></li>
18070              </ul>
18071            </td>
18072
18073          </tr>
18074
18075
18076          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18077           <!-- end of entry -->
18078        
18079                
18080          <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
18081            <td class="entry_name
18082             " rowspan="1">
18083              android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
18084            </td>
18085            <td class="entry_type">
18086                <span class="entry_type_name">int32</span>
18087                <span class="entry_type_container">x</span>
18088
18089                <span class="entry_type_array">
18090                  2
18091                </span>
18092              <span class="entry_type_visibility"> [system as size]</span>
18093
18094
18095
18096                <div class="entry_type_notes">width x height</div>
18097
18098
18099            </td> <!-- entry_type -->
18100
18101            <td class="entry_description">
18102              <p>Dimensions of the sharpness
18103map</p>
18104            </td>
18105
18106            <td class="entry_units">
18107            </td>
18108
18109            <td class="entry_range">
18110              <p>Must be at least 32 x 32</p>
18111            </td>
18112
18113            <td class="entry_tags">
18114              <ul class="entry_tags">
18115                  <li><a href="#tag_FUTURE">FUTURE</a></li>
18116              </ul>
18117            </td>
18118
18119          </tr>
18120
18121
18122          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18123           <!-- end of entry -->
18124        
18125                
18126          <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
18127            <td class="entry_name
18128             " rowspan="3">
18129              android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
18130            </td>
18131            <td class="entry_type">
18132                <span class="entry_type_name">byte</span>
18133                <span class="entry_type_container">x</span>
18134
18135                <span class="entry_type_array">
18136                  n
18137                </span>
18138              <span class="entry_type_visibility"> [public as boolean]</span>
18139
18140
18141
18142                <div class="entry_type_notes">list of enums</div>
18143
18144
18145            </td> <!-- entry_type -->
18146
18147            <td class="entry_description">
18148              <p>The set of hot pixel map output modes supported by this camera device.<wbr/></p>
18149            </td>
18150
18151            <td class="entry_units">
18152            </td>
18153
18154            <td class="entry_range">
18155            </td>
18156
18157            <td class="entry_tags">
18158              <ul class="entry_tags">
18159                  <li><a href="#tag_V1">V1</a></li>
18160                  <li><a href="#tag_DNG">DNG</a></li>
18161              </ul>
18162            </td>
18163
18164          </tr>
18165          <tr class="entries_header">
18166            <th class="th_details" colspan="5">Details</th>
18167          </tr>
18168          <tr class="entry_cont">
18169            <td class="entry_details" colspan="5">
18170              <p>This tag lists valid output modes for <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a>.<wbr/></p>
18171<p>If no hotpixel map is available for this camera device,<wbr/> this will contain
18172only OFF.<wbr/>  If the hotpixel map is available,<wbr/> this should include both
18173the ON and OFF options.<wbr/></p>
18174            </td>
18175          </tr>
18176
18177
18178          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18179           <!-- end of entry -->
18180        
18181        
18182        
18183
18184        
18185
18186      <!-- end of kind -->
18187      </tbody>
18188      <tr><td colspan="6" class="kind">dynamic</td></tr>
18189
18190      <thead class="entries_header">
18191        <tr>
18192          <th class="th_name">Property Name</th>
18193          <th class="th_type">Type</th>
18194          <th class="th_description">Description</th>
18195          <th class="th_units">Units</th>
18196          <th class="th_range">Range</th>
18197          <th class="th_tags">Tags</th>
18198        </tr>
18199      </thead>
18200
18201      <tbody>
18202
18203        
18204
18205        
18206
18207        
18208
18209        
18210
18211                
18212          <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
18213            <td class="entry_name
18214             " rowspan="3">
18215              android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
18216            </td>
18217            <td class="entry_type">
18218                <span class="entry_type_name entry_type_name_enum">byte</span>
18219
18220              <span class="entry_type_visibility"> [public]</span>
18221
18222
18223
18224
18225                <ul class="entry_type_enum">
18226                  <li>
18227                    <span class="entry_type_enum_name">OFF</span>
18228                  </li>
18229                  <li>
18230                    <span class="entry_type_enum_name">SIMPLE</span>
18231                    <span class="entry_type_enum_notes"><p>Optional Return rectangle and confidence
18232only</p></span>
18233                  </li>
18234                  <li>
18235                    <span class="entry_type_enum_name">FULL</span>
18236                    <span class="entry_type_enum_notes"><p>Optional Return all face
18237metadata</p></span>
18238                  </li>
18239                </ul>
18240
18241            </td> <!-- entry_type -->
18242
18243            <td class="entry_description">
18244              <p>State of the face detector
18245unit</p>
18246            </td>
18247
18248            <td class="entry_units">
18249            </td>
18250
18251            <td class="entry_range">
18252              <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
18253            </td>
18254
18255            <td class="entry_tags">
18256              <ul class="entry_tags">
18257                  <li><a href="#tag_BC">BC</a></li>
18258              </ul>
18259            </td>
18260
18261          </tr>
18262          <tr class="entries_header">
18263            <th class="th_details" colspan="5">Details</th>
18264          </tr>
18265          <tr class="entry_cont">
18266            <td class="entry_details" colspan="5">
18267              <p>Whether face detection is enabled,<wbr/> and whether it
18268should output just the basic fields or the full set of
18269fields.<wbr/> Value must be one of the
18270<a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a>.<wbr/></p>
18271            </td>
18272          </tr>
18273
18274
18275          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18276           <!-- end of entry -->
18277        
18278                
18279          <tr class="entry" id="dynamic_android.statistics.faceIds">
18280            <td class="entry_name
18281             " rowspan="3">
18282              android.<wbr/>statistics.<wbr/>face<wbr/>Ids
18283            </td>
18284            <td class="entry_type">
18285                <span class="entry_type_name">int32</span>
18286                <span class="entry_type_container">x</span>
18287
18288                <span class="entry_type_array">
18289                  n
18290                </span>
18291              <span class="entry_type_visibility"> [hidden]</span>
18292
18293
18294
18295
18296
18297            </td> <!-- entry_type -->
18298
18299            <td class="entry_description">
18300              <p>List of unique IDs for detected
18301faces</p>
18302            </td>
18303
18304            <td class="entry_units">
18305            </td>
18306
18307            <td class="entry_range">
18308            </td>
18309
18310            <td class="entry_tags">
18311              <ul class="entry_tags">
18312                  <li><a href="#tag_BC">BC</a></li>
18313              </ul>
18314            </td>
18315
18316          </tr>
18317          <tr class="entries_header">
18318            <th class="th_details" colspan="5">Details</th>
18319          </tr>
18320          <tr class="entry_cont">
18321            <td class="entry_details" colspan="5">
18322              <p>Only available if faceDetectMode == FULL</p>
18323            </td>
18324          </tr>
18325
18326
18327          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18328           <!-- end of entry -->
18329        
18330                
18331          <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
18332            <td class="entry_name
18333             " rowspan="3">
18334              android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
18335            </td>
18336            <td class="entry_type">
18337                <span class="entry_type_name">int32</span>
18338                <span class="entry_type_container">x</span>
18339
18340                <span class="entry_type_array">
18341                  n x 6
18342                </span>
18343              <span class="entry_type_visibility"> [hidden]</span>
18344
18345
18346
18347                <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
18348
18349
18350            </td> <!-- entry_type -->
18351
18352            <td class="entry_description">
18353              <p>List of landmarks for detected
18354faces</p>
18355            </td>
18356
18357            <td class="entry_units">
18358            </td>
18359
18360            <td class="entry_range">
18361            </td>
18362
18363            <td class="entry_tags">
18364              <ul class="entry_tags">
18365                  <li><a href="#tag_BC">BC</a></li>
18366              </ul>
18367            </td>
18368
18369          </tr>
18370          <tr class="entries_header">
18371            <th class="th_details" colspan="5">Details</th>
18372          </tr>
18373          <tr class="entry_cont">
18374            <td class="entry_details" colspan="5">
18375              <p>Only available if faceDetectMode == FULL</p>
18376            </td>
18377          </tr>
18378
18379
18380          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18381           <!-- end of entry -->
18382        
18383                
18384          <tr class="entry" id="dynamic_android.statistics.faceRectangles">
18385            <td class="entry_name
18386             " rowspan="3">
18387              android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
18388            </td>
18389            <td class="entry_type">
18390                <span class="entry_type_name">int32</span>
18391                <span class="entry_type_container">x</span>
18392
18393                <span class="entry_type_array">
18394                  n x 4
18395                </span>
18396              <span class="entry_type_visibility"> [hidden as rectangle]</span>
18397
18398
18399
18400                <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
18401
18402
18403            </td> <!-- entry_type -->
18404
18405            <td class="entry_description">
18406              <p>List of the bounding rectangles for detected
18407faces</p>
18408            </td>
18409
18410            <td class="entry_units">
18411            </td>
18412
18413            <td class="entry_range">
18414            </td>
18415
18416            <td class="entry_tags">
18417              <ul class="entry_tags">
18418                  <li><a href="#tag_BC">BC</a></li>
18419              </ul>
18420            </td>
18421
18422          </tr>
18423          <tr class="entries_header">
18424            <th class="th_details" colspan="5">Details</th>
18425          </tr>
18426          <tr class="entry_cont">
18427            <td class="entry_details" colspan="5">
18428              <p>Only available if faceDetectMode != OFF</p>
18429            </td>
18430          </tr>
18431
18432
18433          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18434           <!-- end of entry -->
18435        
18436                
18437          <tr class="entry" id="dynamic_android.statistics.faceScores">
18438            <td class="entry_name
18439             " rowspan="3">
18440              android.<wbr/>statistics.<wbr/>face<wbr/>Scores
18441            </td>
18442            <td class="entry_type">
18443                <span class="entry_type_name">byte</span>
18444                <span class="entry_type_container">x</span>
18445
18446                <span class="entry_type_array">
18447                  n
18448                </span>
18449              <span class="entry_type_visibility"> [hidden]</span>
18450
18451
18452
18453
18454
18455            </td> <!-- entry_type -->
18456
18457            <td class="entry_description">
18458              <p>List of the face confidence scores for
18459detected faces</p>
18460            </td>
18461
18462            <td class="entry_units">
18463            </td>
18464
18465            <td class="entry_range">
18466              <p>1-100</p>
18467            </td>
18468
18469            <td class="entry_tags">
18470              <ul class="entry_tags">
18471                  <li><a href="#tag_BC">BC</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>Only available if faceDetectMode != OFF.<wbr/> The value should be
18482meaningful (for example,<wbr/> setting 100 at all times is illegal).<wbr/></p>
18483            </td>
18484          </tr>
18485
18486
18487          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18488           <!-- end of entry -->
18489        
18490                
18491          <tr class="entry" id="dynamic_android.statistics.faces">
18492            <td class="entry_name
18493             " rowspan="3">
18494              android.<wbr/>statistics.<wbr/>faces
18495            </td>
18496            <td class="entry_type">
18497                <span class="entry_type_name">int32</span>
18498                <span class="entry_type_container">x</span>
18499
18500                <span class="entry_type_array">
18501                  n
18502                </span>
18503              <span class="entry_type_visibility"> [public as face]</span>
18504
18505              <span class="entry_type_synthetic">[synthetic] </span>
18506
18507
18508
18509
18510            </td> <!-- entry_type -->
18511
18512            <td class="entry_description">
18513              <p>List of the faces detected through camera face detection
18514in this result.<wbr/></p>
18515            </td>
18516
18517            <td class="entry_units">
18518            </td>
18519
18520            <td class="entry_range">
18521            </td>
18522
18523            <td class="entry_tags">
18524            </td>
18525
18526          </tr>
18527          <tr class="entries_header">
18528            <th class="th_details" colspan="5">Details</th>
18529          </tr>
18530          <tr class="entry_cont">
18531            <td class="entry_details" colspan="5">
18532              <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>
18533            </td>
18534          </tr>
18535
18536
18537          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18538           <!-- end of entry -->
18539        
18540                
18541          <tr class="entry" id="dynamic_android.statistics.histogram">
18542            <td class="entry_name
18543             " rowspan="3">
18544              android.<wbr/>statistics.<wbr/>histogram
18545            </td>
18546            <td class="entry_type">
18547                <span class="entry_type_name">int32</span>
18548                <span class="entry_type_container">x</span>
18549
18550                <span class="entry_type_array">
18551                  n x 3
18552                </span>
18553              <span class="entry_type_visibility"> [system]</span>
18554
18555
18556
18557                <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>
18558
18559
18560            </td> <!-- entry_type -->
18561
18562            <td class="entry_description">
18563              <p>A 3-channel histogram based on the raw
18564sensor data</p>
18565            </td>
18566
18567            <td class="entry_units">
18568            </td>
18569
18570            <td class="entry_range">
18571            </td>
18572
18573            <td class="entry_tags">
18574              <ul class="entry_tags">
18575                  <li><a href="#tag_FUTURE">FUTURE</a></li>
18576              </ul>
18577            </td>
18578
18579          </tr>
18580          <tr class="entries_header">
18581            <th class="th_details" colspan="5">Details</th>
18582          </tr>
18583          <tr class="entry_cont">
18584            <td class="entry_details" colspan="5">
18585              <p>The k'th bucket (0-based) covers the input range
18586(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/>
18587(k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
18588supported,<wbr/> all channels should have the same data</p>
18589            </td>
18590          </tr>
18591
18592
18593          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18594           <!-- end of entry -->
18595        
18596                
18597          <tr class="entry" id="dynamic_android.statistics.histogramMode">
18598            <td class="entry_name
18599             " rowspan="1">
18600              android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
18601            </td>
18602            <td class="entry_type">
18603                <span class="entry_type_name entry_type_name_enum">byte</span>
18604
18605              <span class="entry_type_visibility"> [system as boolean]</span>
18606
18607
18608
18609
18610                <ul class="entry_type_enum">
18611                  <li>
18612                    <span class="entry_type_enum_name">OFF</span>
18613                  </li>
18614                  <li>
18615                    <span class="entry_type_enum_name">ON</span>
18616                  </li>
18617                </ul>
18618
18619            </td> <!-- entry_type -->
18620
18621            <td class="entry_description">
18622              <p>Operating mode for histogram
18623generation</p>
18624            </td>
18625
18626            <td class="entry_units">
18627            </td>
18628
18629            <td class="entry_range">
18630            </td>
18631
18632            <td class="entry_tags">
18633              <ul class="entry_tags">
18634                  <li><a href="#tag_FUTURE">FUTURE</a></li>
18635              </ul>
18636            </td>
18637
18638          </tr>
18639
18640
18641          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18642           <!-- end of entry -->
18643        
18644                
18645          <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
18646            <td class="entry_name
18647             " rowspan="3">
18648              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
18649            </td>
18650            <td class="entry_type">
18651                <span class="entry_type_name">int32</span>
18652                <span class="entry_type_container">x</span>
18653
18654                <span class="entry_type_array">
18655                  n x m x 3
18656                </span>
18657              <span class="entry_type_visibility"> [system]</span>
18658
18659
18660
18661                <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>
18662
18663
18664            </td> <!-- entry_type -->
18665
18666            <td class="entry_description">
18667              <p>A 3-channel sharpness map,<wbr/> based on the raw
18668sensor data</p>
18669            </td>
18670
18671            <td class="entry_units">
18672            </td>
18673
18674            <td class="entry_range">
18675            </td>
18676
18677            <td class="entry_tags">
18678              <ul class="entry_tags">
18679                  <li><a href="#tag_FUTURE">FUTURE</a></li>
18680              </ul>
18681            </td>
18682
18683          </tr>
18684          <tr class="entries_header">
18685            <th class="th_details" colspan="5">Details</th>
18686          </tr>
18687          <tr class="entry_cont">
18688            <td class="entry_details" colspan="5">
18689              <p>If only a monochrome sharpness map is supported,<wbr/>
18690all channels should have the same data</p>
18691            </td>
18692          </tr>
18693
18694
18695          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18696           <!-- end of entry -->
18697        
18698                
18699          <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
18700            <td class="entry_name
18701             " rowspan="1">
18702              android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
18703            </td>
18704            <td class="entry_type">
18705                <span class="entry_type_name entry_type_name_enum">byte</span>
18706
18707              <span class="entry_type_visibility"> [system as boolean]</span>
18708
18709
18710
18711
18712                <ul class="entry_type_enum">
18713                  <li>
18714                    <span class="entry_type_enum_name">OFF</span>
18715                  </li>
18716                  <li>
18717                    <span class="entry_type_enum_name">ON</span>
18718                  </li>
18719                </ul>
18720
18721            </td> <!-- entry_type -->
18722
18723            <td class="entry_description">
18724              <p>Operating mode for sharpness map
18725generation</p>
18726            </td>
18727
18728            <td class="entry_units">
18729            </td>
18730
18731            <td class="entry_range">
18732            </td>
18733
18734            <td class="entry_tags">
18735              <ul class="entry_tags">
18736                  <li><a href="#tag_FUTURE">FUTURE</a></li>
18737              </ul>
18738            </td>
18739
18740          </tr>
18741
18742
18743          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18744           <!-- end of entry -->
18745        
18746                
18747          <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
18748            <td class="entry_name
18749             " rowspan="3">
18750              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
18751            </td>
18752            <td class="entry_type">
18753                <span class="entry_type_name">byte</span>
18754
18755              <span class="entry_type_visibility"> [public as lensShadingMap]</span>
18756
18757
18758
18759
18760
18761            </td> <!-- entry_type -->
18762
18763            <td class="entry_description">
18764              <p>The shading map is a low-resolution floating-point map
18765that lists the coefficients used to correct for vignetting,<wbr/> for each
18766Bayer color channel.<wbr/></p>
18767            </td>
18768
18769            <td class="entry_units">
18770            </td>
18771
18772            <td class="entry_range">
18773              <p>Each gain factor is &gt;= 1</p>
18774            </td>
18775
18776            <td class="entry_tags">
18777            </td>
18778
18779          </tr>
18780          <tr class="entries_header">
18781            <th class="th_details" colspan="5">Details</th>
18782          </tr>
18783          <tr class="entry_cont">
18784            <td class="entry_details" colspan="5">
18785              <p>The least shaded section of the image should have a gain factor
18786of 1; all other sections should have gains above 1.<wbr/></p>
18787<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
18788must take into account the colorCorrection settings.<wbr/></p>
18789<p>The shading map is for the entire active pixel array,<wbr/> and is not
18790affected by the crop region specified in the request.<wbr/> Each shading map
18791entry is the value of the shading compensation map over a specific
18792pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
18793map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
18794(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
18795pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
18796The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
18797<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
18798channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
18799The shading map is stored in a fully interleaved format.<wbr/></p>
18800<p>The shading map should have on the order of 30-40 rows and columns,<wbr/>
18801and must be smaller than 64x64.<wbr/></p>
18802<p>As an example,<wbr/> given a very small map defined as:</p>
18803<pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
18804values =
18805[ 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/>
18806    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/>
18807  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/>
18808    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/>
18809  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/>
18810    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 ]
18811</code></pre>
18812<p>The low-resolution scaling map images for each channel are
18813(displayed using nearest-neighbor interpolation):</p>
18814<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
18815<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
18816<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
18817<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
18818<p>As a visualization only,<wbr/> inverting the full-color map to recover an
18819image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
18820<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
18821            </td>
18822          </tr>
18823
18824
18825          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18826           <!-- end of entry -->
18827        
18828                
18829          <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
18830            <td class="entry_name
18831             " rowspan="5">
18832              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
18833            </td>
18834            <td class="entry_type">
18835                <span class="entry_type_name">float</span>
18836                <span class="entry_type_container">x</span>
18837
18838                <span class="entry_type_array">
18839                  4 x n x m
18840                </span>
18841              <span class="entry_type_visibility"> [hidden]</span>
18842
18843
18844
18845                <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
18846
18847
18848            </td> <!-- entry_type -->
18849
18850            <td class="entry_description">
18851              <p>The shading map is a low-resolution floating-point map
18852that lists the coefficients used to correct for vignetting,<wbr/> for each
18853Bayer color channel.<wbr/></p>
18854            </td>
18855
18856            <td class="entry_units">
18857            </td>
18858
18859            <td class="entry_range">
18860              <p>Each gain factor is &gt;= 1</p>
18861            </td>
18862
18863            <td class="entry_tags">
18864            </td>
18865
18866          </tr>
18867          <tr class="entries_header">
18868            <th class="th_details" colspan="5">Details</th>
18869          </tr>
18870          <tr class="entry_cont">
18871            <td class="entry_details" colspan="5">
18872              <p>The least shaded section of the image should have a gain factor
18873of 1; all other sections should have gains above 1.<wbr/></p>
18874<p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
18875must take into account the colorCorrection settings.<wbr/></p>
18876<p>The shading map is for the entire active pixel array,<wbr/> and is not
18877affected by the crop region specified in the request.<wbr/> Each shading map
18878entry is the value of the shading compensation map over a specific
18879pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
18880map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
18881(x,<wbr/>y) ϵ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
18882pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
18883The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
18884<p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
18885channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
18886The shading map is stored in a fully interleaved format,<wbr/> and its size
18887is 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>
18888<p>The shading map should have on the order of 30-40 rows and columns,<wbr/>
18889and must be smaller than 64x64.<wbr/></p>
18890<p>As an example,<wbr/> given a very small map defined as:</p>
18891<pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
18892<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
18893[ 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/>
18894    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/>
18895  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/>
18896    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/>
18897  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/>
18898    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 ]
18899</code></pre>
18900<p>The low-resolution scaling map images for each channel are
18901(displayed using nearest-neighbor interpolation):</p>
18902<p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
18903<img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
18904<img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
18905<img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
18906<p>As a visualization only,<wbr/> inverting the full-color map to recover an
18907image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
18908<p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
18909            </td>
18910          </tr>
18911
18912          <tr class="entries_header">
18913            <th class="th_details" colspan="5">HAL Implementation Details</th>
18914          </tr>
18915          <tr class="entry_cont">
18916            <td class="entry_details" colspan="5">
18917              <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
18918When AE and AWB are in AUTO modes
18919(<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
18920may have all the information it need to generate most accurate lens shading map.<wbr/> When
18921AE or AWB are in manual mode
18922(<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
18923may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
18924generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
18925the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
18926            </td>
18927          </tr>
18928
18929          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18930           <!-- end of entry -->
18931        
18932                
18933          <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
18934            <td class="entry_name
18935                entry_name_deprecated
18936             " rowspan="3">
18937              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
18938            </td>
18939            <td class="entry_type">
18940                <span class="entry_type_name">float</span>
18941                <span class="entry_type_container">x</span>
18942
18943                <span class="entry_type_array">
18944                  4
18945                </span>
18946              <span class="entry_type_visibility"> [hidden]</span>
18947
18948
18949              <span class="entry_type_deprecated">[deprecated] </span>
18950
18951                <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
18952
18953
18954            </td> <!-- entry_type -->
18955
18956            <td class="entry_description">
18957              <p>The best-fit color channel gains calculated
18958by the camera device's statistics units for the current output frame.<wbr/></p>
18959            </td>
18960
18961            <td class="entry_units">
18962            </td>
18963
18964            <td class="entry_range">
18965              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18966            </td>
18967
18968            <td class="entry_tags">
18969            </td>
18970
18971          </tr>
18972          <tr class="entries_header">
18973            <th class="th_details" colspan="5">Details</th>
18974          </tr>
18975          <tr class="entry_cont">
18976            <td class="entry_details" colspan="5">
18977              <p>This may be different than the gains used for this frame,<wbr/>
18978since statistics processing on data from a new frame
18979typically completes after the transform has already been
18980applied to that frame.<wbr/></p>
18981<p>The 4 channel gains are defined in Bayer domain,<wbr/>
18982see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
18983<p>This value should always be calculated by the AWB block,<wbr/>
18984regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
18985            </td>
18986          </tr>
18987
18988
18989          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18990           <!-- end of entry -->
18991        
18992                
18993          <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
18994            <td class="entry_name
18995                entry_name_deprecated
18996             " rowspan="3">
18997              android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
18998            </td>
18999            <td class="entry_type">
19000                <span class="entry_type_name">rational</span>
19001                <span class="entry_type_container">x</span>
19002
19003                <span class="entry_type_array">
19004                  3 x 3
19005                </span>
19006              <span class="entry_type_visibility"> [hidden]</span>
19007
19008
19009              <span class="entry_type_deprecated">[deprecated] </span>
19010
19011                <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
19012
19013
19014            </td> <!-- entry_type -->
19015
19016            <td class="entry_description">
19017              <p>The best-fit color transform matrix estimate
19018calculated by the camera device's statistics units for the current
19019output frame.<wbr/></p>
19020            </td>
19021
19022            <td class="entry_units">
19023            </td>
19024
19025            <td class="entry_range">
19026              <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
19027            </td>
19028
19029            <td class="entry_tags">
19030            </td>
19031
19032          </tr>
19033          <tr class="entries_header">
19034            <th class="th_details" colspan="5">Details</th>
19035          </tr>
19036          <tr class="entry_cont">
19037            <td class="entry_details" colspan="5">
19038              <p>The camera device will provide the estimate from its
19039statistics unit on the white balance transforms to use
19040for the next frame.<wbr/> These are the values the camera device believes
19041are the best fit for the current output frame.<wbr/> This may
19042be different than the transform used for this frame,<wbr/> since
19043statistics processing on data from a new frame typically
19044completes after the transform has already been applied to
19045that frame.<wbr/></p>
19046<p>These estimates must be provided for all frames,<wbr/> even if
19047capture settings and color transforms are set by the application.<wbr/></p>
19048<p>This value should always be calculated by the AWB block,<wbr/>
19049regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
19050            </td>
19051          </tr>
19052
19053
19054          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19055           <!-- end of entry -->
19056        
19057                
19058          <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
19059            <td class="entry_name
19060             " rowspan="3">
19061              android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
19062            </td>
19063            <td class="entry_type">
19064                <span class="entry_type_name entry_type_name_enum">byte</span>
19065
19066              <span class="entry_type_visibility"> [public]</span>
19067
19068
19069
19070
19071                <ul class="entry_type_enum">
19072                  <li>
19073                    <span class="entry_type_enum_name">NONE</span>
19074                  </li>
19075                  <li>
19076                    <span class="entry_type_enum_name">50HZ</span>
19077                  </li>
19078                  <li>
19079                    <span class="entry_type_enum_name">60HZ</span>
19080                  </li>
19081                </ul>
19082
19083            </td> <!-- entry_type -->
19084
19085            <td class="entry_description">
19086              <p>The camera device estimated scene illumination lighting
19087frequency.<wbr/></p>
19088            </td>
19089
19090            <td class="entry_units">
19091            </td>
19092
19093            <td class="entry_range">
19094            </td>
19095
19096            <td class="entry_tags">
19097            </td>
19098
19099          </tr>
19100          <tr class="entries_header">
19101            <th class="th_details" colspan="5">Details</th>
19102          </tr>
19103          <tr class="entry_cont">
19104            <td class="entry_details" colspan="5">
19105              <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
19106that depends on the local utility power standards.<wbr/> This flicker must be
19107accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
19108The camera device uses this entry to tell the application what the scene
19109illuminant frequency is.<wbr/></p>
19110<p>When manual exposure control is enabled
19111(<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> == OFF</code>),<wbr/>
19112the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't do the antibanding,<wbr/> and the
19113application can ensure it selects exposure times that do not cause banding
19114issues by looking into this metadata field.<wbr/> See <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a>
19115for more details.<wbr/></p>
19116<p>Report NONE if there doesn't appear to be flickering illumination.<wbr/></p>
19117            </td>
19118          </tr>
19119
19120
19121          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19122           <!-- end of entry -->
19123        
19124                
19125          <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
19126            <td class="entry_name
19127             " rowspan="3">
19128              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
19129            </td>
19130            <td class="entry_type">
19131                <span class="entry_type_name entry_type_name_enum">byte</span>
19132
19133              <span class="entry_type_visibility"> [public as boolean]</span>
19134
19135
19136
19137
19138                <ul class="entry_type_enum">
19139                  <li>
19140                    <span class="entry_type_enum_name">OFF</span>
19141                  </li>
19142                  <li>
19143                    <span class="entry_type_enum_name">ON</span>
19144                  </li>
19145                </ul>
19146
19147            </td> <!-- entry_type -->
19148
19149            <td class="entry_description">
19150              <p>Operating mode for hotpixel map generation.<wbr/></p>
19151            </td>
19152
19153            <td class="entry_units">
19154            </td>
19155
19156            <td class="entry_range">
19157            </td>
19158
19159            <td class="entry_tags">
19160              <ul class="entry_tags">
19161                  <li><a href="#tag_V1">V1</a></li>
19162                  <li><a href="#tag_DNG">DNG</a></li>
19163              </ul>
19164            </td>
19165
19166          </tr>
19167          <tr class="entries_header">
19168            <th class="th_details" colspan="5">Details</th>
19169          </tr>
19170          <tr class="entry_cont">
19171            <td class="entry_details" colspan="5">
19172              <p>If set to ON,<wbr/> a hotpixel map is returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/>
19173If set to OFF,<wbr/> no hotpixel map should be returned.<wbr/></p>
19174<p>This must be set to a valid mode from <a href="#static_android.statistics.info.availableHotPixelMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes</a>.<wbr/></p>
19175            </td>
19176          </tr>
19177
19178
19179          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19180           <!-- end of entry -->
19181        
19182                
19183          <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
19184            <td class="entry_name
19185             " rowspan="5">
19186              android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
19187            </td>
19188            <td class="entry_type">
19189                <span class="entry_type_name">int32</span>
19190                <span class="entry_type_container">x</span>
19191
19192                <span class="entry_type_array">
19193                  2 x n
19194                </span>
19195              <span class="entry_type_visibility"> [public as point]</span>
19196
19197
19198
19199                <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
19200
19201
19202            </td> <!-- entry_type -->
19203
19204            <td class="entry_description">
19205              <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
19206            </td>
19207
19208            <td class="entry_units">
19209            </td>
19210
19211            <td class="entry_range">
19212              <p>n &lt;= number of pixels on the sensor.<wbr/>
19213The <code>(x,<wbr/> y)</code> coordinates must be bounded by
19214<a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19215            </td>
19216
19217            <td class="entry_tags">
19218              <ul class="entry_tags">
19219                  <li><a href="#tag_V1">V1</a></li>
19220                  <li><a href="#tag_DNG">DNG</a></li>
19221              </ul>
19222            </td>
19223
19224          </tr>
19225          <tr class="entries_header">
19226            <th class="th_details" colspan="5">Details</th>
19227          </tr>
19228          <tr class="entry_cont">
19229            <td class="entry_details" colspan="5">
19230              <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
19231<code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
19232bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
19233height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/>
19234This may include hot pixels that lie outside of the active array
19235bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19236            </td>
19237          </tr>
19238
19239          <tr class="entries_header">
19240            <th class="th_details" colspan="5">HAL Implementation Details</th>
19241          </tr>
19242          <tr class="entry_cont">
19243            <td class="entry_details" colspan="5">
19244              <p>A hotpixel map contains the coordinates of pixels on the camera
19245sensor that do report valid values (usually due to defects in
19246the camera sensor).<wbr/> This includes pixels that are stuck at certain
19247values,<wbr/> or have a response that does not accuractly encode the
19248incoming light from the scene.<wbr/></p>
19249<p>To avoid performance issues,<wbr/> there should be significantly fewer hot
19250pixels than actual pixels on the camera sensor.<wbr/></p>
19251            </td>
19252          </tr>
19253
19254          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19255           <!-- end of entry -->
19256        
19257                
19258          <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
19259            <td class="entry_name
19260             " rowspan="3">
19261              android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
19262            </td>
19263            <td class="entry_type">
19264                <span class="entry_type_name entry_type_name_enum">byte</span>
19265
19266              <span class="entry_type_visibility"> [public]</span>
19267
19268
19269
19270
19271                <ul class="entry_type_enum">
19272                  <li>
19273                    <span class="entry_type_enum_name">OFF</span>
19274                  </li>
19275                  <li>
19276                    <span class="entry_type_enum_name">ON</span>
19277                  </li>
19278                </ul>
19279
19280            </td> <!-- entry_type -->
19281
19282            <td class="entry_description">
19283              <p>Whether the camera device will output the lens
19284shading map in output result metadata.<wbr/></p>
19285            </td>
19286
19287            <td class="entry_units">
19288            </td>
19289
19290            <td class="entry_range">
19291            </td>
19292
19293            <td class="entry_tags">
19294            </td>
19295
19296          </tr>
19297          <tr class="entries_header">
19298            <th class="th_details" colspan="5">Details</th>
19299          </tr>
19300          <tr class="entry_cont">
19301            <td class="entry_details" colspan="5">
19302              <p>When set to ON,<wbr/>
19303<a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> must be provided in
19304the output result metadata.<wbr/></p>
19305            </td>
19306          </tr>
19307
19308
19309          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19310           <!-- end of entry -->
19311        
19312        
19313
19314      <!-- end of kind -->
19315      </tbody>
19316
19317  <!-- end of section -->
19318  <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr>
19319
19320
19321      <tr><td colspan="6" class="kind">controls</td></tr>
19322
19323      <thead class="entries_header">
19324        <tr>
19325          <th class="th_name">Property Name</th>
19326          <th class="th_type">Type</th>
19327          <th class="th_description">Description</th>
19328          <th class="th_units">Units</th>
19329          <th class="th_range">Range</th>
19330          <th class="th_tags">Tags</th>
19331        </tr>
19332      </thead>
19333
19334      <tbody>
19335
19336        
19337
19338        
19339
19340        
19341
19342        
19343
19344                
19345          <tr class="entry" id="controls_android.tonemap.curveBlue">
19346            <td class="entry_name
19347             " rowspan="3">
19348              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
19349            </td>
19350            <td class="entry_type">
19351                <span class="entry_type_name">float</span>
19352                <span class="entry_type_container">x</span>
19353
19354                <span class="entry_type_array">
19355                  n x 2
19356                </span>
19357              <span class="entry_type_visibility"> [hidden]</span>
19358
19359
19360
19361                <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>
19362
19363
19364            </td> <!-- entry_type -->
19365
19366            <td class="entry_description">
19367              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
19368channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
19369CONTRAST_<wbr/>CURVE.<wbr/></p>
19370            </td>
19371
19372            <td class="entry_units">
19373              same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
19374            </td>
19375
19376            <td class="entry_range">
19377              <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p>
19378            </td>
19379
19380            <td class="entry_tags">
19381            </td>
19382
19383          </tr>
19384          <tr class="entries_header">
19385            <th class="th_details" colspan="5">Details</th>
19386          </tr>
19387          <tr class="entry_cont">
19388            <td class="entry_details" colspan="5">
19389              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
19390            </td>
19391          </tr>
19392
19393
19394          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19395           <!-- end of entry -->
19396        
19397                
19398          <tr class="entry" id="controls_android.tonemap.curveGreen">
19399            <td class="entry_name
19400             " rowspan="3">
19401              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
19402            </td>
19403            <td class="entry_type">
19404                <span class="entry_type_name">float</span>
19405                <span class="entry_type_container">x</span>
19406
19407                <span class="entry_type_array">
19408                  n x 2
19409                </span>
19410              <span class="entry_type_visibility"> [hidden]</span>
19411
19412
19413
19414                <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>
19415
19416
19417            </td> <!-- entry_type -->
19418
19419            <td class="entry_description">
19420              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
19421channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
19422CONTRAST_<wbr/>CURVE.<wbr/></p>
19423            </td>
19424
19425            <td class="entry_units">
19426              same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
19427            </td>
19428
19429            <td class="entry_range">
19430              <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p>
19431            </td>
19432
19433            <td class="entry_tags">
19434            </td>
19435
19436          </tr>
19437          <tr class="entries_header">
19438            <th class="th_details" colspan="5">Details</th>
19439          </tr>
19440          <tr class="entry_cont">
19441            <td class="entry_details" colspan="5">
19442              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
19443            </td>
19444          </tr>
19445
19446
19447          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19448           <!-- end of entry -->
19449        
19450                
19451          <tr class="entry" id="controls_android.tonemap.curveRed">
19452            <td class="entry_name
19453             " rowspan="5">
19454              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
19455            </td>
19456            <td class="entry_type">
19457                <span class="entry_type_name">float</span>
19458                <span class="entry_type_container">x</span>
19459
19460                <span class="entry_type_array">
19461                  n x 2
19462                </span>
19463              <span class="entry_type_visibility"> [hidden]</span>
19464
19465
19466
19467                <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>
19468
19469
19470            </td> <!-- entry_type -->
19471
19472            <td class="entry_description">
19473              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
19474channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
19475CONTRAST_<wbr/>CURVE.<wbr/></p>
19476            </td>
19477
19478            <td class="entry_units">
19479            </td>
19480
19481            <td class="entry_range">
19482              <p>0-1 on both input and output coordinates,<wbr/> normalized
19483as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
19484            </td>
19485
19486            <td class="entry_tags">
19487            </td>
19488
19489          </tr>
19490          <tr class="entries_header">
19491            <th class="th_details" colspan="5">Details</th>
19492          </tr>
19493          <tr class="entry_cont">
19494            <td class="entry_details" colspan="5">
19495              <p>Each channel's curve is defined by an array of control points:</p>
19496<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
19497  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
194982 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
19499<p>These are sorted in order of increasing <code>Pin</code>; it is always
19500guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
19501define a complete mapping.<wbr/> For input values between control points,<wbr/>
19502the camera device must linearly interpolate between the control
19503points.<wbr/></p>
19504<p>Each curve can have an independent number of points,<wbr/> and the number
19505of points can be less than max (that is,<wbr/> the request doesn't have to
19506always provide a curve with number of points equivalent to
19507<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
19508<p>A few examples,<wbr/> and their corresponding graphical mappings; these
19509only specify the red channel and the precision is limited to 4
19510digits,<wbr/> for conciseness.<wbr/></p>
19511<p>Linear mapping:</p>
19512<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 ]
19513</code></pre>
19514<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
19515<p>Invert mapping:</p>
19516<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 ]
19517</code></pre>
19518<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
19519<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
19520<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
19521  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/>
19522  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/>
19523  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/>
19524  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 ]
19525</code></pre>
19526<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
19527<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
19528<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
19529  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/>
19530  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/>
19531  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/>
19532  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 ]
19533</code></pre>
19534<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
19535            </td>
19536          </tr>
19537
19538          <tr class="entries_header">
19539            <th class="th_details" colspan="5">HAL Implementation Details</th>
19540          </tr>
19541          <tr class="entry_cont">
19542            <td class="entry_details" colspan="5">
19543              <p>For good quality of mapping,<wbr/> at least 128 control points are
19544preferred.<wbr/></p>
19545<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
19546control points used as are available.<wbr/></p>
19547            </td>
19548          </tr>
19549
19550          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19551           <!-- end of entry -->
19552        
19553                
19554          <tr class="entry" id="controls_android.tonemap.curve">
19555            <td class="entry_name
19556             " rowspan="5">
19557              android.<wbr/>tonemap.<wbr/>curve
19558            </td>
19559            <td class="entry_type">
19560                <span class="entry_type_name">float</span>
19561
19562              <span class="entry_type_visibility"> [public as tonemapCurve]</span>
19563
19564              <span class="entry_type_synthetic">[synthetic] </span>
19565
19566
19567
19568
19569            </td> <!-- entry_type -->
19570
19571            <td class="entry_description">
19572              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
19573is CONTRAST_<wbr/>CURVE.<wbr/></p>
19574            </td>
19575
19576            <td class="entry_units">
19577            </td>
19578
19579            <td class="entry_range">
19580            </td>
19581
19582            <td class="entry_tags">
19583            </td>
19584
19585          </tr>
19586          <tr class="entries_header">
19587            <th class="th_details" colspan="5">Details</th>
19588          </tr>
19589          <tr class="entry_cont">
19590            <td class="entry_details" colspan="5">
19591              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
19592channels respectively.<wbr/> The following example uses the red channel as an
19593example.<wbr/> The same logic applies to green and blue channel.<wbr/>
19594Each channel's curve is defined by an array of control points:</p>
19595<pre><code>curveRed =
19596  [ 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) ]
195972 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
19598<p>These are sorted in order of increasing <code>Pin</code>; it is always
19599guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
19600define a complete mapping.<wbr/> For input values between control points,<wbr/>
19601the camera device must linearly interpolate between the control
19602points.<wbr/></p>
19603<p>Each curve can have an independent number of points,<wbr/> and the number
19604of points can be less than max (that is,<wbr/> the request doesn't have to
19605always provide a curve with number of points equivalent to
19606<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
19607<p>A few examples,<wbr/> and their corresponding graphical mappings; these
19608only specify the red channel and the precision is limited to 4
19609digits,<wbr/> for conciseness.<wbr/></p>
19610<p>Linear mapping:</p>
19611<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
19612</code></pre>
19613<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
19614<p>Invert mapping:</p>
19615<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
19616</code></pre>
19617<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
19618<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
19619<pre><code>curveRed = [
19620  (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/>
19621  (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/>
19622  (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/>
19623  (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) ]
19624</code></pre>
19625<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
19626<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
19627<pre><code>curveRed = [
19628  (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/>
19629  (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/>
19630  (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/>
19631  (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) ]
19632</code></pre>
19633<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
19634            </td>
19635          </tr>
19636
19637          <tr class="entries_header">
19638            <th class="th_details" colspan="5">HAL Implementation Details</th>
19639          </tr>
19640          <tr class="entry_cont">
19641            <td class="entry_details" colspan="5">
19642              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
19643curveBlue entries.<wbr/></p>
19644            </td>
19645          </tr>
19646
19647          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19648           <!-- end of entry -->
19649        
19650                
19651          <tr class="entry" id="controls_android.tonemap.mode">
19652            <td class="entry_name
19653             " rowspan="3">
19654              android.<wbr/>tonemap.<wbr/>mode
19655            </td>
19656            <td class="entry_type">
19657                <span class="entry_type_name entry_type_name_enum">byte</span>
19658
19659              <span class="entry_type_visibility"> [public]</span>
19660
19661
19662
19663
19664                <ul class="entry_type_enum">
19665                  <li>
19666                    <span class="entry_type_enum_name">CONTRAST_CURVE</span>
19667                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
19668the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
19669<p>All color enhancement and tonemapping must be disabled,<wbr/> except
19670for applying the tonemapping curve specified by
19671<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
19672<p>Must not slow down frame rate relative to raw
19673sensor output.<wbr/></p></span>
19674                  </li>
19675                  <li>
19676                    <span class="entry_type_enum_name">FAST</span>
19677                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p>
19678<p>Should not slow down frame rate relative to raw sensor output.<wbr/></p></span>
19679                  </li>
19680                  <li>
19681                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
19682                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p>
19683<p>May slow down frame rate relative to raw sensor output.<wbr/></p></span>
19684                  </li>
19685                </ul>
19686
19687            </td> <!-- entry_type -->
19688
19689            <td class="entry_description">
19690              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
19691            </td>
19692
19693            <td class="entry_units">
19694            </td>
19695
19696            <td class="entry_range">
19697            </td>
19698
19699            <td class="entry_tags">
19700            </td>
19701
19702          </tr>
19703          <tr class="entries_header">
19704            <th class="th_details" colspan="5">Details</th>
19705          </tr>
19706          <tr class="entry_cont">
19707            <td class="entry_details" colspan="5">
19708              <p>When switching to an application-defined contrast curve by setting
19709<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
19710per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
19711mapping from input high-bit-depth pixel value to the output
19712low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
19713and output may change depending on the camera pipeline,<wbr/> the values
19714are specified by normalized floating-point numbers.<wbr/></p>
19715<p>More-complex color mapping operations such as 3D color look-up
19716tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
19717transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
19718CONTRAST_<wbr/>CURVE.<wbr/></p>
19719<p>This must be set to a valid mode in
19720<a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a>.<wbr/></p>
19721<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
19722emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
19723These values are always available,<wbr/> and as close as possible to the
19724actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
19725<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
19726provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
19727roughly the same.<wbr/></p>
19728            </td>
19729          </tr>
19730
19731
19732          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19733           <!-- end of entry -->
19734        
19735        
19736
19737      <!-- end of kind -->
19738      </tbody>
19739      <tr><td colspan="6" class="kind">static</td></tr>
19740
19741      <thead class="entries_header">
19742        <tr>
19743          <th class="th_name">Property Name</th>
19744          <th class="th_type">Type</th>
19745          <th class="th_description">Description</th>
19746          <th class="th_units">Units</th>
19747          <th class="th_range">Range</th>
19748          <th class="th_tags">Tags</th>
19749        </tr>
19750      </thead>
19751
19752      <tbody>
19753
19754        
19755
19756        
19757
19758        
19759
19760        
19761
19762                
19763          <tr class="entry" id="static_android.tonemap.maxCurvePoints">
19764            <td class="entry_name
19765             " rowspan="5">
19766              android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
19767            </td>
19768            <td class="entry_type">
19769                <span class="entry_type_name">int32</span>
19770
19771              <span class="entry_type_visibility"> [public]</span>
19772
19773
19774
19775
19776
19777            </td> <!-- entry_type -->
19778
19779            <td class="entry_description">
19780              <p>Maximum number of supported points in the
19781tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
19782            </td>
19783
19784            <td class="entry_units">
19785            </td>
19786
19787            <td class="entry_range">
19788              <p>&gt;= 64</p>
19789            </td>
19790
19791            <td class="entry_tags">
19792            </td>
19793
19794          </tr>
19795          <tr class="entries_header">
19796            <th class="th_details" colspan="5">Details</th>
19797          </tr>
19798          <tr class="entry_cont">
19799            <td class="entry_details" colspan="5">
19800              <p>If the actual number of points provided by the application (in
19801<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>*)  is less than max,<wbr/> the camera device will
19802resample the curve to its internal representation,<wbr/> using linear
19803interpolation.<wbr/></p>
19804<p>The output curves in the result metadata may have a different number
19805of points than the input curves,<wbr/> and will represent the actual
19806hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
19807            </td>
19808          </tr>
19809
19810          <tr class="entries_header">
19811            <th class="th_details" colspan="5">HAL Implementation Details</th>
19812          </tr>
19813          <tr class="entry_cont">
19814            <td class="entry_details" colspan="5">
19815              <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
19816            </td>
19817          </tr>
19818
19819          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19820           <!-- end of entry -->
19821        
19822                
19823          <tr class="entry" id="static_android.tonemap.availableToneMapModes">
19824            <td class="entry_name
19825             " rowspan="3">
19826              android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
19827            </td>
19828            <td class="entry_type">
19829                <span class="entry_type_name">byte</span>
19830                <span class="entry_type_container">x</span>
19831
19832                <span class="entry_type_array">
19833                  n
19834                </span>
19835              <span class="entry_type_visibility"> [public as enumList]</span>
19836
19837
19838
19839                <div class="entry_type_notes">list of enums</div>
19840
19841
19842            </td> <!-- entry_type -->
19843
19844            <td class="entry_description">
19845              <p>The set of tonemapping modes supported by this camera device.<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            </td>
19856
19857          </tr>
19858          <tr class="entries_header">
19859            <th class="th_details" colspan="5">Details</th>
19860          </tr>
19861          <tr class="entry_cont">
19862            <td class="entry_details" colspan="5">
19863              <p>This tag lists the valid modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>.<wbr/></p>
19864<p>Full-capability camera devices must always support CONTRAST_<wbr/>CURVE and
19865FAST.<wbr/></p>
19866            </td>
19867          </tr>
19868
19869
19870          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19871           <!-- end of entry -->
19872        
19873        
19874
19875      <!-- end of kind -->
19876      </tbody>
19877      <tr><td colspan="6" class="kind">dynamic</td></tr>
19878
19879      <thead class="entries_header">
19880        <tr>
19881          <th class="th_name">Property Name</th>
19882          <th class="th_type">Type</th>
19883          <th class="th_description">Description</th>
19884          <th class="th_units">Units</th>
19885          <th class="th_range">Range</th>
19886          <th class="th_tags">Tags</th>
19887        </tr>
19888      </thead>
19889
19890      <tbody>
19891
19892        
19893
19894        
19895
19896        
19897
19898        
19899
19900                
19901          <tr class="entry" id="dynamic_android.tonemap.curveBlue">
19902            <td class="entry_name
19903             " rowspan="3">
19904              android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
19905            </td>
19906            <td class="entry_type">
19907                <span class="entry_type_name">float</span>
19908                <span class="entry_type_container">x</span>
19909
19910                <span class="entry_type_array">
19911                  n x 2
19912                </span>
19913              <span class="entry_type_visibility"> [hidden]</span>
19914
19915
19916
19917                <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>
19918
19919
19920            </td> <!-- entry_type -->
19921
19922            <td class="entry_description">
19923              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
19924channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
19925CONTRAST_<wbr/>CURVE.<wbr/></p>
19926            </td>
19927
19928            <td class="entry_units">
19929              same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
19930            </td>
19931
19932            <td class="entry_range">
19933              <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p>
19934            </td>
19935
19936            <td class="entry_tags">
19937            </td>
19938
19939          </tr>
19940          <tr class="entries_header">
19941            <th class="th_details" colspan="5">Details</th>
19942          </tr>
19943          <tr class="entry_cont">
19944            <td class="entry_details" colspan="5">
19945              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
19946            </td>
19947          </tr>
19948
19949
19950          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19951           <!-- end of entry -->
19952        
19953                
19954          <tr class="entry" id="dynamic_android.tonemap.curveGreen">
19955            <td class="entry_name
19956             " rowspan="3">
19957              android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
19958            </td>
19959            <td class="entry_type">
19960                <span class="entry_type_name">float</span>
19961                <span class="entry_type_container">x</span>
19962
19963                <span class="entry_type_array">
19964                  n x 2
19965                </span>
19966              <span class="entry_type_visibility"> [hidden]</span>
19967
19968
19969
19970                <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>
19971
19972
19973            </td> <!-- entry_type -->
19974
19975            <td class="entry_description">
19976              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
19977channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
19978CONTRAST_<wbr/>CURVE.<wbr/></p>
19979            </td>
19980
19981            <td class="entry_units">
19982              same as android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
19983            </td>
19984
19985            <td class="entry_range">
19986              <p>same as <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a></p>
19987            </td>
19988
19989            <td class="entry_tags">
19990            </td>
19991
19992          </tr>
19993          <tr class="entries_header">
19994            <th class="th_details" colspan="5">Details</th>
19995          </tr>
19996          <tr class="entry_cont">
19997            <td class="entry_details" colspan="5">
19998              <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
19999            </td>
20000          </tr>
20001
20002
20003          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20004           <!-- end of entry -->
20005        
20006                
20007          <tr class="entry" id="dynamic_android.tonemap.curveRed">
20008            <td class="entry_name
20009             " rowspan="5">
20010              android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
20011            </td>
20012            <td class="entry_type">
20013                <span class="entry_type_name">float</span>
20014                <span class="entry_type_container">x</span>
20015
20016                <span class="entry_type_array">
20017                  n x 2
20018                </span>
20019              <span class="entry_type_visibility"> [hidden]</span>
20020
20021
20022
20023                <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>
20024
20025
20026            </td> <!-- entry_type -->
20027
20028            <td class="entry_description">
20029              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
20030channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
20031CONTRAST_<wbr/>CURVE.<wbr/></p>
20032            </td>
20033
20034            <td class="entry_units">
20035            </td>
20036
20037            <td class="entry_range">
20038              <p>0-1 on both input and output coordinates,<wbr/> normalized
20039as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
20040            </td>
20041
20042            <td class="entry_tags">
20043            </td>
20044
20045          </tr>
20046          <tr class="entries_header">
20047            <th class="th_details" colspan="5">Details</th>
20048          </tr>
20049          <tr class="entry_cont">
20050            <td class="entry_details" colspan="5">
20051              <p>Each channel's curve is defined by an array of control points:</p>
20052<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
20053  [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
200542 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
20055<p>These are sorted in order of increasing <code>Pin</code>; it is always
20056guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
20057define a complete mapping.<wbr/> For input values between control points,<wbr/>
20058the camera device must linearly interpolate between the control
20059points.<wbr/></p>
20060<p>Each curve can have an independent number of points,<wbr/> and the number
20061of points can be less than max (that is,<wbr/> the request doesn't have to
20062always provide a curve with number of points equivalent to
20063<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
20064<p>A few examples,<wbr/> and their corresponding graphical mappings; these
20065only specify the red channel and the precision is limited to 4
20066digits,<wbr/> for conciseness.<wbr/></p>
20067<p>Linear mapping:</p>
20068<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 ]
20069</code></pre>
20070<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
20071<p>Invert mapping:</p>
20072<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 ]
20073</code></pre>
20074<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
20075<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
20076<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
20077  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/>
20078  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/>
20079  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/>
20080  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 ]
20081</code></pre>
20082<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
20083<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
20084<pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
20085  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/>
20086  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/>
20087  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/>
20088  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 ]
20089</code></pre>
20090<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
20091            </td>
20092          </tr>
20093
20094          <tr class="entries_header">
20095            <th class="th_details" colspan="5">HAL Implementation Details</th>
20096          </tr>
20097          <tr class="entry_cont">
20098            <td class="entry_details" colspan="5">
20099              <p>For good quality of mapping,<wbr/> at least 128 control points are
20100preferred.<wbr/></p>
20101<p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
20102control points used as are available.<wbr/></p>
20103            </td>
20104          </tr>
20105
20106          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20107           <!-- end of entry -->
20108        
20109                
20110          <tr class="entry" id="dynamic_android.tonemap.curve">
20111            <td class="entry_name
20112             " rowspan="5">
20113              android.<wbr/>tonemap.<wbr/>curve
20114            </td>
20115            <td class="entry_type">
20116                <span class="entry_type_name">float</span>
20117
20118              <span class="entry_type_visibility"> [public as tonemapCurve]</span>
20119
20120              <span class="entry_type_synthetic">[synthetic] </span>
20121
20122
20123
20124
20125            </td> <!-- entry_type -->
20126
20127            <td class="entry_description">
20128              <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
20129is CONTRAST_<wbr/>CURVE.<wbr/></p>
20130            </td>
20131
20132            <td class="entry_units">
20133            </td>
20134
20135            <td class="entry_range">
20136            </td>
20137
20138            <td class="entry_tags">
20139            </td>
20140
20141          </tr>
20142          <tr class="entries_header">
20143            <th class="th_details" colspan="5">Details</th>
20144          </tr>
20145          <tr class="entry_cont">
20146            <td class="entry_details" colspan="5">
20147              <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
20148channels respectively.<wbr/> The following example uses the red channel as an
20149example.<wbr/> The same logic applies to green and blue channel.<wbr/>
20150Each channel's curve is defined by an array of control points:</p>
20151<pre><code>curveRed =
20152  [ 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) ]
201532 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
20154<p>These are sorted in order of increasing <code>Pin</code>; it is always
20155guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
20156define a complete mapping.<wbr/> For input values between control points,<wbr/>
20157the camera device must linearly interpolate between the control
20158points.<wbr/></p>
20159<p>Each curve can have an independent number of points,<wbr/> and the number
20160of points can be less than max (that is,<wbr/> the request doesn't have to
20161always provide a curve with number of points equivalent to
20162<a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
20163<p>A few examples,<wbr/> and their corresponding graphical mappings; these
20164only specify the red channel and the precision is limited to 4
20165digits,<wbr/> for conciseness.<wbr/></p>
20166<p>Linear mapping:</p>
20167<pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
20168</code></pre>
20169<p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
20170<p>Invert mapping:</p>
20171<pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
20172</code></pre>
20173<p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
20174<p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
20175<pre><code>curveRed = [
20176  (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/>
20177  (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/>
20178  (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/>
20179  (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) ]
20180</code></pre>
20181<p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
20182<p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
20183<pre><code>curveRed = [
20184  (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/>
20185  (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/>
20186  (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/>
20187  (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) ]
20188</code></pre>
20189<p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
20190            </td>
20191          </tr>
20192
20193          <tr class="entries_header">
20194            <th class="th_details" colspan="5">HAL Implementation Details</th>
20195          </tr>
20196          <tr class="entry_cont">
20197            <td class="entry_details" colspan="5">
20198              <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
20199curveBlue entries.<wbr/></p>
20200            </td>
20201          </tr>
20202
20203          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20204           <!-- end of entry -->
20205        
20206                
20207          <tr class="entry" id="dynamic_android.tonemap.mode">
20208            <td class="entry_name
20209             " rowspan="3">
20210              android.<wbr/>tonemap.<wbr/>mode
20211            </td>
20212            <td class="entry_type">
20213                <span class="entry_type_name entry_type_name_enum">byte</span>
20214
20215              <span class="entry_type_visibility"> [public]</span>
20216
20217
20218
20219
20220                <ul class="entry_type_enum">
20221                  <li>
20222                    <span class="entry_type_enum_name">CONTRAST_CURVE</span>
20223                    <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
20224the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
20225<p>All color enhancement and tonemapping must be disabled,<wbr/> except
20226for applying the tonemapping curve specified by
20227<a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
20228<p>Must not slow down frame rate relative to raw
20229sensor output.<wbr/></p></span>
20230                  </li>
20231                  <li>
20232                    <span class="entry_type_enum_name">FAST</span>
20233                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p>
20234<p>Should not slow down frame rate relative to raw sensor output.<wbr/></p></span>
20235                  </li>
20236                  <li>
20237                    <span class="entry_type_enum_name">HIGH_QUALITY</span>
20238                    <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied.<wbr/></p>
20239<p>May slow down frame rate relative to raw sensor output.<wbr/></p></span>
20240                  </li>
20241                </ul>
20242
20243            </td> <!-- entry_type -->
20244
20245            <td class="entry_description">
20246              <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
20247            </td>
20248
20249            <td class="entry_units">
20250            </td>
20251
20252            <td class="entry_range">
20253            </td>
20254
20255            <td class="entry_tags">
20256            </td>
20257
20258          </tr>
20259          <tr class="entries_header">
20260            <th class="th_details" colspan="5">Details</th>
20261          </tr>
20262          <tr class="entry_cont">
20263            <td class="entry_details" colspan="5">
20264              <p>When switching to an application-defined contrast curve by setting
20265<a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
20266per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
20267mapping from input high-bit-depth pixel value to the output
20268low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
20269and output may change depending on the camera pipeline,<wbr/> the values
20270are specified by normalized floating-point numbers.<wbr/></p>
20271<p>More-complex color mapping operations such as 3D color look-up
20272tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
20273transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
20274CONTRAST_<wbr/>CURVE.<wbr/></p>
20275<p>This must be set to a valid mode in
20276<a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a>.<wbr/></p>
20277<p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
20278emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
20279These values are always available,<wbr/> and as close as possible to the
20280actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
20281<p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
20282provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
20283roughly the same.<wbr/></p>
20284            </td>
20285          </tr>
20286
20287
20288          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20289           <!-- end of entry -->
20290        
20291        
20292
20293      <!-- end of kind -->
20294      </tbody>
20295
20296  <!-- end of section -->
20297  <tr><td colspan="6" id="section_led" class="section">led</td></tr>
20298
20299
20300      <tr><td colspan="6" class="kind">controls</td></tr>
20301
20302      <thead class="entries_header">
20303        <tr>
20304          <th class="th_name">Property Name</th>
20305          <th class="th_type">Type</th>
20306          <th class="th_description">Description</th>
20307          <th class="th_units">Units</th>
20308          <th class="th_range">Range</th>
20309          <th class="th_tags">Tags</th>
20310        </tr>
20311      </thead>
20312
20313      <tbody>
20314
20315        
20316
20317        
20318
20319        
20320
20321        
20322
20323                
20324          <tr class="entry" id="controls_android.led.transmit">
20325            <td class="entry_name
20326             " rowspan="1">
20327              android.<wbr/>led.<wbr/>transmit
20328            </td>
20329            <td class="entry_type">
20330                <span class="entry_type_name entry_type_name_enum">byte</span>
20331
20332              <span class="entry_type_visibility"> [hidden as boolean]</span>
20333
20334
20335
20336
20337                <ul class="entry_type_enum">
20338                  <li>
20339                    <span class="entry_type_enum_name">OFF</span>
20340                  </li>
20341                  <li>
20342                    <span class="entry_type_enum_name">ON</span>
20343                  </li>
20344                </ul>
20345
20346            </td> <!-- entry_type -->
20347
20348            <td class="entry_description">
20349              <p>This LED is nominally used to indicate to the user
20350that the camera is powered on and may be streaming images back to the
20351Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
20352disable this when video is processed locally and not transmitted to
20353any untrusted applications.<wbr/></p>
20354<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
20355transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
20356data is stored locally on the device.<wbr/></p>
20357<p>The LED <em>may</em> be off if a trusted application is using the data that
20358doesn't violate the above rules.<wbr/></p>
20359            </td>
20360
20361            <td class="entry_units">
20362            </td>
20363
20364            <td class="entry_range">
20365            </td>
20366
20367            <td class="entry_tags">
20368            </td>
20369
20370          </tr>
20371
20372
20373          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20374           <!-- end of entry -->
20375        
20376        
20377
20378      <!-- end of kind -->
20379      </tbody>
20380      <tr><td colspan="6" class="kind">dynamic</td></tr>
20381
20382      <thead class="entries_header">
20383        <tr>
20384          <th class="th_name">Property Name</th>
20385          <th class="th_type">Type</th>
20386          <th class="th_description">Description</th>
20387          <th class="th_units">Units</th>
20388          <th class="th_range">Range</th>
20389          <th class="th_tags">Tags</th>
20390        </tr>
20391      </thead>
20392
20393      <tbody>
20394
20395        
20396
20397        
20398
20399        
20400
20401        
20402
20403                
20404          <tr class="entry" id="dynamic_android.led.transmit">
20405            <td class="entry_name
20406             " rowspan="1">
20407              android.<wbr/>led.<wbr/>transmit
20408            </td>
20409            <td class="entry_type">
20410                <span class="entry_type_name entry_type_name_enum">byte</span>
20411
20412              <span class="entry_type_visibility"> [hidden as boolean]</span>
20413
20414
20415
20416
20417                <ul class="entry_type_enum">
20418                  <li>
20419                    <span class="entry_type_enum_name">OFF</span>
20420                  </li>
20421                  <li>
20422                    <span class="entry_type_enum_name">ON</span>
20423                  </li>
20424                </ul>
20425
20426            </td> <!-- entry_type -->
20427
20428            <td class="entry_description">
20429              <p>This LED is nominally used to indicate to the user
20430that the camera is powered on and may be streaming images back to the
20431Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
20432disable this when video is processed locally and not transmitted to
20433any untrusted applications.<wbr/></p>
20434<p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
20435transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
20436data is stored locally on the device.<wbr/></p>
20437<p>The LED <em>may</em> be off if a trusted application is using the data that
20438doesn't violate the above rules.<wbr/></p>
20439            </td>
20440
20441            <td class="entry_units">
20442            </td>
20443
20444            <td class="entry_range">
20445            </td>
20446
20447            <td class="entry_tags">
20448            </td>
20449
20450          </tr>
20451
20452
20453          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20454           <!-- end of entry -->
20455        
20456        
20457
20458      <!-- end of kind -->
20459      </tbody>
20460      <tr><td colspan="6" class="kind">static</td></tr>
20461
20462      <thead class="entries_header">
20463        <tr>
20464          <th class="th_name">Property Name</th>
20465          <th class="th_type">Type</th>
20466          <th class="th_description">Description</th>
20467          <th class="th_units">Units</th>
20468          <th class="th_range">Range</th>
20469          <th class="th_tags">Tags</th>
20470        </tr>
20471      </thead>
20472
20473      <tbody>
20474
20475        
20476
20477        
20478
20479        
20480
20481        
20482
20483                
20484          <tr class="entry" id="static_android.led.availableLeds">
20485            <td class="entry_name
20486             " rowspan="1">
20487              android.<wbr/>led.<wbr/>available<wbr/>Leds
20488            </td>
20489            <td class="entry_type">
20490                <span class="entry_type_name entry_type_name_enum">byte</span>
20491                <span class="entry_type_container">x</span>
20492
20493                <span class="entry_type_array">
20494                  n
20495                </span>
20496              <span class="entry_type_visibility"> [hidden]</span>
20497
20498
20499
20500
20501                <ul class="entry_type_enum">
20502                  <li>
20503                    <span class="entry_type_enum_name">TRANSMIT</span>
20504                    <span class="entry_type_enum_notes"><p><a href="#controls_android.led.transmit">android.<wbr/>led.<wbr/>transmit</a> control is used</p></span>
20505                  </li>
20506                </ul>
20507
20508            </td> <!-- entry_type -->
20509
20510            <td class="entry_description">
20511              <p>A list of camera LEDs that are available on this system.<wbr/></p>
20512            </td>
20513
20514            <td class="entry_units">
20515            </td>
20516
20517            <td class="entry_range">
20518            </td>
20519
20520            <td class="entry_tags">
20521            </td>
20522
20523          </tr>
20524
20525
20526          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20527           <!-- end of entry -->
20528        
20529        
20530
20531      <!-- end of kind -->
20532      </tbody>
20533
20534  <!-- end of section -->
20535  <tr><td colspan="6" id="section_info" class="section">info</td></tr>
20536
20537
20538      <tr><td colspan="6" class="kind">static</td></tr>
20539
20540      <thead class="entries_header">
20541        <tr>
20542          <th class="th_name">Property Name</th>
20543          <th class="th_type">Type</th>
20544          <th class="th_description">Description</th>
20545          <th class="th_units">Units</th>
20546          <th class="th_range">Range</th>
20547          <th class="th_tags">Tags</th>
20548        </tr>
20549      </thead>
20550
20551      <tbody>
20552
20553        
20554
20555        
20556
20557        
20558
20559        
20560
20561                
20562          <tr class="entry" id="static_android.info.supportedHardwareLevel">
20563            <td class="entry_name
20564             " rowspan="5">
20565              android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
20566            </td>
20567            <td class="entry_type">
20568                <span class="entry_type_name entry_type_name_enum">byte</span>
20569
20570              <span class="entry_type_visibility"> [public]</span>
20571
20572
20573
20574
20575                <ul class="entry_type_enum">
20576                  <li>
20577                    <span class="entry_type_enum_name">LIMITED</span>
20578                  </li>
20579                  <li>
20580                    <span class="entry_type_enum_name">FULL</span>
20581                  </li>
20582                </ul>
20583
20584            </td> <!-- entry_type -->
20585
20586            <td class="entry_description">
20587              <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
20588            </td>
20589
20590            <td class="entry_units">
20591            </td>
20592
20593            <td class="entry_range">
20594              <p>Optional.<wbr/> Default value is LIMITED.<wbr/></p>
20595            </td>
20596
20597            <td class="entry_tags">
20598            </td>
20599
20600          </tr>
20601          <tr class="entries_header">
20602            <th class="th_details" colspan="5">Details</th>
20603          </tr>
20604          <tr class="entry_cont">
20605            <td class="entry_details" colspan="5">
20606              <p>Camera devices will come in two flavors: LIMITED and FULL.<wbr/></p>
20607<p>A FULL device has the most support possible and will enable the
20608widest range of use cases such as:</p>
20609<ul>
20610<li>30fps at maximum resolution (== sensor resolution) is preferred,<wbr/> more than 20fps is required.<wbr/></li>
20611<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>
20612<li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR)</li>
20613<li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>POST_<wbr/>PROCESSING)</li>
20614</ul>
20615<p>A LIMITED device may have some or none of the above characteristics.<wbr/>
20616To find out more refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
20617            </td>
20618          </tr>
20619
20620          <tr class="entries_header">
20621            <th class="th_details" colspan="5">HAL Implementation Details</th>
20622          </tr>
20623          <tr class="entry_cont">
20624            <td class="entry_details" colspan="5">
20625              <p>The camera 3 HAL device can implement one of two possible
20626operational modes; limited and full.<wbr/> Full support is
20627expected from new higher-end devices.<wbr/> Limited mode has
20628hardware requirements roughly in line with those for a
20629camera HAL device v1 implementation,<wbr/> and is expected from
20630older or inexpensive devices.<wbr/> Full is a strict superset of
20631limited,<wbr/> and they share the same essential operational flow.<wbr/></p>
20632<p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
20633            </td>
20634          </tr>
20635
20636          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20637           <!-- end of entry -->
20638        
20639        
20640
20641      <!-- end of kind -->
20642      </tbody>
20643
20644  <!-- end of section -->
20645  <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr>
20646
20647
20648      <tr><td colspan="6" class="kind">controls</td></tr>
20649
20650      <thead class="entries_header">
20651        <tr>
20652          <th class="th_name">Property Name</th>
20653          <th class="th_type">Type</th>
20654          <th class="th_description">Description</th>
20655          <th class="th_units">Units</th>
20656          <th class="th_range">Range</th>
20657          <th class="th_tags">Tags</th>
20658        </tr>
20659      </thead>
20660
20661      <tbody>
20662
20663        
20664
20665        
20666
20667        
20668
20669        
20670
20671                
20672          <tr class="entry" id="controls_android.blackLevel.lock">
20673            <td class="entry_name
20674             " rowspan="5">
20675              android.<wbr/>black<wbr/>Level.<wbr/>lock
20676            </td>
20677            <td class="entry_type">
20678                <span class="entry_type_name entry_type_name_enum">byte</span>
20679
20680              <span class="entry_type_visibility"> [public as boolean]</span>
20681
20682
20683
20684
20685                <ul class="entry_type_enum">
20686                  <li>
20687                    <span class="entry_type_enum_name">OFF</span>
20688                  </li>
20689                  <li>
20690                    <span class="entry_type_enum_name">ON</span>
20691                  </li>
20692                </ul>
20693
20694            </td> <!-- entry_type -->
20695
20696            <td class="entry_description">
20697              <p>Whether black-level compensation is locked
20698to its current values,<wbr/> or is free to vary.<wbr/></p>
20699            </td>
20700
20701            <td class="entry_units">
20702            </td>
20703
20704            <td class="entry_range">
20705            </td>
20706
20707            <td class="entry_tags">
20708              <ul class="entry_tags">
20709                  <li><a href="#tag_HAL2">HAL2</a></li>
20710              </ul>
20711            </td>
20712
20713          </tr>
20714          <tr class="entries_header">
20715            <th class="th_details" colspan="5">Details</th>
20716          </tr>
20717          <tr class="entry_cont">
20718            <td class="entry_details" colspan="5">
20719              <p>When set to ON,<wbr/> the values used for black-level
20720compensation will not change until the lock is set to
20721OFF.<wbr/></p>
20722<p>Since changes to certain capture parameters (such as
20723exposure time) may require resetting of black level
20724compensation,<wbr/> the camera device must report whether setting
20725the black level lock was successful in the output result
20726metadata.<wbr/></p>
20727<p>For example,<wbr/> if a sequence of requests is as follows:</p>
20728<ul>
20729<li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
20730<li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
20731<li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
20732<li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
20733<li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
20734<li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
20735</ul>
20736<p>And the exposure change in Request 4 requires the camera
20737device to reset the black level offsets,<wbr/> then the output
20738result metadata is expected to be:</p>
20739<ul>
20740<li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
20741<li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
20742<li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
20743<li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
20744<li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
20745<li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
20746</ul>
20747<p>This indicates to the application that on frame 4,<wbr/> black
20748levels were reset due to exposure value changes,<wbr/> and pixel
20749values may not be consistent across captures.<wbr/></p>
20750<p>The camera device will maintain the lock to the extent
20751possible,<wbr/> only overriding the lock to OFF when changes to
20752other request parameters require a black level recalculation
20753or reset.<wbr/></p>
20754            </td>
20755          </tr>
20756
20757          <tr class="entries_header">
20758            <th class="th_details" colspan="5">HAL Implementation Details</th>
20759          </tr>
20760          <tr class="entry_cont">
20761            <td class="entry_details" colspan="5">
20762              <p>If for some reason black level locking is no longer possible
20763(for example,<wbr/> the analog gain has changed,<wbr/> which forces
20764black level offsets to be recalculated),<wbr/> then the HAL must
20765override this request (and it must report 'OFF' when this
20766does happen) until the next capture for which locking is
20767possible again.<wbr/></p>
20768            </td>
20769          </tr>
20770
20771          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20772           <!-- end of entry -->
20773        
20774        
20775
20776      <!-- end of kind -->
20777      </tbody>
20778      <tr><td colspan="6" class="kind">dynamic</td></tr>
20779
20780      <thead class="entries_header">
20781        <tr>
20782          <th class="th_name">Property Name</th>
20783          <th class="th_type">Type</th>
20784          <th class="th_description">Description</th>
20785          <th class="th_units">Units</th>
20786          <th class="th_range">Range</th>
20787          <th class="th_tags">Tags</th>
20788        </tr>
20789      </thead>
20790
20791      <tbody>
20792
20793        
20794
20795        
20796
20797        
20798
20799        
20800
20801                
20802          <tr class="entry" id="dynamic_android.blackLevel.lock">
20803            <td class="entry_name
20804             " rowspan="5">
20805              android.<wbr/>black<wbr/>Level.<wbr/>lock
20806            </td>
20807            <td class="entry_type">
20808                <span class="entry_type_name entry_type_name_enum">byte</span>
20809
20810              <span class="entry_type_visibility"> [public as boolean]</span>
20811
20812
20813
20814
20815                <ul class="entry_type_enum">
20816                  <li>
20817                    <span class="entry_type_enum_name">OFF</span>
20818                  </li>
20819                  <li>
20820                    <span class="entry_type_enum_name">ON</span>
20821                  </li>
20822                </ul>
20823
20824            </td> <!-- entry_type -->
20825
20826            <td class="entry_description">
20827              <p>Whether black-level compensation is locked
20828to its current values,<wbr/> or is free to vary.<wbr/></p>
20829            </td>
20830
20831            <td class="entry_units">
20832            </td>
20833
20834            <td class="entry_range">
20835            </td>
20836
20837            <td class="entry_tags">
20838              <ul class="entry_tags">
20839                  <li><a href="#tag_HAL2">HAL2</a></li>
20840              </ul>
20841            </td>
20842
20843          </tr>
20844          <tr class="entries_header">
20845            <th class="th_details" colspan="5">Details</th>
20846          </tr>
20847          <tr class="entry_cont">
20848            <td class="entry_details" colspan="5">
20849              <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
20850ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
20851a change in other capture settings forced the camera device to
20852perform a black level reset.<wbr/></p>
20853            </td>
20854          </tr>
20855
20856          <tr class="entries_header">
20857            <th class="th_details" colspan="5">HAL Implementation Details</th>
20858          </tr>
20859          <tr class="entry_cont">
20860            <td class="entry_details" colspan="5">
20861              <p>If for some reason black level locking is no longer possible
20862(for example,<wbr/> the analog gain has changed,<wbr/> which forces
20863black level offsets to be recalculated),<wbr/> then the HAL must
20864override this request (and it must report 'OFF' when this
20865does happen) until the next capture for which locking is
20866possible again.<wbr/></p>
20867            </td>
20868          </tr>
20869
20870          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20871           <!-- end of entry -->
20872        
20873        
20874
20875      <!-- end of kind -->
20876      </tbody>
20877
20878  <!-- end of section -->
20879  <tr><td colspan="6" id="section_sync" class="section">sync</td></tr>
20880
20881
20882      <tr><td colspan="6" class="kind">dynamic</td></tr>
20883
20884      <thead class="entries_header">
20885        <tr>
20886          <th class="th_name">Property Name</th>
20887          <th class="th_type">Type</th>
20888          <th class="th_description">Description</th>
20889          <th class="th_units">Units</th>
20890          <th class="th_range">Range</th>
20891          <th class="th_tags">Tags</th>
20892        </tr>
20893      </thead>
20894
20895      <tbody>
20896
20897        
20898
20899        
20900
20901        
20902
20903        
20904
20905                
20906          <tr class="entry" id="dynamic_android.sync.frameNumber">
20907            <td class="entry_name
20908             " rowspan="5">
20909              android.<wbr/>sync.<wbr/>frame<wbr/>Number
20910            </td>
20911            <td class="entry_type">
20912                <span class="entry_type_name entry_type_name_enum">int64</span>
20913
20914              <span class="entry_type_visibility"> [hidden]</span>
20915
20916
20917
20918
20919                <ul class="entry_type_enum">
20920                  <li>
20921                    <span class="entry_type_enum_name">CONVERGING</span>
20922                    <span class="entry_type_enum_value">-1</span>
20923                    <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/>
20924Synchronization is in progress,<wbr/> and reading metadata from this
20925result may include a mix of data that have taken effect since the
20926last synchronization time.<wbr/></p>
20927<p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
20928this value will update to the actual frame number frame number
20929the result is guaranteed to be synchronized to (as long as the
20930request settings remain constant).<wbr/></p></span>
20931                  </li>
20932                  <li>
20933                    <span class="entry_type_enum_name">UNKNOWN</span>
20934                    <span class="entry_type_enum_value">-2</span>
20935                    <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/> The
20936result may have already converged,<wbr/> or it may be in progress.<wbr/>
20937Reading from this result may include some mix of settings from
20938past requests.<wbr/></p>
20939<p>After a settings change,<wbr/> the new settings will eventually all
20940take effect for the output buffers and results.<wbr/> However,<wbr/> this
20941value will not change when that happens.<wbr/> Altering settings
20942rapidly may provide outcomes using mixes of settings from recent
20943requests.<wbr/></p>
20944<p>This value is intended primarily for backwards compatibility with
20945the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
20946                  </li>
20947                </ul>
20948
20949            </td> <!-- entry_type -->
20950
20951            <td class="entry_description">
20952              <p>The frame number corresponding to the last request
20953with which the output result (metadata + buffers) has been fully
20954synchronized.<wbr/></p>
20955            </td>
20956
20957            <td class="entry_units">
20958            </td>
20959
20960            <td class="entry_range">
20961              <p>Either a non-negative value corresponding to a
20962<code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
20963            </td>
20964
20965            <td class="entry_tags">
20966              <ul class="entry_tags">
20967                  <li><a href="#tag_V1">V1</a></li>
20968              </ul>
20969            </td>
20970
20971          </tr>
20972          <tr class="entries_header">
20973            <th class="th_details" colspan="5">Details</th>
20974          </tr>
20975          <tr class="entry_cont">
20976            <td class="entry_details" colspan="5">
20977              <p>When a request is submitted to the camera device,<wbr/> there is usually a
20978delay of several frames before the controls get applied.<wbr/> A camera
20979device may either choose to account for this delay by implementing a
20980pipeline and carefully submit well-timed atomic control updates,<wbr/> or
20981it may start streaming control changes that span over several frame
20982boundaries.<wbr/></p>
20983<p>In the latter case,<wbr/> whenever a request's settings change relative to
20984the previous submitted request,<wbr/> the full set of changes may take
20985multiple frame durations to fully take effect.<wbr/> Some settings may
20986take effect sooner (in less frame durations) than others.<wbr/></p>
20987<p>While a set of control changes are being propagated,<wbr/> this value
20988will be CONVERGING.<wbr/></p>
20989<p>Once it is fully known that a set of control changes have been
20990finished propagating,<wbr/> and the resulting updated control settings
20991have been read back by the camera device,<wbr/> this value will be set
20992to a non-negative frame number (corresponding to the request to
20993which the results have synchronized to).<wbr/></p>
20994<p>Older camera device implementations may not have a way to detect
20995when all camera controls have been applied,<wbr/> and will always set this
20996value to UNKNOWN.<wbr/></p>
20997<p>FULL capability devices will always have this value set to the
20998frame number of the request corresponding to this result.<wbr/></p>
20999<p><em>Further details</em>:</p>
21000<ul>
21001<li>Whenever a request differs from the last request,<wbr/> any future
21002results not yet returned may have this value set to CONVERGING (this
21003could include any in-progress captures not yet returned by the camera
21004device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
21005<li>Submitting a series of multiple requests that differ from the
21006previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
21007moves the new synchronization frame to the last non-repeating
21008request (using the smallest frame number from the contiguous list of
21009repeating requests).<wbr/></li>
21010<li>Submitting the same request repeatedly will not change this value
21011to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
21012<li>When this value changes to non-negative,<wbr/> that means that all of the
21013metadata controls from the request have been applied,<wbr/> all of the
21014metadata controls from the camera device have been read to the
21015updated values (into the result),<wbr/> and all of the graphics buffers
21016corresponding to this result are also synchronized to the request.<wbr/></li>
21017</ul>
21018<p><em>Pipeline considerations</em>:</p>
21019<p>Submitting a request with updated controls relative to the previously
21020submitted requests may also invalidate the synchronization state
21021of all the results corresponding to currently in-flight requests.<wbr/></p>
21022<p>In other words,<wbr/> results for this current request and up to
21023<a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
21024<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
21025            </td>
21026          </tr>
21027
21028          <tr class="entries_header">
21029            <th class="th_details" colspan="5">HAL Implementation Details</th>
21030          </tr>
21031          <tr class="entry_cont">
21032            <td class="entry_details" colspan="5">
21033              <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
21034is also UNKNOWN.<wbr/></p>
21035<p>FULL capability devices should simply set this value to the
21036<code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
21037            </td>
21038          </tr>
21039
21040          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21041           <!-- end of entry -->
21042        
21043        
21044
21045      <!-- end of kind -->
21046      </tbody>
21047      <tr><td colspan="6" class="kind">static</td></tr>
21048
21049      <thead class="entries_header">
21050        <tr>
21051          <th class="th_name">Property Name</th>
21052          <th class="th_type">Type</th>
21053          <th class="th_description">Description</th>
21054          <th class="th_units">Units</th>
21055          <th class="th_range">Range</th>
21056          <th class="th_tags">Tags</th>
21057        </tr>
21058      </thead>
21059
21060      <tbody>
21061
21062        
21063
21064        
21065
21066        
21067
21068        
21069
21070                
21071          <tr class="entry" id="static_android.sync.maxLatency">
21072            <td class="entry_name
21073             " rowspan="5">
21074              android.<wbr/>sync.<wbr/>max<wbr/>Latency
21075            </td>
21076            <td class="entry_type">
21077                <span class="entry_type_name entry_type_name_enum">int32</span>
21078
21079              <span class="entry_type_visibility"> [public]</span>
21080
21081
21082
21083
21084                <ul class="entry_type_enum">
21085                  <li>
21086                    <span class="entry_type_enum_name">PER_FRAME_CONTROL</span>
21087                    <span class="entry_type_enum_value">0</span>
21088                    <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/>
21089(and furthermore for all results,<wbr/>
21090<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a></code>)</p>
21091<p>Changing controls over multiple requests one after another will
21092produce results that have those controls applied atomically
21093each frame.<wbr/></p>
21094<p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
21095                  </li>
21096                  <li>
21097                    <span class="entry_type_enum_name">UNKNOWN</span>
21098                    <span class="entry_type_enum_value">-1</span>
21099                    <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
21100of the past requests applied to the camera settings.<wbr/></p>
21101<p>By submitting a series of identical requests,<wbr/> the camera device
21102will eventually have the camera settings applied,<wbr/> but it is
21103unknown when that exact point will be.<wbr/></p></span>
21104                  </li>
21105                </ul>
21106
21107            </td> <!-- entry_type -->
21108
21109            <td class="entry_description">
21110              <p>The maximum number of frames that can occur after a request
21111(different than the previous) has been submitted,<wbr/> and before the
21112result's state becomes synchronized (by setting
21113<a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> to a non-negative value).<wbr/></p>
21114            </td>
21115
21116            <td class="entry_units">
21117              number of processed requests
21118            </td>
21119
21120            <td class="entry_range">
21121              <p>&gt;= -1</p>
21122            </td>
21123
21124            <td class="entry_tags">
21125              <ul class="entry_tags">
21126                  <li><a href="#tag_V1">V1</a></li>
21127              </ul>
21128            </td>
21129
21130          </tr>
21131          <tr class="entries_header">
21132            <th class="th_details" colspan="5">Details</th>
21133          </tr>
21134          <tr class="entry_cont">
21135            <td class="entry_details" colspan="5">
21136              <p>This defines the maximum distance (in number of metadata results),<wbr/>
21137between <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> and the equivalent
21138<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a>.<wbr/></p>
21139<p>In other words this acts as an upper boundary for how many frames
21140must occur before the camera device knows for a fact that the new
21141submitted camera settings have been applied in outgoing frames.<wbr/></p>
21142<p>For example if the distance was 2,<wbr/></p>
21143<pre><code>initial request = X (repeating)
21144request1 = X
21145request2 = Y
21146request3 = Y
21147request4 = Y
21148
21149where requestN has frameNumber N,<wbr/> and the first of the repeating
21150initial request's has frameNumber F (and F &lt; 1).<wbr/>
21151
21152initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
21153result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
21154result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
21155result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
21156result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
21157
21158where resultN has frameNumber N.<wbr/>
21159</code></pre>
21160<p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
21161<code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
21162<code>4 - 2 = 2</code>.<wbr/></p>
21163            </td>
21164          </tr>
21165
21166          <tr class="entries_header">
21167            <th class="th_details" colspan="5">HAL Implementation Details</th>
21168          </tr>
21169          <tr class="entry_cont">
21170            <td class="entry_details" colspan="5">
21171              <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
21172<a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a>.<wbr/></p>
21173<p>LIMITED devices are strongly encouraged to use a non-negative
21174value.<wbr/> If UNKNOWN is used here then app developers do not have a way
21175to know when sensor settings have been applied.<wbr/></p>
21176            </td>
21177          </tr>
21178
21179          <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21180           <!-- end of entry -->
21181        
21182        
21183
21184      <!-- end of kind -->
21185      </tbody>
21186
21187  <!-- end of section -->
21188<!-- </namespace> -->
21189  </table>
21190
21191  <div class="tags" id="tag_index">
21192    <h2>Tags</h2>
21193    <ul>
21194      <li id="tag_BC">BC - 
21195        Needed for backwards compatibility with old Java API
21196    
21197        <ul class="tags_entries">
21198          <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
21199          <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
21200          <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
21201          <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
21202          <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
21203          <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
21204          <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
21205          <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
21206          <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
21207          <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
21208          <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
21209          <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
21210          <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
21211          <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
21212          <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
21213          <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
21214          <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
21215          <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
21216          <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
21217          <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
21218          <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
21219          <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
21220          <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
21221          <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
21222          <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
21223          <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
21224          <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
21225          <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
21226          <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
21227          <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
21228          <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
21229          <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
21230          <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
21231          <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
21232          <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
21233          <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
21234          <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
21235          <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
21236          <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
21237          <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
21238          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
21239          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
21240          <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
21241          <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
21242          <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
21243          <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
21244          <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
21245          <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
21246          <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
21247          <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
21248          <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
21249          <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
21250          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
21251          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
21252          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
21253          <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
21254          <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
21255          <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
21256          <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
21257          <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
21258          <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
21259          <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
21260          <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
21261          <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
21262          <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
21263        </ul>
21264      </li> <!-- tag_BC -->
21265      <li id="tag_V1">V1 - 
21266        New features for first camera 2 release (API1)
21267    
21268        <ul class="tags_entries">
21269          <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
21270          <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
21271          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
21272          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
21273          <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
21274          <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
21275          <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
21276          <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
21277          <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
21278          <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
21279          <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
21280          <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
21281          <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
21282          <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
21283          <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
21284          <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
21285          <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
21286          <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
21287          <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
21288          <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
21289          <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
21290          <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
21291          <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
21292          <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
21293          <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
21294          <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
21295          <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
21296          <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
21297          <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
21298          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
21299          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
21300          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
21301          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
21302          <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
21303          <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
21304          <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
21305          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
21306          <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
21307          <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
21308          <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
21309          <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
21310        </ul>
21311      </li> <!-- tag_V1 -->
21312      <li id="tag_DNG">DNG - 
21313        Needed for DNG file support
21314    
21315        <ul class="tags_entries">
21316          <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
21317          <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
21318          <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
21319          <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
21320          <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
21321          <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
21322          <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
21323          <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
21324          <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
21325          <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
21326          <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
21327          <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
21328          <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
21329          <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
21330          <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
21331          <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
21332          <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
21333          <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
21334          <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
21335          <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
21336          <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
21337          <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
21338          <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
21339          <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
21340        </ul>
21341      </li> <!-- tag_DNG -->
21342      <li id="tag_HAL2">HAL2 - 
21343        Entry is only used by camera device HAL 2.x
21344    
21345        <ul class="tags_entries">
21346          <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
21347          <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
21348          <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
21349          <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
21350          <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
21351        </ul>
21352      </li> <!-- tag_HAL2 -->
21353      <li id="tag_FULL">FULL - 
21354        Entry is required for full hardware level devices, and optional for other hardware levels
21355    
21356        <ul class="tags_entries">
21357          <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
21358        </ul>
21359      </li> <!-- tag_FULL -->
21360      <li id="tag_FUTURE">FUTURE - 
21361        Entry is  under-specified and is not required for now. This is for book-keeping purpose,
21362        do not implement or use it, it may be revised for future.
21363    
21364        <ul class="tags_entries">
21365          <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
21366          <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
21367          <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
21368          <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
21369          <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
21370          <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
21371          <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
21372          <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
21373          <li><a href="#static_android.lens.opticalAxisAngle">android.lens.opticalAxisAngle</a> (static)</li>
21374          <li><a href="#static_android.lens.position">android.lens.position</a> (static)</li>
21375          <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
21376          <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
21377          <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
21378          <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
21379          <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
21380          <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
21381          <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
21382          <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
21383          <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
21384          <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
21385          <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
21386          <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
21387          <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
21388        </ul>
21389      </li> <!-- tag_FUTURE -->
21390    </ul>
21391  </div>
21392
21393  [ <a href="#">top</a> ]
21394
21395</body>
21396</html>
21397