OSDN Git Service

Camera: update FPS range spec
[android-x86/system-media.git] / camera / docs / docs.html
1 <!DOCTYPE html>
2 <html>
3 <!-- Copyright (C) 2012 The Android Open Source Project
4
5      Licensed under the Apache License, Version 2.0 (the "License");
6      you may not use this file except in compliance with the License.
7      You may obtain a copy of the License at
8
9           http://www.apache.org/licenses/LICENSE-2.0
10
11      Unless required by applicable law or agreed to in writing, software
12      distributed under the License is distributed on an "AS IS" BASIS,
13      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14      See the License for the specific language governing permissions and
15      limitations under the License.
16 -->
17 <head>
18   <!-- automatically generated from html.mako. do NOT edit directly -->
19   <meta charset="utf-8" />
20   <title>Android Camera HAL3.2 Properties</title>
21   <style type="text/css">
22      body { background-color: #f7f7f7; font-family: Roboto, sans-serif;}
23      h1 { color: #333333; }
24      h2 { color: #333333; }
25      a:link { color: #258aaf; text-decoration: none}
26      a:hover { color: #459aaf; text-decoration: underline }
27      a:visited { color: #154a5f; text-decoration: none}
28     .section { color: #eeeeee; font-size: 1.5em; font-weight: bold; background-color: #888888; padding: 0.5em 0em 0.5em 0.5em; border-width: thick thin thin thin; border-color: #111111 #777777 #777777 #777777}
29     .kind { color: #eeeeee; font-size: 1.2em; font-weight: bold; padding-left: 1.5em; background-color: #aaaaaa }
30     .entry { background-color: #f0f0f0 }
31     .entry_cont { background-color: #f0f0f0 }
32     .entries_header { background-color: #dddddd; text-align: center}
33
34     /* toc style */
35     .toc_section_header { font-size:1.3em;  }
36     .toc_kind_header { font-size:1.2em;  }
37     .toc_deprecated { text-decoration:line-through; }
38
39     /* table column sizes */
40     table { border-collapse:collapse; table-layout: fixed; width: 100%; word-wrap: break-word }
41     td,th { border: 1px solid; border-color: #aaaaaa; padding-left: 0.5em; padding-right: 0.5em }
42     .th_name { width: 20% }
43     .th_units { width: 10% }
44     .th_tags { width: 5% }
45     .th_details { width: 25% }
46     .th_type { width: 20% }
47     .th_description { width: 20% }
48     .th_range { width: 10% }
49     td { font-size: 0.9em; }
50
51     /* hide the first thead, we need it there only to enforce column sizes */
52     .thead_dummy { visibility: hidden; }
53
54     /* Entry flair */
55     .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; }
56     .entry_name_deprecated { text-decoration:line-through; }
57
58     /* Entry type flair */
59     .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;}
60     .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" }
61     .entry_type_visibility { font-weight: bolder; padding-left:1em}
62     .entry_type_synthetic { font-weight: bolder; color: #996600; }
63     .entry_type_hwlevel { font-weight: bolder; color: #000066; }
64     .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; }
65     .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
66     .entry_type_enum_notes:before { content:" - " }
67     .entry_type_enum_notes>p:first-child { display:inline; }
68     .entry_type_enum_value:before { content:" = " }
69     .entry_type_enum_value { font-family: monospace; }
70     .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; }
71     .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;}
72     .entry_range_deprecated { font-weight: bolder; }
73
74     /* Entry tags flair */
75     .entry_tags ul { list-style-type: none; }
76
77     /* Entry details (full docs) flair */
78     .entry_details_header { font-weight: bold; background-color: #dddddd;
79       text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; }
80
81     /* Entry spacer flair */
82     .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
83
84     /* TODO: generate abbr element for each tag link? */
85     /* TODO for each x.y.z try to link it to the entry */
86
87   </style>
88
89   <style>
90
91     {
92       /* broken...
93          supposedly there is a bug in chrome that it lays out tables before
94          it knows its being printed, so the page-break-* styles are ignored
95          */
96         tr { page-break-after: always; page-break-inside: avoid; }
97     }
98
99   </style>
100 </head>
101
102
103
104 <body>
105   <h1>Android Camera HAL3.2 Properties</h1>
106
107
108   <h2>Table of Contents</h2>
109   <ul class="toc">
110     <li><a href="#tag_index" class="toc_section_header">Tags</a></li>
111     <li>
112       <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span>
113       <ul class="toc_section">
114         <li>
115           <span class="toc_kind_header">controls</span>
116           <ul class="toc_section">
117             <li
118             ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
119             <li
120             ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
121             <li
122             ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
123             <li
124             ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
125           </ul>
126         </li>
127         <li>
128           <span class="toc_kind_header">dynamic</span>
129           <ul class="toc_section">
130             <li
131             ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
132             <li
133             ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
134             <li
135             ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
136             <li
137             ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
138           </ul>
139         </li>
140         <li>
141           <span class="toc_kind_header">static</span>
142           <ul class="toc_section">
143             <li
144             ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
145           </ul>
146         </li>
147       </ul> <!-- toc_section -->
148     </li>
149     <li>
150       <span class="toc_section_header"><a href="#section_control">control</a></span>
151       <ul class="toc_section">
152         <li>
153           <span class="toc_kind_header">controls</span>
154           <ul class="toc_section">
155             <li
156             ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
157             <li
158             ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
159             <li
160             ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
161             <li
162             ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
163             <li
164             ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
165             <li
166             ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
167             <li
168             ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
169             <li
170             ><a href="#controls_android.control.afMode">android.control.afMode</a></li>
171             <li
172             ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
173             <li
174             ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
175             <li
176             ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
177             <li
178             ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
179             <li
180             ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
181             <li
182             ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
183             <li
184             ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
185             <li
186             ><a href="#controls_android.control.mode">android.control.mode</a></li>
187             <li
188             ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
189             <li
190             ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
191           </ul>
192         </li>
193         <li>
194           <span class="toc_kind_header">static</span>
195           <ul class="toc_section">
196             <li
197             ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
198             <li
199             ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
200             <li
201             ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
202             <li
203             ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
204             <li
205             ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
206             <li
207             ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
208             <li
209             ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
210             <li
211             ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
212             <li
213             ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
214             <li
215             ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
216             <li
217             ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
218             <li
219             ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
220             <li
221             ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
222             <li
223             ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
224             <li
225             ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
226             <li
227             ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
228             <li
229             ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
230             <li
231             ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
232             <li
233             ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
234           </ul>
235         </li>
236         <li>
237           <span class="toc_kind_header">dynamic</span>
238           <ul class="toc_section">
239             <li
240                 class="toc_deprecated"
241             ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
242             <li
243             ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
244             <li
245             ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
246             <li
247             ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
248             <li
249             ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
250             <li
251             ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
252             <li
253             ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
254             <li
255             ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
256             <li
257             ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
258             <li
259             ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
260             <li
261             ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
262             <li
263             ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
264             <li
265             ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
266             <li
267                 class="toc_deprecated"
268             ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
269             <li
270             ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
271             <li
272             ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
273             <li
274             ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
275             <li
276             ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
277             <li
278             ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
279             <li
280             ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
281             <li
282             ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
283             <li
284             ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
285             <li
286             ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
287           </ul>
288         </li>
289       </ul> <!-- toc_section -->
290     </li>
291     <li>
292       <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
293       <ul class="toc_section">
294         <li>
295           <span class="toc_kind_header">controls</span>
296           <ul class="toc_section">
297             <li
298             ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
299           </ul>
300         </li>
301       </ul> <!-- toc_section -->
302     </li>
303     <li>
304       <span class="toc_section_header"><a href="#section_edge">edge</a></span>
305       <ul class="toc_section">
306         <li>
307           <span class="toc_kind_header">controls</span>
308           <ul class="toc_section">
309             <li
310             ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
311             <li
312             ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
313           </ul>
314         </li>
315         <li>
316           <span class="toc_kind_header">static</span>
317           <ul class="toc_section">
318             <li
319             ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
320           </ul>
321         </li>
322         <li>
323           <span class="toc_kind_header">dynamic</span>
324           <ul class="toc_section">
325             <li
326             ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
327           </ul>
328         </li>
329       </ul> <!-- toc_section -->
330     </li>
331     <li>
332       <span class="toc_section_header"><a href="#section_flash">flash</a></span>
333       <ul class="toc_section">
334         <li>
335           <span class="toc_kind_header">controls</span>
336           <ul class="toc_section">
337             <li
338             ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
339             <li
340             ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
341             <li
342             ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
343           </ul>
344         </li>
345         <li>
346           <span class="toc_kind_header">static</span>
347           <ul class="toc_section">
348
349             <li
350             ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
351             <li
352             ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
353
354             <li
355             ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
356             <li
357             ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
358           </ul>
359         </li>
360         <li>
361           <span class="toc_kind_header">dynamic</span>
362           <ul class="toc_section">
363             <li
364             ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
365             <li
366             ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
367             <li
368             ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
369             <li
370             ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
371           </ul>
372         </li>
373       </ul> <!-- toc_section -->
374     </li>
375     <li>
376       <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
377       <ul class="toc_section">
378         <li>
379           <span class="toc_kind_header">controls</span>
380           <ul class="toc_section">
381             <li
382             ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
383           </ul>
384         </li>
385         <li>
386           <span class="toc_kind_header">static</span>
387           <ul class="toc_section">
388             <li
389             ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
390           </ul>
391         </li>
392         <li>
393           <span class="toc_kind_header">dynamic</span>
394           <ul class="toc_section">
395             <li
396             ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
397           </ul>
398         </li>
399       </ul> <!-- toc_section -->
400     </li>
401     <li>
402       <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
403       <ul class="toc_section">
404         <li>
405           <span class="toc_kind_header">controls</span>
406           <ul class="toc_section">
407             <li
408             ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
409             <li
410             ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
411             <li
412             ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
413             <li
414             ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
415             <li
416             ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
417             <li
418             ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
419             <li
420             ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
421             <li
422             ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
423           </ul>
424         </li>
425         <li>
426           <span class="toc_kind_header">static</span>
427           <ul class="toc_section">
428             <li
429             ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
430             <li
431             ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
432           </ul>
433         </li>
434         <li>
435           <span class="toc_kind_header">dynamic</span>
436           <ul class="toc_section">
437             <li
438             ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
439             <li
440             ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
441             <li
442             ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
443             <li
444             ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
445             <li
446             ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
447             <li
448             ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
449             <li
450             ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
451             <li
452             ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
453             <li
454             ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
455           </ul>
456         </li>
457       </ul> <!-- toc_section -->
458     </li>
459     <li>
460       <span class="toc_section_header"><a href="#section_lens">lens</a></span>
461       <ul class="toc_section">
462         <li>
463           <span class="toc_kind_header">controls</span>
464           <ul class="toc_section">
465             <li
466             ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
467             <li
468             ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
469             <li
470             ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
471             <li
472             ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
473             <li
474             ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
475           </ul>
476         </li>
477         <li>
478           <span class="toc_kind_header">static</span>
479           <ul class="toc_section">
480
481             <li
482             ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
483             <li
484             ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
485             <li
486             ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
487             <li
488             ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
489             <li
490             ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
491             <li
492             ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
493             <li
494             ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
495             <li
496             ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
497
498             <li
499             ><a href="#static_android.lens.facing">android.lens.facing</a></li>
500             <li
501             ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
502             <li
503             ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
504             <li
505             ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
506             <li
507             ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
508           </ul>
509         </li>
510         <li>
511           <span class="toc_kind_header">dynamic</span>
512           <ul class="toc_section">
513             <li
514             ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
515             <li
516             ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
517             <li
518             ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
519             <li
520             ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
521             <li
522             ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
523             <li
524             ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
525             <li
526             ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
527             <li
528             ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
529             <li
530             ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
531             <li
532             ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
533             <li
534             ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
535           </ul>
536         </li>
537       </ul> <!-- toc_section -->
538     </li>
539     <li>
540       <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
541       <ul class="toc_section">
542         <li>
543           <span class="toc_kind_header">controls</span>
544           <ul class="toc_section">
545             <li
546             ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
547             <li
548             ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
549           </ul>
550         </li>
551         <li>
552           <span class="toc_kind_header">static</span>
553           <ul class="toc_section">
554             <li
555             ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
556           </ul>
557         </li>
558         <li>
559           <span class="toc_kind_header">dynamic</span>
560           <ul class="toc_section">
561             <li
562             ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
563           </ul>
564         </li>
565       </ul> <!-- toc_section -->
566     </li>
567     <li>
568       <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
569       <ul class="toc_section">
570         <li>
571           <span class="toc_kind_header">static</span>
572           <ul class="toc_section">
573             <li
574                 class="toc_deprecated"
575             ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
576             <li
577                 class="toc_deprecated"
578             ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
579             <li
580                 class="toc_deprecated"
581             ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
582             <li
583                 class="toc_deprecated"
584             ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
585           </ul>
586         </li>
587         <li>
588           <span class="toc_kind_header">dynamic</span>
589           <ul class="toc_section">
590             <li
591                 class="toc_deprecated"
592             ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
593           </ul>
594         </li>
595       </ul> <!-- toc_section -->
596     </li>
597     <li>
598       <span class="toc_section_header"><a href="#section_request">request</a></span>
599       <ul class="toc_section">
600         <li>
601           <span class="toc_kind_header">controls</span>
602           <ul class="toc_section">
603             <li
604                 class="toc_deprecated"
605             ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
606             <li
607             ><a href="#controls_android.request.id">android.request.id</a></li>
608             <li
609                 class="toc_deprecated"
610             ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
611             <li
612             ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
613             <li
614                 class="toc_deprecated"
615             ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
616             <li
617                 class="toc_deprecated"
618             ><a href="#controls_android.request.type">android.request.type</a></li>
619           </ul>
620         </li>
621         <li>
622           <span class="toc_kind_header">static</span>
623           <ul class="toc_section">
624             <li
625             ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
626             <li
627             ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
628             <li
629             ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
630             <li
631             ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
632             <li
633                 class="toc_deprecated"
634             ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
635             <li
636             ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
637             <li
638             ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
639             <li
640             ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
641             <li
642             ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
643             <li
644             ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
645             <li
646             ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
647             <li
648             ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
649           </ul>
650         </li>
651         <li>
652           <span class="toc_kind_header">dynamic</span>
653           <ul class="toc_section">
654             <li
655                 class="toc_deprecated"
656             ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
657             <li
658             ><a href="#dynamic_android.request.id">android.request.id</a></li>
659             <li
660             ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
661             <li
662                 class="toc_deprecated"
663             ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
664             <li
665             ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
666           </ul>
667         </li>
668       </ul> <!-- toc_section -->
669     </li>
670     <li>
671       <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
672       <ul class="toc_section">
673         <li>
674           <span class="toc_kind_header">controls</span>
675           <ul class="toc_section">
676             <li
677             ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
678           </ul>
679         </li>
680         <li>
681           <span class="toc_kind_header">static</span>
682           <ul class="toc_section">
683             <li
684                 class="toc_deprecated"
685             ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
686             <li
687                 class="toc_deprecated"
688             ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
689             <li
690                 class="toc_deprecated"
691             ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
692             <li
693             ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
694             <li
695                 class="toc_deprecated"
696             ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
697             <li
698                 class="toc_deprecated"
699             ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
700             <li
701                 class="toc_deprecated"
702             ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
703             <li
704                 class="toc_deprecated"
705             ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
706             <li
707             ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
708             <li
709             ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
710             <li
711             ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
712             <li
713             ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
714             <li
715             ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
716             <li
717             ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
718           </ul>
719         </li>
720         <li>
721           <span class="toc_kind_header">dynamic</span>
722           <ul class="toc_section">
723             <li
724             ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
725           </ul>
726         </li>
727       </ul> <!-- toc_section -->
728     </li>
729     <li>
730       <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
731       <ul class="toc_section">
732         <li>
733           <span class="toc_kind_header">controls</span>
734           <ul class="toc_section">
735             <li
736             ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
737             <li
738             ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
739             <li
740             ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
741             <li
742             ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
743             <li
744             ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
745           </ul>
746         </li>
747         <li>
748           <span class="toc_kind_header">static</span>
749           <ul class="toc_section">
750
751             <li
752             ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
753             <li
754             ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
755             <li
756             ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
757             <li
758             ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
759             <li
760             ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
761             <li
762             ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
763             <li
764             ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
765             <li
766             ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
767             <li
768             ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
769             <li
770             ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
771             <li
772             ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
773
774             <li
775             ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
776             <li
777             ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
778             <li
779             ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
780             <li
781             ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
782             <li
783             ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
784             <li
785             ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
786             <li
787             ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
788             <li
789             ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
790             <li
791             ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
792             <li
793             ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
794             <li
795             ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
796             <li
797             ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
798             <li
799             ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
800             <li
801             ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
802           </ul>
803         </li>
804         <li>
805           <span class="toc_kind_header">dynamic</span>
806           <ul class="toc_section">
807             <li
808             ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
809             <li
810             ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
811             <li
812             ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
813             <li
814             ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
815             <li
816             ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
817             <li
818             ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
819             <li
820             ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
821             <li
822             ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
823             <li
824             ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
825             <li
826             ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
827             <li
828             ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
829             <li
830             ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
831             <li
832             ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
833           </ul>
834         </li>
835       </ul> <!-- toc_section -->
836     </li>
837     <li>
838       <span class="toc_section_header"><a href="#section_shading">shading</a></span>
839       <ul class="toc_section">
840         <li>
841           <span class="toc_kind_header">controls</span>
842           <ul class="toc_section">
843             <li
844             ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
845             <li
846             ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
847           </ul>
848         </li>
849         <li>
850           <span class="toc_kind_header">dynamic</span>
851           <ul class="toc_section">
852             <li
853             ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
854           </ul>
855         </li>
856         <li>
857           <span class="toc_kind_header">static</span>
858           <ul class="toc_section">
859             <li
860             ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
861           </ul>
862         </li>
863       </ul> <!-- toc_section -->
864     </li>
865     <li>
866       <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
867       <ul class="toc_section">
868         <li>
869           <span class="toc_kind_header">controls</span>
870           <ul class="toc_section">
871             <li
872             ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
873             <li
874             ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
875             <li
876             ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
877             <li
878             ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
879             <li
880             ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
881           </ul>
882         </li>
883         <li>
884           <span class="toc_kind_header">static</span>
885           <ul class="toc_section">
886
887             <li
888             ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
889             <li
890             ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
891             <li
892             ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
893             <li
894             ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
895             <li
896             ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
897             <li
898             ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
899             <li
900             ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
901             <li
902             ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
903
904           </ul>
905         </li>
906         <li>
907           <span class="toc_kind_header">dynamic</span>
908           <ul class="toc_section">
909             <li
910             ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
911             <li
912             ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
913             <li
914             ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
915             <li
916             ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
917             <li
918             ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
919             <li
920             ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
921             <li
922             ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
923             <li
924             ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
925             <li
926             ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
927             <li
928             ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
929             <li
930             ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
931             <li
932             ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
933             <li
934                 class="toc_deprecated"
935             ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
936             <li
937                 class="toc_deprecated"
938             ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
939             <li
940             ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
941             <li
942             ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
943             <li
944             ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
945             <li
946             ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
947           </ul>
948         </li>
949       </ul> <!-- toc_section -->
950     </li>
951     <li>
952       <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
953       <ul class="toc_section">
954         <li>
955           <span class="toc_kind_header">controls</span>
956           <ul class="toc_section">
957             <li
958             ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
959             <li
960             ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
961             <li
962             ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
963             <li
964             ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
965             <li
966             ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
967             <li
968             ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
969             <li
970             ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
971           </ul>
972         </li>
973         <li>
974           <span class="toc_kind_header">static</span>
975           <ul class="toc_section">
976             <li
977             ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
978             <li
979             ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
980           </ul>
981         </li>
982         <li>
983           <span class="toc_kind_header">dynamic</span>
984           <ul class="toc_section">
985             <li
986             ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
987             <li
988             ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
989             <li
990             ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
991             <li
992             ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
993             <li
994             ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
995             <li
996             ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
997             <li
998             ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
999           </ul>
1000         </li>
1001       </ul> <!-- toc_section -->
1002     </li>
1003     <li>
1004       <span class="toc_section_header"><a href="#section_led">led</a></span>
1005       <ul class="toc_section">
1006         <li>
1007           <span class="toc_kind_header">controls</span>
1008           <ul class="toc_section">
1009             <li
1010             ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1011           </ul>
1012         </li>
1013         <li>
1014           <span class="toc_kind_header">dynamic</span>
1015           <ul class="toc_section">
1016             <li
1017             ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1018           </ul>
1019         </li>
1020         <li>
1021           <span class="toc_kind_header">static</span>
1022           <ul class="toc_section">
1023             <li
1024             ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1025           </ul>
1026         </li>
1027       </ul> <!-- toc_section -->
1028     </li>
1029     <li>
1030       <span class="toc_section_header"><a href="#section_info">info</a></span>
1031       <ul class="toc_section">
1032         <li>
1033           <span class="toc_kind_header">static</span>
1034           <ul class="toc_section">
1035             <li
1036             ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1037           </ul>
1038         </li>
1039       </ul> <!-- toc_section -->
1040     </li>
1041     <li>
1042       <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1043       <ul class="toc_section">
1044         <li>
1045           <span class="toc_kind_header">controls</span>
1046           <ul class="toc_section">
1047             <li
1048             ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1049           </ul>
1050         </li>
1051         <li>
1052           <span class="toc_kind_header">dynamic</span>
1053           <ul class="toc_section">
1054             <li
1055             ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1056           </ul>
1057         </li>
1058       </ul> <!-- toc_section -->
1059     </li>
1060     <li>
1061       <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1062       <ul class="toc_section">
1063         <li>
1064           <span class="toc_kind_header">dynamic</span>
1065           <ul class="toc_section">
1066             <li
1067             ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1068           </ul>
1069         </li>
1070         <li>
1071           <span class="toc_kind_header">static</span>
1072           <ul class="toc_section">
1073             <li
1074             ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1075           </ul>
1076         </li>
1077       </ul> <!-- toc_section -->
1078     </li>
1079     <li>
1080       <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1081       <ul class="toc_section">
1082         <li>
1083           <span class="toc_kind_header">controls</span>
1084           <ul class="toc_section">
1085             <li
1086             ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1087           </ul>
1088         </li>
1089         <li>
1090           <span class="toc_kind_header">dynamic</span>
1091           <ul class="toc_section">
1092             <li
1093             ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1094           </ul>
1095         </li>
1096         <li>
1097           <span class="toc_kind_header">static</span>
1098           <ul class="toc_section">
1099             <li
1100             ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1101           </ul>
1102         </li>
1103       </ul> <!-- toc_section -->
1104     </li>
1105     <li>
1106       <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1107       <ul class="toc_section">
1108         <li>
1109           <span class="toc_kind_header">static</span>
1110           <ul class="toc_section">
1111             <li
1112             ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1113             <li
1114             ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1115             <li
1116             ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1117             <li
1118             ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1119             <li
1120             ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1121           </ul>
1122         </li>
1123       </ul> <!-- toc_section -->
1124     </li>
1125   </ul>
1126
1127
1128   <h1>Properties</h1>
1129   <table class="properties">
1130
1131     <thead class="thead_dummy">
1132       <tr>
1133         <th class="th_name">Property Name</th>
1134         <th class="th_type">Type</th>
1135         <th class="th_description">Description</th>
1136         <th class="th_units">Units</th>
1137         <th class="th_range">Range</th>
1138         <th class="th_tags">Tags</th>
1139       </tr>
1140     </thead> <!-- so that the first occurrence of thead is not
1141                          above the first occurrence of tr -->
1142 <!-- <namespace name="android"> -->
1143   <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1144
1145
1146       <tr><td colspan="6" class="kind">controls</td></tr>
1147
1148       <thead class="entries_header">
1149         <tr>
1150           <th class="th_name">Property Name</th>
1151           <th class="th_type">Type</th>
1152           <th class="th_description">Description</th>
1153           <th class="th_units">Units</th>
1154           <th class="th_range">Range</th>
1155           <th class="th_tags">Tags</th>
1156         </tr>
1157       </thead>
1158
1159       <tbody>
1160
1161         
1162
1163         
1164
1165         
1166
1167         
1168
1169                 
1170           <tr class="entry" id="controls_android.colorCorrection.mode">
1171             <td class="entry_name
1172              " rowspan="5">
1173               android.<wbr/>color<wbr/>Correction.<wbr/>mode
1174             </td>
1175             <td class="entry_type">
1176                 <span class="entry_type_name entry_type_name_enum">byte</span>
1177
1178               <span class="entry_type_visibility"> [public]</span>
1179
1180
1181               <span class="entry_type_hwlevel">[full] </span>
1182
1183
1184
1185                 <ul class="entry_type_enum">
1186                   <li>
1187                     <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1188                     <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1189 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1190 <p>All advanced white balance adjustments (not specified
1191 by our white balance pipeline) must be disabled.<wbr/></p>
1192 <p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1193 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1194 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1195                   </li>
1196                   <li>
1197                     <span class="entry_type_enum_name">FAST</span>
1198                     <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1199 capture rate relative to sensor raw output.<wbr/></p>
1200 <p>Advanced white balance adjustments above and beyond
1201 the specified white balance pipeline may be applied.<wbr/></p>
1202 <p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1203 the camera device uses the last frame's AWB values
1204 (or defaults if AWB has never been run).<wbr/></p></span>
1205                   </li>
1206                   <li>
1207                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
1208                     <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1209 quality but the capture rate might be reduced (relative to sensor
1210 raw output rate)</p>
1211 <p>Advanced white balance adjustments above and beyond
1212 the specified white balance pipeline may be applied.<wbr/></p>
1213 <p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1214 the camera device uses the last frame's AWB values
1215 (or defaults if AWB has never been run).<wbr/></p></span>
1216                   </li>
1217                 </ul>
1218
1219             </td> <!-- entry_type -->
1220
1221             <td class="entry_description">
1222               <p>The mode control selects how the image data is converted from the
1223 sensor's native color into linear sRGB color.<wbr/></p>
1224             </td>
1225
1226             <td class="entry_units">
1227             </td>
1228
1229             <td class="entry_range">
1230             </td>
1231
1232             <td class="entry_tags">
1233             </td>
1234
1235           </tr>
1236           <tr class="entries_header">
1237             <th class="th_details" colspan="5">Details</th>
1238           </tr>
1239           <tr class="entry_cont">
1240             <td class="entry_details" colspan="5">
1241               <p>When auto-white balance (AWB) is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
1242 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1243 application controls how the color mapping is performed.<wbr/></p>
1244 <p>We define the expected processing pipeline below.<wbr/> For consistency
1245 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1246 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1247 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1248 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1249 camera device (in the results) and be roughly correct.<wbr/></p>
1250 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1251 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1252 as what was produced by the camera device in the earlier frame.<wbr/></p>
1253 <p>The expected processing pipeline is as follows:</p>
1254 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1255 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1256 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1257 matrix (applied after demosaic).<wbr/></p>
1258 <p>The 4-channel white-balance gains are defined as:</p>
1259 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1260 </code></pre>
1261 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1262 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1263 These may be identical for a given camera device implementation; if
1264 the camera device does not support a separate gain for even/<wbr/>odd green
1265 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1266 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1267 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1268 <pre><code><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> = [ I0 I1 I2 I3 I4 I5 I6 I7 I8 ]
1269 </code></pre>
1270 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1271 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1272 <p>with colors as follows:</p>
1273 <pre><code>r' = I0r + I1g + I2b
1274 g' = I3r + I4g + I5b
1275 b' = I6r + I7g + I8b
1276 </code></pre>
1277 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1278 values are clipped to fit within the range.<wbr/></p>
1279             </td>
1280           </tr>
1281
1282           <tr class="entries_header">
1283             <th class="th_details" colspan="5">HAL Implementation Details</th>
1284           </tr>
1285           <tr class="entry_cont">
1286             <td class="entry_details" colspan="5">
1287               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1288 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1289 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1290 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1291             </td>
1292           </tr>
1293
1294           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1295            <!-- end of entry -->
1296         
1297                 
1298           <tr class="entry" id="controls_android.colorCorrection.transform">
1299             <td class="entry_name
1300              " rowspan="3">
1301               android.<wbr/>color<wbr/>Correction.<wbr/>transform
1302             </td>
1303             <td class="entry_type">
1304                 <span class="entry_type_name">rational</span>
1305                 <span class="entry_type_container">x</span>
1306
1307                 <span class="entry_type_array">
1308                   3 x 3
1309                 </span>
1310               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1311
1312
1313               <span class="entry_type_hwlevel">[full] </span>
1314
1315
1316                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1317
1318
1319             </td> <!-- entry_type -->
1320
1321             <td class="entry_description">
1322               <p>A color transform matrix to use to transform
1323 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1324             </td>
1325
1326             <td class="entry_units">
1327               Unitless scale factors
1328             </td>
1329
1330             <td class="entry_range">
1331             </td>
1332
1333             <td class="entry_tags">
1334             </td>
1335
1336           </tr>
1337           <tr class="entries_header">
1338             <th class="th_details" colspan="5">Details</th>
1339           </tr>
1340           <tr class="entry_cont">
1341             <td class="entry_details" colspan="5">
1342               <p>This matrix is either set by the camera device when the request
1343 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1344 directly by the application in the request when the
1345 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1346 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1347 for precision issues; the final rounded matrix should be reported back
1348 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1349 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1350 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1351 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1352 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1353             </td>
1354           </tr>
1355
1356
1357           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1358            <!-- end of entry -->
1359         
1360                 
1361           <tr class="entry" id="controls_android.colorCorrection.gains">
1362             <td class="entry_name
1363              " rowspan="5">
1364               android.<wbr/>color<wbr/>Correction.<wbr/>gains
1365             </td>
1366             <td class="entry_type">
1367                 <span class="entry_type_name">float</span>
1368                 <span class="entry_type_container">x</span>
1369
1370                 <span class="entry_type_array">
1371                   4
1372                 </span>
1373               <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1374
1375
1376               <span class="entry_type_hwlevel">[full] </span>
1377
1378
1379                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1380
1381
1382             </td> <!-- entry_type -->
1383
1384             <td class="entry_description">
1385               <p>Gains applying to Bayer raw color channels for
1386 white-balance.<wbr/></p>
1387             </td>
1388
1389             <td class="entry_units">
1390               Unitless gain factors
1391             </td>
1392
1393             <td class="entry_range">
1394             </td>
1395
1396             <td class="entry_tags">
1397             </td>
1398
1399           </tr>
1400           <tr class="entries_header">
1401             <th class="th_details" colspan="5">Details</th>
1402           </tr>
1403           <tr class="entry_cont">
1404             <td class="entry_details" colspan="5">
1405               <p>These per-channel gains are either set by the camera device
1406 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1407 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1408 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1409 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1410 <p>The gains in the result metadata are the gains actually
1411 applied by the camera device to the current frame.<wbr/></p>
1412 <p>The valid range of gains varies on different devices,<wbr/> but gains
1413 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1414 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1415 this can create color artifacts.<wbr/></p>
1416             </td>
1417           </tr>
1418
1419           <tr class="entries_header">
1420             <th class="th_details" colspan="5">HAL Implementation Details</th>
1421           </tr>
1422           <tr class="entry_cont">
1423             <td class="entry_details" colspan="5">
1424               <p>The 4-channel white-balance gains are defined in
1425 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1426 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1427 is the gain for green pixels on the odd rows.<wbr/></p>
1428 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1429 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1430 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1431             </td>
1432           </tr>
1433
1434           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1435            <!-- end of entry -->
1436         
1437                 
1438           <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1439             <td class="entry_name
1440              " rowspan="3">
1441               android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1442             </td>
1443             <td class="entry_type">
1444                 <span class="entry_type_name entry_type_name_enum">byte</span>
1445
1446               <span class="entry_type_visibility"> [public]</span>
1447
1448
1449               <span class="entry_type_hwlevel">[legacy] </span>
1450
1451
1452
1453                 <ul class="entry_type_enum">
1454                   <li>
1455                     <span class="entry_type_enum_name">OFF</span>
1456                     <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1457                   </li>
1458                   <li>
1459                     <span class="entry_type_enum_name">FAST</span>
1460                     <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1461 relative to sensor raw output.<wbr/></p></span>
1462                   </li>
1463                   <li>
1464                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
1465                     <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1466 reduced (relative to sensor raw output rate)</p></span>
1467                   </li>
1468                 </ul>
1469
1470             </td> <!-- entry_type -->
1471
1472             <td class="entry_description">
1473               <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1474             </td>
1475
1476             <td class="entry_units">
1477             </td>
1478
1479             <td class="entry_range">
1480               <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1481             </td>
1482
1483             <td class="entry_tags">
1484             </td>
1485
1486           </tr>
1487           <tr class="entries_header">
1488             <th class="th_details" colspan="5">Details</th>
1489           </tr>
1490           <tr class="entry_cont">
1491             <td class="entry_details" colspan="5">
1492               <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1493 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1494 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1495 minimize the chromatic artifacts that may occur along the object boundaries in an
1496 image.<wbr/></p>
1497 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1498 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1499 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1500 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1501 applying aberration correction.<wbr/></p>
1502 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1503             </td>
1504           </tr>
1505
1506
1507           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1508            <!-- end of entry -->
1509         
1510         
1511
1512       <!-- end of kind -->
1513       </tbody>
1514       <tr><td colspan="6" class="kind">dynamic</td></tr>
1515
1516       <thead class="entries_header">
1517         <tr>
1518           <th class="th_name">Property Name</th>
1519           <th class="th_type">Type</th>
1520           <th class="th_description">Description</th>
1521           <th class="th_units">Units</th>
1522           <th class="th_range">Range</th>
1523           <th class="th_tags">Tags</th>
1524         </tr>
1525       </thead>
1526
1527       <tbody>
1528
1529         
1530
1531         
1532
1533         
1534
1535         
1536
1537                 
1538           <tr class="entry" id="dynamic_android.colorCorrection.mode">
1539             <td class="entry_name
1540              " rowspan="5">
1541               android.<wbr/>color<wbr/>Correction.<wbr/>mode
1542             </td>
1543             <td class="entry_type">
1544                 <span class="entry_type_name entry_type_name_enum">byte</span>
1545
1546               <span class="entry_type_visibility"> [public]</span>
1547
1548
1549               <span class="entry_type_hwlevel">[full] </span>
1550
1551
1552
1553                 <ul class="entry_type_enum">
1554                   <li>
1555                     <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1556                     <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1557 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1558 <p>All advanced white balance adjustments (not specified
1559 by our white balance pipeline) must be disabled.<wbr/></p>
1560 <p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1561 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1562 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1563                   </li>
1564                   <li>
1565                     <span class="entry_type_enum_name">FAST</span>
1566                     <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1567 capture rate relative to sensor raw output.<wbr/></p>
1568 <p>Advanced white balance adjustments above and beyond
1569 the specified white balance pipeline may be applied.<wbr/></p>
1570 <p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1571 the camera device uses the last frame's AWB values
1572 (or defaults if AWB has never been run).<wbr/></p></span>
1573                   </li>
1574                   <li>
1575                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
1576                     <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1577 quality but the capture rate might be reduced (relative to sensor
1578 raw output rate)</p>
1579 <p>Advanced white balance adjustments above and beyond
1580 the specified white balance pipeline may be applied.<wbr/></p>
1581 <p>If AWB is enabled with <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != OFF</code>,<wbr/> then
1582 the camera device uses the last frame's AWB values
1583 (or defaults if AWB has never been run).<wbr/></p></span>
1584                   </li>
1585                 </ul>
1586
1587             </td> <!-- entry_type -->
1588
1589             <td class="entry_description">
1590               <p>The mode control selects how the image data is converted from the
1591 sensor's native color into linear sRGB color.<wbr/></p>
1592             </td>
1593
1594             <td class="entry_units">
1595             </td>
1596
1597             <td class="entry_range">
1598             </td>
1599
1600             <td class="entry_tags">
1601             </td>
1602
1603           </tr>
1604           <tr class="entries_header">
1605             <th class="th_details" colspan="5">Details</th>
1606           </tr>
1607           <tr class="entry_cont">
1608             <td class="entry_details" colspan="5">
1609               <p>When auto-white balance (AWB) is enabled with <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> this
1610 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1611 application controls how the color mapping is performed.<wbr/></p>
1612 <p>We define the expected processing pipeline below.<wbr/> For consistency
1613 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1614 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1615 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1616 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1617 camera device (in the results) and be roughly correct.<wbr/></p>
1618 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1619 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1620 as what was produced by the camera device in the earlier frame.<wbr/></p>
1621 <p>The expected processing pipeline is as follows:</p>
1622 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1623 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1624 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1625 matrix (applied after demosaic).<wbr/></p>
1626 <p>The 4-channel white-balance gains are defined as:</p>
1627 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1628 </code></pre>
1629 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1630 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1631 These may be identical for a given camera device implementation; if
1632 the camera device does not support a separate gain for even/<wbr/>odd green
1633 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1634 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1635 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1636 <pre><code><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> = [ I0 I1 I2 I3 I4 I5 I6 I7 I8 ]
1637 </code></pre>
1638 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1639 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1640 <p>with colors as follows:</p>
1641 <pre><code>r' = I0r + I1g + I2b
1642 g' = I3r + I4g + I5b
1643 b' = I6r + I7g + I8b
1644 </code></pre>
1645 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1646 values are clipped to fit within the range.<wbr/></p>
1647             </td>
1648           </tr>
1649
1650           <tr class="entries_header">
1651             <th class="th_details" colspan="5">HAL Implementation Details</th>
1652           </tr>
1653           <tr class="entry_cont">
1654             <td class="entry_details" colspan="5">
1655               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1656 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1657 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1658 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1659             </td>
1660           </tr>
1661
1662           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1663            <!-- end of entry -->
1664         
1665                 
1666           <tr class="entry" id="dynamic_android.colorCorrection.transform">
1667             <td class="entry_name
1668              " rowspan="3">
1669               android.<wbr/>color<wbr/>Correction.<wbr/>transform
1670             </td>
1671             <td class="entry_type">
1672                 <span class="entry_type_name">rational</span>
1673                 <span class="entry_type_container">x</span>
1674
1675                 <span class="entry_type_array">
1676                   3 x 3
1677                 </span>
1678               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1679
1680
1681               <span class="entry_type_hwlevel">[full] </span>
1682
1683
1684                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1685
1686
1687             </td> <!-- entry_type -->
1688
1689             <td class="entry_description">
1690               <p>A color transform matrix to use to transform
1691 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1692             </td>
1693
1694             <td class="entry_units">
1695               Unitless scale factors
1696             </td>
1697
1698             <td class="entry_range">
1699             </td>
1700
1701             <td class="entry_tags">
1702             </td>
1703
1704           </tr>
1705           <tr class="entries_header">
1706             <th class="th_details" colspan="5">Details</th>
1707           </tr>
1708           <tr class="entry_cont">
1709             <td class="entry_details" colspan="5">
1710               <p>This matrix is either set by the camera device when the request
1711 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1712 directly by the application in the request when the
1713 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1714 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1715 for precision issues; the final rounded matrix should be reported back
1716 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1717 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1718 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1719 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1720 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1721             </td>
1722           </tr>
1723
1724
1725           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1726            <!-- end of entry -->
1727         
1728                 
1729           <tr class="entry" id="dynamic_android.colorCorrection.gains">
1730             <td class="entry_name
1731              " rowspan="5">
1732               android.<wbr/>color<wbr/>Correction.<wbr/>gains
1733             </td>
1734             <td class="entry_type">
1735                 <span class="entry_type_name">float</span>
1736                 <span class="entry_type_container">x</span>
1737
1738                 <span class="entry_type_array">
1739                   4
1740                 </span>
1741               <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1742
1743
1744               <span class="entry_type_hwlevel">[full] </span>
1745
1746
1747                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1748
1749
1750             </td> <!-- entry_type -->
1751
1752             <td class="entry_description">
1753               <p>Gains applying to Bayer raw color channels for
1754 white-balance.<wbr/></p>
1755             </td>
1756
1757             <td class="entry_units">
1758               Unitless gain factors
1759             </td>
1760
1761             <td class="entry_range">
1762             </td>
1763
1764             <td class="entry_tags">
1765             </td>
1766
1767           </tr>
1768           <tr class="entries_header">
1769             <th class="th_details" colspan="5">Details</th>
1770           </tr>
1771           <tr class="entry_cont">
1772             <td class="entry_details" colspan="5">
1773               <p>These per-channel gains are either set by the camera device
1774 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1775 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1776 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1777 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1778 <p>The gains in the result metadata are the gains actually
1779 applied by the camera device to the current frame.<wbr/></p>
1780 <p>The valid range of gains varies on different devices,<wbr/> but gains
1781 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1782 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1783 this can create color artifacts.<wbr/></p>
1784             </td>
1785           </tr>
1786
1787           <tr class="entries_header">
1788             <th class="th_details" colspan="5">HAL Implementation Details</th>
1789           </tr>
1790           <tr class="entry_cont">
1791             <td class="entry_details" colspan="5">
1792               <p>The 4-channel white-balance gains are defined in
1793 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1794 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1795 is the gain for green pixels on the odd rows.<wbr/></p>
1796 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1797 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1798 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1799             </td>
1800           </tr>
1801
1802           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1803            <!-- end of entry -->
1804         
1805                 
1806           <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1807             <td class="entry_name
1808              " rowspan="3">
1809               android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1810             </td>
1811             <td class="entry_type">
1812                 <span class="entry_type_name entry_type_name_enum">byte</span>
1813
1814               <span class="entry_type_visibility"> [public]</span>
1815
1816
1817               <span class="entry_type_hwlevel">[legacy] </span>
1818
1819
1820
1821                 <ul class="entry_type_enum">
1822                   <li>
1823                     <span class="entry_type_enum_name">OFF</span>
1824                     <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1825                   </li>
1826                   <li>
1827                     <span class="entry_type_enum_name">FAST</span>
1828                     <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1829 relative to sensor raw output.<wbr/></p></span>
1830                   </li>
1831                   <li>
1832                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
1833                     <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1834 reduced (relative to sensor raw output rate)</p></span>
1835                   </li>
1836                 </ul>
1837
1838             </td> <!-- entry_type -->
1839
1840             <td class="entry_description">
1841               <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1842             </td>
1843
1844             <td class="entry_units">
1845             </td>
1846
1847             <td class="entry_range">
1848               <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1849             </td>
1850
1851             <td class="entry_tags">
1852             </td>
1853
1854           </tr>
1855           <tr class="entries_header">
1856             <th class="th_details" colspan="5">Details</th>
1857           </tr>
1858           <tr class="entry_cont">
1859             <td class="entry_details" colspan="5">
1860               <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1861 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1862 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1863 minimize the chromatic artifacts that may occur along the object boundaries in an
1864 image.<wbr/></p>
1865 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1866 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1867 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1868 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1869 applying aberration correction.<wbr/></p>
1870 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1871             </td>
1872           </tr>
1873
1874
1875           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1876            <!-- end of entry -->
1877         
1878         
1879
1880       <!-- end of kind -->
1881       </tbody>
1882       <tr><td colspan="6" class="kind">static</td></tr>
1883
1884       <thead class="entries_header">
1885         <tr>
1886           <th class="th_name">Property Name</th>
1887           <th class="th_type">Type</th>
1888           <th class="th_description">Description</th>
1889           <th class="th_units">Units</th>
1890           <th class="th_range">Range</th>
1891           <th class="th_tags">Tags</th>
1892         </tr>
1893       </thead>
1894
1895       <tbody>
1896
1897         
1898
1899         
1900
1901         
1902
1903         
1904
1905                 
1906           <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1907             <td class="entry_name
1908              " rowspan="5">
1909               android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
1910             </td>
1911             <td class="entry_type">
1912                 <span class="entry_type_name">byte</span>
1913                 <span class="entry_type_container">x</span>
1914
1915                 <span class="entry_type_array">
1916                   n
1917                 </span>
1918               <span class="entry_type_visibility"> [public as enumList]</span>
1919
1920
1921               <span class="entry_type_hwlevel">[legacy] </span>
1922
1923
1924                 <div class="entry_type_notes">list of enums</div>
1925
1926
1927             </td> <!-- entry_type -->
1928
1929             <td class="entry_description">
1930               <p>List of aberration correction modes for <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a> that are
1931 supported by this camera device.<wbr/></p>
1932             </td>
1933
1934             <td class="entry_units">
1935             </td>
1936
1937             <td class="entry_range">
1938               <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
1939             </td>
1940
1941             <td class="entry_tags">
1942               <ul class="entry_tags">
1943                   <li><a href="#tag_V1">V1</a></li>
1944               </ul>
1945             </td>
1946
1947           </tr>
1948           <tr class="entries_header">
1949             <th class="th_details" colspan="5">Details</th>
1950           </tr>
1951           <tr class="entry_cont">
1952             <td class="entry_details" colspan="5">
1953               <p>This key lists the valid modes for <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a>.<wbr/>  If no
1954 aberration correction modes are available for a device,<wbr/> this list will solely include
1955 OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
1956 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
1957 OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
1958 <p>LEGACY devices will always only support FAST mode.<wbr/></p>
1959             </td>
1960           </tr>
1961
1962           <tr class="entries_header">
1963             <th class="th_details" colspan="5">HAL Implementation Details</th>
1964           </tr>
1965           <tr class="entry_cont">
1966             <td class="entry_details" colspan="5">
1967               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
1968 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1969 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1970 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
1971             </td>
1972           </tr>
1973
1974           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1975            <!-- end of entry -->
1976         
1977         
1978
1979       <!-- end of kind -->
1980       </tbody>
1981
1982   <!-- end of section -->
1983   <tr><td colspan="6" id="section_control" class="section">control</td></tr>
1984
1985
1986       <tr><td colspan="6" class="kind">controls</td></tr>
1987
1988       <thead class="entries_header">
1989         <tr>
1990           <th class="th_name">Property Name</th>
1991           <th class="th_type">Type</th>
1992           <th class="th_description">Description</th>
1993           <th class="th_units">Units</th>
1994           <th class="th_range">Range</th>
1995           <th class="th_tags">Tags</th>
1996         </tr>
1997       </thead>
1998
1999       <tbody>
2000
2001         
2002
2003         
2004
2005         
2006
2007         
2008
2009                 
2010           <tr class="entry" id="controls_android.control.aeAntibandingMode">
2011             <td class="entry_name
2012              " rowspan="5">
2013               android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2014             </td>
2015             <td class="entry_type">
2016                 <span class="entry_type_name entry_type_name_enum">byte</span>
2017
2018               <span class="entry_type_visibility"> [public]</span>
2019
2020
2021               <span class="entry_type_hwlevel">[legacy] </span>
2022
2023
2024
2025                 <ul class="entry_type_enum">
2026                   <li>
2027                     <span class="entry_type_enum_name">OFF</span>
2028                     <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2029 avoid banding problems.<wbr/></p></span>
2030                   </li>
2031                   <li>
2032                     <span class="entry_type_enum_name">50HZ</span>
2033                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2034 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2035                   </li>
2036                   <li>
2037                     <span class="entry_type_enum_name">60HZ</span>
2038                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2039 avoid banding problems with 60Hz illumination
2040 sources.<wbr/></p></span>
2041                   </li>
2042                   <li>
2043                     <span class="entry_type_enum_name">AUTO</span>
2044                     <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2045 antibanding routine to the current illumination
2046 condition.<wbr/> This is the default mode if AUTO is
2047 available on given camera device.<wbr/></p></span>
2048                   </li>
2049                 </ul>
2050
2051             </td> <!-- entry_type -->
2052
2053             <td class="entry_description">
2054               <p>The desired setting for the camera device's auto-exposure
2055 algorithm's antibanding compensation.<wbr/></p>
2056             </td>
2057
2058             <td class="entry_units">
2059             </td>
2060
2061             <td class="entry_range">
2062               <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2063             </td>
2064
2065             <td class="entry_tags">
2066               <ul class="entry_tags">
2067                   <li><a href="#tag_BC">BC</a></li>
2068               </ul>
2069             </td>
2070
2071           </tr>
2072           <tr class="entries_header">
2073             <th class="th_details" colspan="5">Details</th>
2074           </tr>
2075           <tr class="entry_cont">
2076             <td class="entry_details" colspan="5">
2077               <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2078 lights,<wbr/> flicker at the rate of the power supply frequency
2079 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2080 typically not noticeable to a person,<wbr/> it can be visible to
2081 a camera device.<wbr/> If a camera sets its exposure time to the
2082 wrong value,<wbr/> the flicker may become visible in the
2083 viewfinder as flicker or in a final captured image,<wbr/> as a
2084 set of variable-brightness bands across the image.<wbr/></p>
2085 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
2086 include antibanding routines that ensure that the chosen
2087 exposure value will not cause such banding.<wbr/> The choice of
2088 exposure time depends on the rate of flicker,<wbr/> which the
2089 camera device can detect automatically,<wbr/> or the expected
2090 rate can be selected by the application using this
2091 control.<wbr/></p>
2092 <p>A given camera device may not support all of the possible
2093 options for the antibanding mode.<wbr/> The
2094 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2095 the available modes for a given camera device.<wbr/></p>
2096 <p>AUTO mode is the default if it is available on given
2097 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2098 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2099 and 60HZ will be available.<wbr/></p>
2100 <p>If manual exposure control is enabled (by setting
2101 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
2102 then this setting has no effect,<wbr/> and the application must
2103 ensure it selects exposure times that do not cause banding
2104 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2105 the application in this.<wbr/></p>
2106             </td>
2107           </tr>
2108
2109           <tr class="entries_header">
2110             <th class="th_details" colspan="5">HAL Implementation Details</th>
2111           </tr>
2112           <tr class="entry_cont">
2113             <td class="entry_details" colspan="5">
2114               <p>For all capture request templates,<wbr/> this field must be set
2115 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2116 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
2117 60HZ must be available.<wbr/></p>
2118 <p>If manual exposure control is enabled (by setting
2119 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> to OFF),<wbr/>
2120 then the exposure values provided by the application must not be
2121 adjusted for antibanding.<wbr/></p>
2122             </td>
2123           </tr>
2124
2125           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2126            <!-- end of entry -->
2127         
2128                 
2129           <tr class="entry" id="controls_android.control.aeExposureCompensation">
2130             <td class="entry_name
2131              " rowspan="3">
2132               android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2133             </td>
2134             <td class="entry_type">
2135                 <span class="entry_type_name">int32</span>
2136
2137               <span class="entry_type_visibility"> [public]</span>
2138
2139
2140               <span class="entry_type_hwlevel">[legacy] </span>
2141
2142
2143
2144
2145             </td> <!-- entry_type -->
2146
2147             <td class="entry_description">
2148               <p>Adjustment to auto-exposure (AE) target image
2149 brightness.<wbr/></p>
2150             </td>
2151
2152             <td class="entry_units">
2153               Compensation steps
2154             </td>
2155
2156             <td class="entry_range">
2157               <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2158             </td>
2159
2160             <td class="entry_tags">
2161               <ul class="entry_tags">
2162                   <li><a href="#tag_BC">BC</a></li>
2163               </ul>
2164             </td>
2165
2166           </tr>
2167           <tr class="entries_header">
2168             <th class="th_details" colspan="5">Details</th>
2169           </tr>
2170           <tr class="entry_cont">
2171             <td class="entry_details" colspan="5">
2172               <p>The adjustment is measured as a count of steps,<wbr/> with the
2173 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2174 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2175 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2176 will mean an exposure compensation of +2 EV; -3 will mean an
2177 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2178 of image brightness.<wbr/> Note that this control will only be
2179 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2180 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2181 <p>In the event of exposure compensation value being changed,<wbr/> camera device
2182 may take several frames to reach the newly requested exposure target.<wbr/>
2183 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2184 state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
2185 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2186 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2187             </td>
2188           </tr>
2189
2190
2191           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2192            <!-- end of entry -->
2193         
2194                 
2195           <tr class="entry" id="controls_android.control.aeLock">
2196             <td class="entry_name
2197              " rowspan="3">
2198               android.<wbr/>control.<wbr/>ae<wbr/>Lock
2199             </td>
2200             <td class="entry_type">
2201                 <span class="entry_type_name entry_type_name_enum">byte</span>
2202
2203               <span class="entry_type_visibility"> [public as boolean]</span>
2204
2205
2206               <span class="entry_type_hwlevel">[legacy] </span>
2207
2208
2209
2210                 <ul class="entry_type_enum">
2211                   <li>
2212                     <span class="entry_type_enum_name">OFF</span>
2213                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2214 is free to update its parameters.<wbr/></p></span>
2215                   </li>
2216                   <li>
2217                     <span class="entry_type_enum_name">ON</span>
2218                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2219 must not update the exposure and sensitivity parameters
2220 while the lock is active.<wbr/></p>
2221 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2222 will still take effect while auto-exposure is locked.<wbr/></p>
2223 <p>Some rare LEGACY devices may not support
2224 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2225                   </li>
2226                 </ul>
2227
2228             </td> <!-- entry_type -->
2229
2230             <td class="entry_description">
2231               <p>Whether auto-exposure (AE) is currently locked to its latest
2232 calculated values.<wbr/></p>
2233             </td>
2234
2235             <td class="entry_units">
2236             </td>
2237
2238             <td class="entry_range">
2239             </td>
2240
2241             <td class="entry_tags">
2242               <ul class="entry_tags">
2243                   <li><a href="#tag_BC">BC</a></li>
2244               </ul>
2245             </td>
2246
2247           </tr>
2248           <tr class="entries_header">
2249             <th class="th_details" colspan="5">Details</th>
2250           </tr>
2251           <tr class="entry_cont">
2252             <td class="entry_details" colspan="5">
2253               <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2254 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2255 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
2256 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2257 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2258 <p>When <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> is changed,<wbr/> even if the AE lock
2259 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2260 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2261 when AE is already locked,<wbr/> the camera device will not change the exposure time
2262 (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) and sensitivity (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
2263 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2264 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2265 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> the scene may become overexposed.<wbr/>
2266 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2267 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2268 the AE if AE is locked by the camera device internally during precapture metering
2269 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2270 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2271 will never succeed in a sequence of preview requests where AE lock is always set
2272 to <code>false</code>.<wbr/></p>
2273 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2274 get locked do not necessarily correspond to the settings that were present in the
2275 latest capture result received from the camera device,<wbr/> since additional captures
2276 and AE updates may have occurred even before the result was sent out.<wbr/> If an
2277 application is switching between automatic and manual control and wishes to eliminate
2278 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2279 <ol>
2280 <li>Starting in auto-AE mode:</li>
2281 <li>Lock AE</li>
2282 <li>Wait for the first result to be output that has the AE locked</li>
2283 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2284 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2285 </ol>
2286 <p>See <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE lock related state transition details.<wbr/></p>
2287             </td>
2288           </tr>
2289
2290
2291           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2292            <!-- end of entry -->
2293         
2294                 
2295           <tr class="entry" id="controls_android.control.aeMode">
2296             <td class="entry_name
2297              " rowspan="3">
2298               android.<wbr/>control.<wbr/>ae<wbr/>Mode
2299             </td>
2300             <td class="entry_type">
2301                 <span class="entry_type_name entry_type_name_enum">byte</span>
2302
2303               <span class="entry_type_visibility"> [public]</span>
2304
2305
2306               <span class="entry_type_hwlevel">[legacy] </span>
2307
2308
2309
2310                 <ul class="entry_type_enum">
2311                   <li>
2312                     <span class="entry_type_enum_name">OFF</span>
2313                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2314 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2315 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2316 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2317 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2318 a flash unit for this camera device.<wbr/></p>
2319 <p>Note that auto-white balance (AWB) and auto-focus (AF)
2320 behavior is device dependent when AE is in OFF mode.<wbr/>
2321 To have consistent behavior across different devices,<wbr/>
2322 it is recommended to either set AWB and AF to OFF mode
2323 or lock AWB and AF before setting AE to OFF.<wbr/>
2324 See <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/>
2325 <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>,<wbr/> and <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2326 for more details.<wbr/></p>
2327 <p>LEGACY devices do not support the OFF mode and will
2328 override attempts to use this value to ON.<wbr/></p></span>
2329                   </li>
2330                   <li>
2331                     <span class="entry_type_enum_name">ON</span>
2332                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2333 with no flash control.<wbr/></p>
2334 <p>The application's values for
2335 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2336 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2337 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2338 application has control over the various
2339 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2340                   </li>
2341                   <li>
2342                     <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
2343                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2344 the camera's flash unit,<wbr/> firing it in low-light
2345 conditions.<wbr/></p>
2346 <p>The flash may be fired during a precapture sequence
2347 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2348 may be fired for captures for which the
2349 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2350 STILL_<wbr/>CAPTURE</p></span>
2351                   </li>
2352                   <li>
2353                     <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
2354                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2355 the camera's flash unit,<wbr/> always firing it for still
2356 captures.<wbr/></p>
2357 <p>The flash may be fired during a precapture sequence
2358 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2359 will always be fired for captures for which the
2360 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2361 STILL_<wbr/>CAPTURE</p></span>
2362                   </li>
2363                   <li>
2364                     <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
2365                     <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2366 reduction.<wbr/></p>
2367 <p>If deemed necessary by the camera device,<wbr/> a red eye
2368 reduction flash will fire during the precapture
2369 sequence.<wbr/></p></span>
2370                   </li>
2371                 </ul>
2372
2373             </td> <!-- entry_type -->
2374
2375             <td class="entry_description">
2376               <p>The desired mode for the camera device's
2377 auto-exposure routine.<wbr/></p>
2378             </td>
2379
2380             <td class="entry_units">
2381             </td>
2382
2383             <td class="entry_range">
2384               <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2385             </td>
2386
2387             <td class="entry_tags">
2388               <ul class="entry_tags">
2389                   <li><a href="#tag_BC">BC</a></li>
2390               </ul>
2391             </td>
2392
2393           </tr>
2394           <tr class="entries_header">
2395             <th class="th_details" colspan="5">Details</th>
2396           </tr>
2397           <tr class="entry_cont">
2398             <td class="entry_details" colspan="5">
2399               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2400 AUTO.<wbr/></p>
2401 <p>When set to any of the ON modes,<wbr/> the camera device's
2402 auto-exposure routine is enabled,<wbr/> overriding the
2403 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2404 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2405 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2406 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2407 is selected,<wbr/> the camera device's flash unit controls are
2408 also overridden.<wbr/></p>
2409 <p>The FLASH modes are only available if the camera device
2410 has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
2411 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
2412 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2413 <p>When set to any of the ON modes,<wbr/> the values chosen by the
2414 camera device auto-exposure routine for the overridden
2415 fields for a given capture will be available in its
2416 CaptureResult.<wbr/></p>
2417             </td>
2418           </tr>
2419
2420
2421           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2422            <!-- end of entry -->
2423         
2424                 
2425           <tr class="entry" id="controls_android.control.aeRegions">
2426             <td class="entry_name
2427              " rowspan="5">
2428               android.<wbr/>control.<wbr/>ae<wbr/>Regions
2429             </td>
2430             <td class="entry_type">
2431                 <span class="entry_type_name">int32</span>
2432                 <span class="entry_type_container">x</span>
2433
2434                 <span class="entry_type_array">
2435                   5 x area_count
2436                 </span>
2437               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2438
2439
2440
2441
2442
2443
2444             </td> <!-- entry_type -->
2445
2446             <td class="entry_description">
2447               <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2448             </td>
2449
2450             <td class="entry_units">
2451               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2452             </td>
2453
2454             <td class="entry_range">
2455               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2456 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2457             </td>
2458
2459             <td class="entry_tags">
2460               <ul class="entry_tags">
2461                   <li><a href="#tag_BC">BC</a></li>
2462               </ul>
2463             </td>
2464
2465           </tr>
2466           <tr class="entries_header">
2467             <th class="th_details" colspan="5">Details</th>
2468           </tr>
2469           <tr class="entry_cont">
2470             <td class="entry_details" colspan="5">
2471               <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2472 Otherwise will always be present.<wbr/></p>
2473 <p>The maximum number of regions supported by the device is determined by the value
2474 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2475 <p>The coordinate system is based on the active pixel array,<wbr/>
2476 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2477 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2478 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2479 bottom-right pixel in the active pixel array.<wbr/></p>
2480 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2481 for every pixel in the area.<wbr/> This means that a large metering area
2482 with the same weight as a smaller area will have more effect in
2483 the metering result.<wbr/> Metering areas can partially overlap and the
2484 camera device will add the weights in the overlap region.<wbr/></p>
2485 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2486 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2487 weight is ignored.<wbr/></p>
2488 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2489 camera device.<wbr/></p>
2490 <p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
2491 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2492 region and output only the intersection rectangle as the metering region in the result
2493 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
2494 not reported in the result metadata.<wbr/></p>
2495             </td>
2496           </tr>
2497
2498           <tr class="entries_header">
2499             <th class="th_details" colspan="5">HAL Implementation Details</th>
2500           </tr>
2501           <tr class="entry_cont">
2502             <td class="entry_details" colspan="5">
2503               <p>The HAL level representation of MeteringRectangle[] is a
2504 int[5 * area_<wbr/>count].<wbr/>
2505 Every five elements represent a metering region of
2506 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2507 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2508 exclusive on xmax and ymax.<wbr/></p>
2509             </td>
2510           </tr>
2511
2512           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2513            <!-- end of entry -->
2514         
2515                 
2516           <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2517             <td class="entry_name
2518              " rowspan="3">
2519               android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2520             </td>
2521             <td class="entry_type">
2522                 <span class="entry_type_name">int32</span>
2523                 <span class="entry_type_container">x</span>
2524
2525                 <span class="entry_type_array">
2526                   2
2527                 </span>
2528               <span class="entry_type_visibility"> [public as rangeInt]</span>
2529
2530
2531               <span class="entry_type_hwlevel">[legacy] </span>
2532
2533
2534
2535
2536             </td> <!-- entry_type -->
2537
2538             <td class="entry_description">
2539               <p>Range over which the auto-exposure routine can
2540 adjust the capture frame rate to maintain good
2541 exposure.<wbr/></p>
2542             </td>
2543
2544             <td class="entry_units">
2545               Frames per second (FPS)
2546             </td>
2547
2548             <td class="entry_range">
2549               <p>Any of the entries in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p>
2550             </td>
2551
2552             <td class="entry_tags">
2553               <ul class="entry_tags">
2554                   <li><a href="#tag_BC">BC</a></li>
2555               </ul>
2556             </td>
2557
2558           </tr>
2559           <tr class="entries_header">
2560             <th class="th_details" colspan="5">Details</th>
2561           </tr>
2562           <tr class="entry_cont">
2563             <td class="entry_details" colspan="5">
2564               <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2565 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2566 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2567             </td>
2568           </tr>
2569
2570
2571           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2572            <!-- end of entry -->
2573         
2574                 
2575           <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2576             <td class="entry_name
2577              " rowspan="5">
2578               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2579             </td>
2580             <td class="entry_type">
2581                 <span class="entry_type_name entry_type_name_enum">byte</span>
2582
2583               <span class="entry_type_visibility"> [public]</span>
2584
2585
2586               <span class="entry_type_hwlevel">[limited] </span>
2587
2588
2589
2590                 <ul class="entry_type_enum">
2591                   <li>
2592                     <span class="entry_type_enum_name">IDLE</span>
2593                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2594                   </li>
2595                   <li>
2596                     <span class="entry_type_enum_name">START</span>
2597                     <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2598 by the camera device.<wbr/></p>
2599 <p>The exact effect of the precapture trigger depends on
2600 the current AE mode and state.<wbr/></p></span>
2601                   </li>
2602                   <li>
2603                     <span class="entry_type_enum_name">CANCEL</span>
2604                     <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2605 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2606 initial state.<wbr/></p></span>
2607                   </li>
2608                 </ul>
2609
2610             </td> <!-- entry_type -->
2611
2612             <td class="entry_description">
2613               <p>Whether the camera device will trigger a precapture
2614 metering sequence when it processes this request.<wbr/></p>
2615             </td>
2616
2617             <td class="entry_units">
2618             </td>
2619
2620             <td class="entry_range">
2621             </td>
2622
2623             <td class="entry_tags">
2624               <ul class="entry_tags">
2625                   <li><a href="#tag_BC">BC</a></li>
2626               </ul>
2627             </td>
2628
2629           </tr>
2630           <tr class="entries_header">
2631             <th class="th_details" colspan="5">Details</th>
2632           </tr>
2633           <tr class="entry_cont">
2634             <td class="entry_details" colspan="5">
2635               <p>This entry is normally set to IDLE,<wbr/> or is not
2636 included at all in the request settings.<wbr/> When included and
2637 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2638 precapture metering sequence.<wbr/></p>
2639 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
2640 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2641 If a precapture metering sequence is already completed,<wbr/> and the camera
2642 device has implicitly locked the AE for subsequent still capture,<wbr/> the
2643 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2644 <p>The precapture sequence should be triggered before starting a
2645 high-quality still capture for final metering decisions to
2646 be made,<wbr/> and for firing pre-capture flash pulses to estimate
2647 scene brightness and required final capture flash power,<wbr/> when
2648 the flash is enabled.<wbr/></p>
2649 <p>Normally,<wbr/> this entry should be set to START for only a
2650 single request,<wbr/> and the application should wait until the
2651 sequence completes before starting a new one.<wbr/></p>
2652 <p>When a precapture metering sequence is finished,<wbr/> the camera device
2653 may lock the auto-exposure routine internally to be able to accurately expose the
2654 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2655 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2656 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2657 submit a request with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == true</code>,<wbr/> followed by a request
2658 with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == false</code>,<wbr/> if the application decides not to submit a
2659 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2660 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2661 internally locked AE if the application doesn't submit a still capture request after
2662 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2663 be used in devices that have earlier API levels.<wbr/></p>
2664 <p>The exact effect of auto-exposure (AE) precapture trigger
2665 depends on the current AE mode and state; see
2666 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2667 details.<wbr/></p>
2668 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2669 capturing a high-resolution JPEG image will automatically trigger a
2670 precapture sequence before the high-resolution capture,<wbr/> including
2671 potentially firing a pre-capture flash.<wbr/></p>
2672 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2673 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2674 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2675 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2676 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2677 changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
2678 example.<wbr/></p>
2679 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2680 the camera device will complete them in the optimal order for that device.<wbr/></p>
2681             </td>
2682           </tr>
2683
2684           <tr class="entries_header">
2685             <th class="th_details" colspan="5">HAL Implementation Details</th>
2686           </tr>
2687           <tr class="entry_cont">
2688             <td class="entry_details" colspan="5">
2689               <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2690 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
2691 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2692 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2693 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2694             </td>
2695           </tr>
2696
2697           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2698            <!-- end of entry -->
2699         
2700                 
2701           <tr class="entry" id="controls_android.control.afMode">
2702             <td class="entry_name
2703              " rowspan="5">
2704               android.<wbr/>control.<wbr/>af<wbr/>Mode
2705             </td>
2706             <td class="entry_type">
2707                 <span class="entry_type_name entry_type_name_enum">byte</span>
2708
2709               <span class="entry_type_visibility"> [public]</span>
2710
2711
2712               <span class="entry_type_hwlevel">[legacy] </span>
2713
2714
2715
2716                 <ul class="entry_type_enum">
2717                   <li>
2718                     <span class="entry_type_enum_name">OFF</span>
2719                     <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2720 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2721 application.<wbr/></p></span>
2722                   </li>
2723                   <li>
2724                     <span class="entry_type_enum_name">AUTO</span>
2725                     <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2726 <p>In this mode,<wbr/> the lens does not move unless
2727 the autofocus trigger action is called.<wbr/> When that trigger
2728 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2729 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2730 <p>Always supported if lens is not fixed focus.<wbr/></p>
2731 <p>Use <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> to determine if lens
2732 is fixed-focus.<wbr/></p>
2733 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2734 and sets the AF state to INACTIVE.<wbr/></p></span>
2735                   </li>
2736                   <li>
2737                     <span class="entry_type_enum_name">MACRO</span>
2738                     <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2739 <p>In this mode,<wbr/> the lens does not move unless the
2740 autofocus trigger action is called.<wbr/> When that trigger is
2741 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2742 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2743 mode is optimized for focusing on objects very close to
2744 the camera.<wbr/></p>
2745 <p>When that trigger is activated,<wbr/> AF will transition to
2746 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2747 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2748 position to default,<wbr/> and sets the AF state to
2749 INACTIVE.<wbr/></p></span>
2750                   </li>
2751                   <li>
2752                     <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
2753                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2754 position continually to attempt to provide a
2755 constantly-in-focus image stream.<wbr/></p>
2756 <p>The focusing behavior should be suitable for good quality
2757 video recording; typically this means slower focus
2758 movement and no overshoots.<wbr/> When the AF trigger is not
2759 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2760 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2761 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2762 the algorithm should immediately transition into
2763 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2764 lens position until a cancel AF trigger is received.<wbr/></p>
2765 <p>Once cancel is received,<wbr/> the algorithm should transition
2766 back to INACTIVE and resume passive scan.<wbr/> Note that this
2767 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2768 ongoing PASSIVE_<wbr/>SCAN must immediately be
2769 canceled.<wbr/></p></span>
2770                   </li>
2771                   <li>
2772                     <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
2773                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2774 position continually to attempt to provide a
2775 constantly-in-focus image stream.<wbr/></p>
2776 <p>The focusing behavior should be suitable for still image
2777 capture; typically this means focusing as fast as
2778 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2779 algorithm should start in INACTIVE state,<wbr/> and then
2780 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2781 appropriate as it attempts to maintain focus.<wbr/> When the AF
2782 trigger is activated,<wbr/> the algorithm should finish its
2783 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2784 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2785 lens position until a cancel AF trigger is received.<wbr/></p>
2786 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
2787 should transition back to INACTIVE and then act as if it
2788 has just been started.<wbr/></p></span>
2789                   </li>
2790                   <li>
2791                     <span class="entry_type_enum_name">EDOF</span>
2792                     <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2793 <p>The camera device will produce images with an extended
2794 depth of field automatically; no special focusing
2795 operations need to be done before taking a picture.<wbr/></p>
2796 <p>AF triggers are ignored,<wbr/> and the AF state will always be
2797 INACTIVE.<wbr/></p></span>
2798                   </li>
2799                 </ul>
2800
2801             </td> <!-- entry_type -->
2802
2803             <td class="entry_description">
2804               <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2805 mode it is set to.<wbr/></p>
2806             </td>
2807
2808             <td class="entry_units">
2809             </td>
2810
2811             <td class="entry_range">
2812               <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2813             </td>
2814
2815             <td class="entry_tags">
2816               <ul class="entry_tags">
2817                   <li><a href="#tag_BC">BC</a></li>
2818               </ul>
2819             </td>
2820
2821           </tr>
2822           <tr class="entries_header">
2823             <th class="th_details" colspan="5">Details</th>
2824           </tr>
2825           <tr class="entry_cont">
2826             <td class="entry_details" colspan="5">
2827               <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2828 (i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> &gt; 0</code>).<wbr/> Also note that
2829 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2830 dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
2831 setting <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> to OFF,<wbr/> or set AF mode to OFF when AE is OFF.<wbr/></p>
2832 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2833 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2834 in result metadata.<wbr/></p>
2835             </td>
2836           </tr>
2837
2838           <tr class="entries_header">
2839             <th class="th_details" colspan="5">HAL Implementation Details</th>
2840           </tr>
2841           <tr class="entry_cont">
2842             <td class="entry_details" colspan="5">
2843               <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2844 request (<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
2845 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2846 <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> which indicates that the lens is
2847 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2848 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2849 the same focal plane remains in focus.<wbr/></p>
2850 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2851 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2852 (see <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for detailed state transitions),<wbr/> the HAL should maintain the
2853 same lock behavior as above.<wbr/></p>
2854 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2855 focus 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/>
2856 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2857 manual control.<wbr/></p>
2858 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2859 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
2860 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
2861 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
2862 that will arise on camera modules with open-loop VCMs.<wbr/></p>
2863             </td>
2864           </tr>
2865
2866           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2867            <!-- end of entry -->
2868         
2869                 
2870           <tr class="entry" id="controls_android.control.afRegions">
2871             <td class="entry_name
2872              " rowspan="5">
2873               android.<wbr/>control.<wbr/>af<wbr/>Regions
2874             </td>
2875             <td class="entry_type">
2876                 <span class="entry_type_name">int32</span>
2877                 <span class="entry_type_container">x</span>
2878
2879                 <span class="entry_type_array">
2880                   5 x area_count
2881                 </span>
2882               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2883
2884
2885
2886
2887
2888
2889             </td> <!-- entry_type -->
2890
2891             <td class="entry_description">
2892               <p>List of metering areas to use for auto-focus.<wbr/></p>
2893             </td>
2894
2895             <td class="entry_units">
2896               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2897             </td>
2898
2899             <td class="entry_range">
2900               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2901 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2902             </td>
2903
2904             <td class="entry_tags">
2905               <ul class="entry_tags">
2906                   <li><a href="#tag_BC">BC</a></li>
2907               </ul>
2908             </td>
2909
2910           </tr>
2911           <tr class="entries_header">
2912             <th class="th_details" colspan="5">Details</th>
2913           </tr>
2914           <tr class="entry_cont">
2915             <td class="entry_details" colspan="5">
2916               <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
2917 Otherwise will always be present.<wbr/></p>
2918 <p>The maximum number of focus areas supported by the device is determined by the value
2919 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
2920 <p>The coordinate system is based on the active pixel array,<wbr/>
2921 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2922 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2923 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2924 bottom-right pixel in the active pixel array.<wbr/></p>
2925 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2926 for every pixel in the area.<wbr/> This means that a large metering area
2927 with the same weight as a smaller area will have more effect in
2928 the metering result.<wbr/> Metering areas can partially overlap and the
2929 camera device will add the weights in the overlap region.<wbr/></p>
2930 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
2931 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
2932 ignored.<wbr/></p>
2933 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2934 camera device.<wbr/></p>
2935 <p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
2936 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2937 region and output only the intersection rectangle as the metering region in the result
2938 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
2939 not reported in the result metadata.<wbr/></p>
2940             </td>
2941           </tr>
2942
2943           <tr class="entries_header">
2944             <th class="th_details" colspan="5">HAL Implementation Details</th>
2945           </tr>
2946           <tr class="entry_cont">
2947             <td class="entry_details" colspan="5">
2948               <p>The HAL level representation of MeteringRectangle[] is a
2949 int[5 * area_<wbr/>count].<wbr/>
2950 Every five elements represent a metering region of
2951 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2952 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2953 exclusive on xmax and ymax.<wbr/></p>
2954             </td>
2955           </tr>
2956
2957           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2958            <!-- end of entry -->
2959         
2960                 
2961           <tr class="entry" id="controls_android.control.afTrigger">
2962             <td class="entry_name
2963              " rowspan="5">
2964               android.<wbr/>control.<wbr/>af<wbr/>Trigger
2965             </td>
2966             <td class="entry_type">
2967                 <span class="entry_type_name entry_type_name_enum">byte</span>
2968
2969               <span class="entry_type_visibility"> [public]</span>
2970
2971
2972               <span class="entry_type_hwlevel">[legacy] </span>
2973
2974
2975
2976                 <ul class="entry_type_enum">
2977                   <li>
2978                     <span class="entry_type_enum_name">IDLE</span>
2979                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2980                   </li>
2981                   <li>
2982                     <span class="entry_type_enum_name">START</span>
2983                     <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
2984                   </li>
2985                   <li>
2986                     <span class="entry_type_enum_name">CANCEL</span>
2987                     <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
2988 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
2989                   </li>
2990                 </ul>
2991
2992             </td> <!-- entry_type -->
2993
2994             <td class="entry_description">
2995               <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
2996             </td>
2997
2998             <td class="entry_units">
2999             </td>
3000
3001             <td class="entry_range">
3002             </td>
3003
3004             <td class="entry_tags">
3005               <ul class="entry_tags">
3006                   <li><a href="#tag_BC">BC</a></li>
3007               </ul>
3008             </td>
3009
3010           </tr>
3011           <tr class="entries_header">
3012             <th class="th_details" colspan="5">Details</th>
3013           </tr>
3014           <tr class="entry_cont">
3015             <td class="entry_details" colspan="5">
3016               <p>This entry is normally set to IDLE,<wbr/> or is not
3017 included at all in the request settings.<wbr/></p>
3018 <p>When included and set to START,<wbr/> the camera device will trigger the
3019 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3020 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3021 and return to its initial AF state.<wbr/></p>
3022 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3023 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3024 START for multiple captures in a row means restarting the AF operation over
3025 and over again.<wbr/></p>
3026 <p>See <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for what the trigger means for each AF mode.<wbr/></p>
3027 <p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>
3028 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3029 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3030 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3031 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3032 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3033             </td>
3034           </tr>
3035
3036           <tr class="entries_header">
3037             <th class="th_details" colspan="5">HAL Implementation Details</th>
3038           </tr>
3039           <tr class="entry_cont">
3040             <td class="entry_details" colspan="5">
3041               <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3042 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
3043 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3044 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3045 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3046             </td>
3047           </tr>
3048
3049           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3050            <!-- end of entry -->
3051         
3052                 
3053           <tr class="entry" id="controls_android.control.awbLock">
3054             <td class="entry_name
3055              " rowspan="3">
3056               android.<wbr/>control.<wbr/>awb<wbr/>Lock
3057             </td>
3058             <td class="entry_type">
3059                 <span class="entry_type_name entry_type_name_enum">byte</span>
3060
3061               <span class="entry_type_visibility"> [public as boolean]</span>
3062
3063
3064               <span class="entry_type_hwlevel">[legacy] </span>
3065
3066
3067
3068                 <ul class="entry_type_enum">
3069                   <li>
3070                     <span class="entry_type_enum_name">OFF</span>
3071                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3072 algorithm is free to update its parameters if in AUTO
3073 mode.<wbr/></p></span>
3074                   </li>
3075                   <li>
3076                     <span class="entry_type_enum_name">ON</span>
3077                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3078 algorithm will not update its parameters while the lock
3079 is active.<wbr/></p></span>
3080                   </li>
3081                 </ul>
3082
3083             </td> <!-- entry_type -->
3084
3085             <td class="entry_description">
3086               <p>Whether auto-white balance (AWB) is currently locked to its
3087 latest calculated values.<wbr/></p>
3088             </td>
3089
3090             <td class="entry_units">
3091             </td>
3092
3093             <td class="entry_range">
3094             </td>
3095
3096             <td class="entry_tags">
3097               <ul class="entry_tags">
3098                   <li><a href="#tag_BC">BC</a></li>
3099               </ul>
3100             </td>
3101
3102           </tr>
3103           <tr class="entries_header">
3104             <th class="th_details" colspan="5">Details</th>
3105           </tr>
3106           <tr class="entry_cont">
3107             <td class="entry_details" colspan="5">
3108               <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3109 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3110 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3111 get locked do not necessarily correspond to the settings that were present in the
3112 latest capture result received from the camera device,<wbr/> since additional captures
3113 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3114 application is switching between automatic and manual control and wishes to eliminate
3115 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3116 <ol>
3117 <li>Starting in auto-AWB mode:</li>
3118 <li>Lock AWB</li>
3119 <li>Wait for the first result to be output that has the AWB locked</li>
3120 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3121 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3122 </ol>
3123 <p>Note that AWB lock is only meaningful when
3124 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3125 AWB is already fixed to a specific setting.<wbr/></p>
3126 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3127             </td>
3128           </tr>
3129
3130
3131           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3132            <!-- end of entry -->
3133         
3134                 
3135           <tr class="entry" id="controls_android.control.awbMode">
3136             <td class="entry_name
3137              " rowspan="3">
3138               android.<wbr/>control.<wbr/>awb<wbr/>Mode
3139             </td>
3140             <td class="entry_type">
3141                 <span class="entry_type_name entry_type_name_enum">byte</span>
3142
3143               <span class="entry_type_visibility"> [public]</span>
3144
3145
3146               <span class="entry_type_hwlevel">[legacy] </span>
3147
3148
3149
3150                 <ul class="entry_type_enum">
3151                   <li>
3152                     <span class="entry_type_enum_name">OFF</span>
3153                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3154 <p>The application-selected color transform matrix
3155 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3156 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3157 device for manual white balance control.<wbr/></p></span>
3158                   </li>
3159                   <li>
3160                     <span class="entry_type_enum_name">AUTO</span>
3161                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3162 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3163 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3164 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3165 values used by the camera device for the transform and gains
3166 will be available in the capture result for this request.<wbr/></p></span>
3167                   </li>
3168                   <li>
3169                     <span class="entry_type_enum_name">INCANDESCENT</span>
3170                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3171 the camera device uses incandescent light as the assumed scene
3172 illumination for white balance.<wbr/></p>
3173 <p>While the exact white balance transforms are up to the
3174 camera device,<wbr/> they will approximately match the CIE
3175 standard illuminant A.<wbr/></p>
3176 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3177 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3178 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3179 values used by the camera device for the transform and gains
3180 will be available in the capture result for this request.<wbr/></p></span>
3181                   </li>
3182                   <li>
3183                     <span class="entry_type_enum_name">FLUORESCENT</span>
3184                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3185 the camera device uses fluorescent light as the assumed scene
3186 illumination for white balance.<wbr/></p>
3187 <p>While the exact white balance transforms are up to the
3188 camera device,<wbr/> they will approximately match the CIE
3189 standard illuminant F2.<wbr/></p>
3190 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3191 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3192 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3193 values used by the camera device for the transform and gains
3194 will be available in the capture result for this request.<wbr/></p></span>
3195                   </li>
3196                   <li>
3197                     <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
3198                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3199 the camera device uses warm fluorescent light as the assumed scene
3200 illumination for white balance.<wbr/></p>
3201 <p>While the exact white balance transforms are up to the
3202 camera device,<wbr/> they will approximately match the CIE
3203 standard illuminant F4.<wbr/></p>
3204 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3205 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3206 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3207 values used by the camera device for the transform and gains
3208 will be available in the capture result for this request.<wbr/></p></span>
3209                   </li>
3210                   <li>
3211                     <span class="entry_type_enum_name">DAYLIGHT</span>
3212                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3213 the camera device uses daylight light as the assumed scene
3214 illumination for white balance.<wbr/></p>
3215 <p>While the exact white balance transforms are up to the
3216 camera device,<wbr/> they will approximately match the CIE
3217 standard illuminant D65.<wbr/></p>
3218 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3219 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3220 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3221 values used by the camera device for the transform and gains
3222 will be available in the capture result for this request.<wbr/></p></span>
3223                   </li>
3224                   <li>
3225                     <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
3226                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3227 the camera device uses cloudy daylight light as the assumed scene
3228 illumination for white balance.<wbr/></p>
3229 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3230 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3231 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3232 values used by the camera device for the transform and gains
3233 will be available in the capture result for this request.<wbr/></p></span>
3234                   </li>
3235                   <li>
3236                     <span class="entry_type_enum_name">TWILIGHT</span>
3237                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3238 the camera device uses twilight light as the assumed scene
3239 illumination for white balance.<wbr/></p>
3240 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3241 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3242 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3243 values used by the camera device for the transform and gains
3244 will be available in the capture result for this request.<wbr/></p></span>
3245                   </li>
3246                   <li>
3247                     <span class="entry_type_enum_name">SHADE</span>
3248                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3249 the camera device uses shade light as the assumed scene
3250 illumination for white balance.<wbr/></p>
3251 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3252 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3253 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3254 values used by the camera device for the transform and gains
3255 will be available in the capture result for this request.<wbr/></p></span>
3256                   </li>
3257                 </ul>
3258
3259             </td> <!-- entry_type -->
3260
3261             <td class="entry_description">
3262               <p>Whether auto-white balance (AWB) is currently setting the color
3263 transform fields,<wbr/> and what its illumination target
3264 is.<wbr/></p>
3265             </td>
3266
3267             <td class="entry_units">
3268             </td>
3269
3270             <td class="entry_range">
3271               <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3272             </td>
3273
3274             <td class="entry_tags">
3275               <ul class="entry_tags">
3276                   <li><a href="#tag_BC">BC</a></li>
3277               </ul>
3278             </td>
3279
3280           </tr>
3281           <tr class="entries_header">
3282             <th class="th_details" colspan="5">Details</th>
3283           </tr>
3284           <tr class="entry_cont">
3285             <td class="entry_details" colspan="5">
3286               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3287 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3288 routine is enabled,<wbr/> overriding the application's selected
3289 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/> <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3290 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/> Note that when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
3291 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3292 also set AWB mode to OFF or lock AWB by using <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> before
3293 setting AE mode to OFF.<wbr/></p>
3294 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3295 routine is disabled.<wbr/> The application manually controls the white
3296 balance 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>
3297 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3298 <p>When set to any other modes,<wbr/> the camera device's auto-white
3299 balance routine is disabled.<wbr/> The camera device uses each
3300 particular illumination target for white balance
3301 adjustment.<wbr/> The application's values for
3302 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3303 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3304 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3305             </td>
3306           </tr>
3307
3308
3309           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3310            <!-- end of entry -->
3311         
3312                 
3313           <tr class="entry" id="controls_android.control.awbRegions">
3314             <td class="entry_name
3315              " rowspan="5">
3316               android.<wbr/>control.<wbr/>awb<wbr/>Regions
3317             </td>
3318             <td class="entry_type">
3319                 <span class="entry_type_name">int32</span>
3320                 <span class="entry_type_container">x</span>
3321
3322                 <span class="entry_type_array">
3323                   5 x area_count
3324                 </span>
3325               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3326
3327
3328
3329
3330
3331
3332             </td> <!-- entry_type -->
3333
3334             <td class="entry_description">
3335               <p>List of metering areas to use for auto-white-balance illuminant
3336 estimation.<wbr/></p>
3337             </td>
3338
3339             <td class="entry_units">
3340               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3341             </td>
3342
3343             <td class="entry_range">
3344               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3345 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3346             </td>
3347
3348             <td class="entry_tags">
3349               <ul class="entry_tags">
3350                   <li><a href="#tag_BC">BC</a></li>
3351               </ul>
3352             </td>
3353
3354           </tr>
3355           <tr class="entries_header">
3356             <th class="th_details" colspan="5">Details</th>
3357           </tr>
3358           <tr class="entry_cont">
3359             <td class="entry_details" colspan="5">
3360               <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3361 Otherwise will always be present.<wbr/></p>
3362 <p>The maximum number of regions supported by the device is determined by the value
3363 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3364 <p>The coordinate system is based on the active pixel array,<wbr/>
3365 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3366 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3367 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3368 bottom-right pixel in the active pixel array.<wbr/></p>
3369 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3370 for every pixel in the area.<wbr/> This means that a large metering area
3371 with the same weight as a smaller area will have more effect in
3372 the metering result.<wbr/> Metering areas can partially overlap and the
3373 camera device will add the weights in the overlap region.<wbr/></p>
3374 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3375 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
3376 0 weight is ignored.<wbr/></p>
3377 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3378 camera device.<wbr/></p>
3379 <p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
3380 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3381 region and output only the intersection rectangle as the metering region in the result
3382 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3383 not reported in the result metadata.<wbr/></p>
3384             </td>
3385           </tr>
3386
3387           <tr class="entries_header">
3388             <th class="th_details" colspan="5">HAL Implementation Details</th>
3389           </tr>
3390           <tr class="entry_cont">
3391             <td class="entry_details" colspan="5">
3392               <p>The HAL level representation of MeteringRectangle[] is a
3393 int[5 * area_<wbr/>count].<wbr/>
3394 Every five elements represent a metering region of
3395 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3396 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3397 exclusive on xmax and ymax.<wbr/></p>
3398             </td>
3399           </tr>
3400
3401           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3402            <!-- end of entry -->
3403         
3404                 
3405           <tr class="entry" id="controls_android.control.captureIntent">
3406             <td class="entry_name
3407              " rowspan="3">
3408               android.<wbr/>control.<wbr/>capture<wbr/>Intent
3409             </td>
3410             <td class="entry_type">
3411                 <span class="entry_type_name entry_type_name_enum">byte</span>
3412
3413               <span class="entry_type_visibility"> [public]</span>
3414
3415
3416               <span class="entry_type_hwlevel">[legacy] </span>
3417
3418
3419
3420                 <ul class="entry_type_enum">
3421                   <li>
3422                     <span class="entry_type_enum_name">CUSTOM</span>
3423                     <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3424 categories.<wbr/> The camera device will default to preview-like
3425 behavior.<wbr/></p></span>
3426                   </li>
3427                   <li>
3428                     <span class="entry_type_enum_name">PREVIEW</span>
3429                     <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3430 <p>The precapture trigger may be used to start off a metering
3431 w/<wbr/>flash sequence.<wbr/></p></span>
3432                   </li>
3433                   <li>
3434                     <span class="entry_type_enum_name">STILL_CAPTURE</span>
3435                     <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3436 use case.<wbr/></p>
3437 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3438                   </li>
3439                   <li>
3440                     <span class="entry_type_enum_name">VIDEO_RECORD</span>
3441                     <span class="entry_type_enum_notes"><p>This request is for a video recording
3442 use case.<wbr/></p></span>
3443                   </li>
3444                   <li>
3445                     <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
3446                     <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3447 image while recording video) use case.<wbr/></p>
3448 <p>The camera device should take the highest-quality image
3449 possible (given the other settings) without disrupting the
3450 frame rate of video recording.<wbr/>  </p></span>
3451                   </li>
3452                   <li>
3453                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
3454                     <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3455 application will stream full-resolution images and
3456 reprocess one or several later for a final
3457 capture.<wbr/></p></span>
3458                   </li>
3459                   <li>
3460                     <span class="entry_type_enum_name">MANUAL</span>
3461                     <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3462 the applications want to directly control the capture parameters.<wbr/></p>
3463 <p>For example,<wbr/> the application may wish to manually control
3464 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> etc.<wbr/></p></span>
3465                   </li>
3466                 </ul>
3467
3468             </td> <!-- entry_type -->
3469
3470             <td class="entry_description">
3471               <p>Information to the camera device 3A (auto-exposure,<wbr/>
3472 auto-focus,<wbr/> auto-white balance) routines about the purpose
3473 of this capture,<wbr/> to help the camera device to decide optimal 3A
3474 strategy.<wbr/></p>
3475             </td>
3476
3477             <td class="entry_units">
3478             </td>
3479
3480             <td class="entry_range">
3481             </td>
3482
3483             <td class="entry_tags">
3484               <ul class="entry_tags">
3485                   <li><a href="#tag_BC">BC</a></li>
3486               </ul>
3487             </td>
3488
3489           </tr>
3490           <tr class="entries_header">
3491             <th class="th_details" colspan="5">Details</th>
3492           </tr>
3493           <tr class="entry_cont">
3494             <td class="entry_details" colspan="5">
3495               <p>This control (except for MANUAL) is only effective if
3496 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3497 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
3498 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
3499 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
3500 always supported.<wbr/></p>
3501             </td>
3502           </tr>
3503
3504
3505           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3506            <!-- end of entry -->
3507         
3508                 
3509           <tr class="entry" id="controls_android.control.effectMode">
3510             <td class="entry_name
3511              " rowspan="3">
3512               android.<wbr/>control.<wbr/>effect<wbr/>Mode
3513             </td>
3514             <td class="entry_type">
3515                 <span class="entry_type_name entry_type_name_enum">byte</span>
3516
3517               <span class="entry_type_visibility"> [public]</span>
3518
3519
3520               <span class="entry_type_hwlevel">[legacy] </span>
3521
3522
3523
3524                 <ul class="entry_type_enum">
3525                   <li>
3526                     <span class="entry_type_enum_name">OFF</span>
3527                     <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3528                   </li>
3529                   <li>
3530                     <span class="entry_type_enum_name">MONO</span>
3531                     <span class="entry_type_enum_optional">[optional]</span>
3532                     <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3533 a single color.<wbr/></p>
3534 <p>This will typically be grayscale.<wbr/></p></span>
3535                   </li>
3536                   <li>
3537                     <span class="entry_type_enum_name">NEGATIVE</span>
3538                     <span class="entry_type_enum_optional">[optional]</span>
3539                     <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3540 are inverted.<wbr/></p></span>
3541                   </li>
3542                   <li>
3543                     <span class="entry_type_enum_name">SOLARIZE</span>
3544                     <span class="entry_type_enum_optional">[optional]</span>
3545                     <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3546 image is wholly or partially reversed in
3547 tone.<wbr/></p></span>
3548                   </li>
3549                   <li>
3550                     <span class="entry_type_enum_name">SEPIA</span>
3551                     <span class="entry_type_enum_optional">[optional]</span>
3552                     <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3553 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3554                   </li>
3555                   <li>
3556                     <span class="entry_type_enum_name">POSTERIZE</span>
3557                     <span class="entry_type_enum_optional">[optional]</span>
3558                     <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3559 discrete regions of tone rather than a continuous
3560 gradient of tones.<wbr/></p></span>
3561                   </li>
3562                   <li>
3563                     <span class="entry_type_enum_name">WHITEBOARD</span>
3564                     <span class="entry_type_enum_optional">[optional]</span>
3565                     <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3566 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3567                   </li>
3568                   <li>
3569                     <span class="entry_type_enum_name">BLACKBOARD</span>
3570                     <span class="entry_type_enum_optional">[optional]</span>
3571                     <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3572 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3573                   </li>
3574                   <li>
3575                     <span class="entry_type_enum_name">AQUA</span>
3576                     <span class="entry_type_enum_optional">[optional]</span>
3577                     <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3578                   </li>
3579                 </ul>
3580
3581             </td> <!-- entry_type -->
3582
3583             <td class="entry_description">
3584               <p>A special color effect to apply.<wbr/></p>
3585             </td>
3586
3587             <td class="entry_units">
3588             </td>
3589
3590             <td class="entry_range">
3591               <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3592             </td>
3593
3594             <td class="entry_tags">
3595               <ul class="entry_tags">
3596                   <li><a href="#tag_BC">BC</a></li>
3597               </ul>
3598             </td>
3599
3600           </tr>
3601           <tr class="entries_header">
3602             <th class="th_details" colspan="5">Details</th>
3603           </tr>
3604           <tr class="entry_cont">
3605             <td class="entry_details" colspan="5">
3606               <p>When this mode is set,<wbr/> a color effect will be applied
3607 to images produced by the camera device.<wbr/> The interpretation
3608 and implementation of these color effects is left to the
3609 implementor of the camera device,<wbr/> and should not be
3610 depended on to be consistent (or present) across all
3611 devices.<wbr/></p>
3612             </td>
3613           </tr>
3614
3615
3616           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3617            <!-- end of entry -->
3618         
3619                 
3620           <tr class="entry" id="controls_android.control.mode">
3621             <td class="entry_name
3622              " rowspan="3">
3623               android.<wbr/>control.<wbr/>mode
3624             </td>
3625             <td class="entry_type">
3626                 <span class="entry_type_name entry_type_name_enum">byte</span>
3627
3628               <span class="entry_type_visibility"> [public]</span>
3629
3630
3631               <span class="entry_type_hwlevel">[legacy] </span>
3632
3633
3634
3635                 <ul class="entry_type_enum">
3636                   <li>
3637                     <span class="entry_type_enum_name">OFF</span>
3638                     <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3639 <p>All control by the device's metering and focusing (3A)
3640 routines is disabled,<wbr/> and no other settings in
3641 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3642 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3643 device to select post-processing values for processing
3644 blocks that do not allow for manual control,<wbr/> or are not
3645 exposed by the camera API.<wbr/></p>
3646 <p>However,<wbr/> the camera device's 3A routines may continue to
3647 collect statistics and update their internal state so that
3648 when control is switched to AUTO mode,<wbr/> good control values
3649 can be immediately applied.<wbr/></p></span>
3650                   </li>
3651                   <li>
3652                     <span class="entry_type_enum_name">AUTO</span>
3653                     <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3654 <p>Manual control of capture parameters is disabled.<wbr/> All
3655 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3656 effect.<wbr/></p></span>
3657                   </li>
3658                   <li>
3659                     <span class="entry_type_enum_name">USE_SCENE_MODE</span>
3660                     <span class="entry_type_enum_optional">[optional]</span>
3661                     <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3662 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3663 control.<wbr/>afMode controls; the camera device will ignore
3664 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3665 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3666 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3667 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3668 contain some modes other than DISABLED).<wbr/></p></span>
3669                   </li>
3670                   <li>
3671                     <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
3672                     <span class="entry_type_enum_optional">[optional]</span>
3673                     <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3674 used by camera device background auto-exposure,<wbr/> auto-white balance and
3675 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3676 <p>Specifically,<wbr/> the 3A routines are locked to the last
3677 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3678 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3679 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3680 discarded by the camera device.<wbr/></p></span>
3681                   </li>
3682                 </ul>
3683
3684             </td> <!-- entry_type -->
3685
3686             <td class="entry_description">
3687               <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3688 routines.<wbr/></p>
3689             </td>
3690
3691             <td class="entry_units">
3692             </td>
3693
3694             <td class="entry_range">
3695               <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3696             </td>
3697
3698             <td class="entry_tags">
3699               <ul class="entry_tags">
3700                   <li><a href="#tag_BC">BC</a></li>
3701               </ul>
3702             </td>
3703
3704           </tr>
3705           <tr class="entries_header">
3706             <th class="th_details" colspan="5">Details</th>
3707           </tr>
3708           <tr class="entry_cont">
3709             <td class="entry_details" colspan="5">
3710               <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3711 by the camera device is disabled.<wbr/> The application must set the fields for
3712 capture parameters itself.<wbr/></p>
3713 <p>When set to AUTO,<wbr/> the individual algorithm controls in
3714 android.<wbr/>control.<wbr/>* are in effect,<wbr/> such as <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>.<wbr/></p>
3715 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3716 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
3717 one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
3718 as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
3719 <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3720 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3721 is that this frame will not be used by camera device background 3A statistics
3722 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3723 where the application doesn't want a 3A manual control capture to affect
3724 the subsequent auto 3A capture results.<wbr/></p>
3725             </td>
3726           </tr>
3727
3728
3729           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3730            <!-- end of entry -->
3731         
3732                 
3733           <tr class="entry" id="controls_android.control.sceneMode">
3734             <td class="entry_name
3735              " rowspan="5">
3736               android.<wbr/>control.<wbr/>scene<wbr/>Mode
3737             </td>
3738             <td class="entry_type">
3739                 <span class="entry_type_name entry_type_name_enum">byte</span>
3740
3741               <span class="entry_type_visibility"> [public]</span>
3742
3743
3744               <span class="entry_type_hwlevel">[legacy] </span>
3745
3746
3747
3748                 <ul class="entry_type_enum">
3749                   <li>
3750                     <span class="entry_type_enum_name">DISABLED</span>
3751                     <span class="entry_type_enum_value">0</span>
3752                     <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3753                   </li>
3754                   <li>
3755                     <span class="entry_type_enum_name">FACE_PRIORITY</span>
3756                     <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3757 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3758 auto-exposure routines.<wbr/></p>
3759 <p>If face detection statistics are disabled
3760 (i.<wbr/>e.<wbr/> <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> is set to OFF),<wbr/>
3761 this should still operate correctly (but will not return
3762 face detection statistics to the framework).<wbr/></p>
3763 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3764 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
3765 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3766                   </li>
3767                   <li>
3768                     <span class="entry_type_enum_name">ACTION</span>
3769                     <span class="entry_type_enum_optional">[optional]</span>
3770                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3771 <p>Similar to SPORTS.<wbr/></p></span>
3772                   </li>
3773                   <li>
3774                     <span class="entry_type_enum_name">PORTRAIT</span>
3775                     <span class="entry_type_enum_optional">[optional]</span>
3776                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3777                   </li>
3778                   <li>
3779                     <span class="entry_type_enum_name">LANDSCAPE</span>
3780                     <span class="entry_type_enum_optional">[optional]</span>
3781                     <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3782                   </li>
3783                   <li>
3784                     <span class="entry_type_enum_name">NIGHT</span>
3785                     <span class="entry_type_enum_optional">[optional]</span>
3786                     <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3787                   </li>
3788                   <li>
3789                     <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
3790                     <span class="entry_type_enum_optional">[optional]</span>
3791                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3792 settings.<wbr/></p></span>
3793                   </li>
3794                   <li>
3795                     <span class="entry_type_enum_name">THEATRE</span>
3796                     <span class="entry_type_enum_optional">[optional]</span>
3797                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3798 remain off.<wbr/></p></span>
3799                   </li>
3800                   <li>
3801                     <span class="entry_type_enum_name">BEACH</span>
3802                     <span class="entry_type_enum_optional">[optional]</span>
3803                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3804                   </li>
3805                   <li>
3806                     <span class="entry_type_enum_name">SNOW</span>
3807                     <span class="entry_type_enum_optional">[optional]</span>
3808                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3809                   </li>
3810                   <li>
3811                     <span class="entry_type_enum_name">SUNSET</span>
3812                     <span class="entry_type_enum_optional">[optional]</span>
3813                     <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3814                   </li>
3815                   <li>
3816                     <span class="entry_type_enum_name">STEADYPHOTO</span>
3817                     <span class="entry_type_enum_optional">[optional]</span>
3818                     <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
3819 device motion (for example: due to hand shake).<wbr/></p></span>
3820                   </li>
3821                   <li>
3822                     <span class="entry_type_enum_name">FIREWORKS</span>
3823                     <span class="entry_type_enum_optional">[optional]</span>
3824                     <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
3825                   </li>
3826                   <li>
3827                     <span class="entry_type_enum_name">SPORTS</span>
3828                     <span class="entry_type_enum_optional">[optional]</span>
3829                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
3830 <p>Similar to ACTION.<wbr/></p></span>
3831                   </li>
3832                   <li>
3833                     <span class="entry_type_enum_name">PARTY</span>
3834                     <span class="entry_type_enum_optional">[optional]</span>
3835                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
3836 people.<wbr/></p></span>
3837                   </li>
3838                   <li>
3839                     <span class="entry_type_enum_name">CANDLELIGHT</span>
3840                     <span class="entry_type_enum_optional">[optional]</span>
3841                     <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
3842 is a flame.<wbr/></p></span>
3843                   </li>
3844                   <li>
3845                     <span class="entry_type_enum_name">BARCODE</span>
3846                     <span class="entry_type_enum_optional">[optional]</span>
3847                     <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
3848 for use by camera applications that wish to read the
3849 barcode value.<wbr/></p></span>
3850                   </li>
3851                   <li>
3852                     <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
3853                     <span class="entry_type_enum_deprecated">[deprecated]</span>
3854                     <span class="entry_type_enum_optional">[optional]</span>
3855                     <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
3856 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
3857 for high speed video recording.<wbr/></p>
3858 <p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
3859 <p>The supported high speed video sizes and fps ranges are specified in
3860 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
3861 output frame rates,<wbr/> the application is only allowed to select video size
3862 and fps range combinations listed in this static metadata.<wbr/> The fps range
3863 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
3864 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
3865 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
3866 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
3867 and post-processing parameters is possible.<wbr/> All other controls operate the
3868 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
3869 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
3870 <ul>
3871 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
3872 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
3873 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
3874 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
3875 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
3876 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
3877 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
3878 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
3879 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
3880 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
3881 </ul>
3882 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
3883 <ul>
3884 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (automatic flash for still capture will not work since aeMode is ON)</li>
3885 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
3886 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
3887 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
3888 </ul>
3889 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
3890 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
3891 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
3892 the application need check if the video encoder is capable of supporting the
3893 high frame rate for a given video size,<wbr/> or it will end up with lower recording
3894 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
3895 rate will be bounded by the screen refresh rate.<wbr/></p>
3896 <p>The camera device will only support up to 2 output high speed streams
3897 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
3898 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
3899 <ul>
3900 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
3901 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
3902 min(2,<wbr/> <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>[Processed (but not-stalling)]).<wbr/></li>
3903 <li>The stream sizes are selected from the sizes reported by
3904 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
3905 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
3906 </ul>
3907 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
3908 <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> will be ignored by the camera device,<wbr/>
3909 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
3910 and the returned capture result metadata will give the fps range choosen
3911 by the camera device.<wbr/></p>
3912 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
3913 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
3914 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
3915                   </li>
3916                   <li>
3917                     <span class="entry_type_enum_name">HDR</span>
3918                     <span class="entry_type_enum_optional">[optional]</span>
3919                     <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
3920 <p>In this scene mode,<wbr/> the camera device captures images
3921 that keep a larger range of scene illumination levels
3922 visible in the final image.<wbr/> For example,<wbr/> when taking a
3923 picture of a object in front of a bright window,<wbr/> both
3924 the object and the scene through the window may be
3925 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
3926 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
3927 HDR mode generally takes much longer to capture a single
3928 image,<wbr/> has no user control,<wbr/> and may have other artifacts
3929 depending on the HDR method used.<wbr/></p>
3930 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
3931 than regular captures.<wbr/></p>
3932 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
3933 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
3934 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
3935 using a high dynamic range capture technique.<wbr/>  On LEGACY
3936 devices,<wbr/> captures that target a JPEG-format output will
3937 be captured with HDR,<wbr/> and the capture intent is not
3938 relevant.<wbr/></p>
3939 <p>The HDR capture may involve the device capturing a burst
3940 of images internally and combining them into one,<wbr/> or it
3941 may involve the device using specialized high dynamic
3942 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
3943 produced in response to a capture request submitted
3944 while in HDR mode.<wbr/></p>
3945 <p>Since substantial post-processing is generally needed to
3946 produce an HDR image,<wbr/> only YUV and JPEG outputs are
3947 supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only
3948 JPEG outputs are supported for LEGACY HDR
3949 captures.<wbr/> Using a RAW output for HDR capture is not
3950 supported.<wbr/></p></span>
3951                   </li>
3952                   <li>
3953                     <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
3954                     <span class="entry_type_enum_optional">[optional]</span>
3955                     <span class="entry_type_enum_hidden">[hidden]</span>
3956                     <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
3957 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
3958 under low light conditions.<wbr/></p>
3959 <p>The camera device may be tuned to expose the images in a reduced
3960 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
3961 if the <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> gives range of [100,<wbr/> 1600],<wbr/>
3962 the camera device auto-exposure routine tuning process may limit the actual
3963 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
3964 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
3965 low light may be under-exposed when the sensor max exposure time (bounded by the
3966 <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the
3967 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
3968 camera device auto-exposure routine to increase the sensitivity up to the max
3969 sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
3970 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
3971 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
3972 recommended that the application only use this scene mode when it is capable of
3973 reducing the noise level of the captured images.<wbr/></p>
3974 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3975 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
3976 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
3977                   </li>
3978                 </ul>
3979
3980             </td> <!-- entry_type -->
3981
3982             <td class="entry_description">
3983               <p>Control for which scene mode is currently active.<wbr/></p>
3984             </td>
3985
3986             <td class="entry_units">
3987             </td>
3988
3989             <td class="entry_range">
3990               <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
3991             </td>
3992
3993             <td class="entry_tags">
3994               <ul class="entry_tags">
3995                   <li><a href="#tag_BC">BC</a></li>
3996               </ul>
3997             </td>
3998
3999           </tr>
4000           <tr class="entries_header">
4001             <th class="th_details" colspan="5">Details</th>
4002           </tr>
4003           <tr class="entry_cont">
4004             <td class="entry_details" colspan="5">
4005               <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4006 capture settings.<wbr/></p>
4007 <p>This is the mode that that is active when
4008 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will
4009 disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
4010 while in use.<wbr/></p>
4011 <p>The interpretation and implementation of these scene modes is left
4012 to the implementor of the camera device.<wbr/> Their behavior will not be
4013 consistent across all devices,<wbr/> and any given device may only implement
4014 a subset of these modes.<wbr/></p>
4015             </td>
4016           </tr>
4017
4018           <tr class="entries_header">
4019             <th class="th_details" colspan="5">HAL Implementation Details</th>
4020           </tr>
4021           <tr class="entry_cont">
4022             <td class="entry_details" colspan="5">
4023               <p>HAL implementations that include scene modes are expected to provide
4024 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4025 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> in
4026 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4027 <p>For HIGH_<wbr/>SPEED_<wbr/>VIDEO mode,<wbr/> if it is included in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/>
4028 the HAL must list supported video size and fps range in
4029 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> For a given size,<wbr/> e.<wbr/>g.<wbr/>
4030 1280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
4031 mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
4032 requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
4033 This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4034 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO
4035 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4036             </td>
4037           </tr>
4038
4039           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4040            <!-- end of entry -->
4041         
4042                 
4043           <tr class="entry" id="controls_android.control.videoStabilizationMode">
4044             <td class="entry_name
4045              " rowspan="3">
4046               android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4047             </td>
4048             <td class="entry_type">
4049                 <span class="entry_type_name entry_type_name_enum">byte</span>
4050
4051               <span class="entry_type_visibility"> [public]</span>
4052
4053
4054               <span class="entry_type_hwlevel">[legacy] </span>
4055
4056
4057
4058                 <ul class="entry_type_enum">
4059                   <li>
4060                     <span class="entry_type_enum_name">OFF</span>
4061                     <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4062                   </li>
4063                   <li>
4064                     <span class="entry_type_enum_name">ON</span>
4065                     <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4066                   </li>
4067                 </ul>
4068
4069             </td> <!-- entry_type -->
4070
4071             <td class="entry_description">
4072               <p>Whether video stabilization is
4073 active.<wbr/></p>
4074             </td>
4075
4076             <td class="entry_units">
4077             </td>
4078
4079             <td class="entry_range">
4080             </td>
4081
4082             <td class="entry_tags">
4083               <ul class="entry_tags">
4084                   <li><a href="#tag_BC">BC</a></li>
4085               </ul>
4086             </td>
4087
4088           </tr>
4089           <tr class="entries_header">
4090             <th class="th_details" colspan="5">Details</th>
4091           </tr>
4092           <tr class="entry_cont">
4093             <td class="entry_details" colspan="5">
4094               <p>Video stabilization automatically warps images from
4095 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4096 <p>If enabled,<wbr/> video stabilization can modify the
4097 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4098 <p>Switching between different video stabilization modes may take several
4099 frames to initialize,<wbr/> the camera device will report the current mode
4100 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4101 the video stabilization modes in the first several capture results may
4102 still be "OFF",<wbr/> and it will become "ON" when the initialization is
4103 done.<wbr/></p>
4104 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4105 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4106 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4107 the recording resolution is less than or equal to 1920 x 1080 (width less than
4108 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4109 frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
4110 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4111 OFF if the recording output is not stabilized,<wbr/> or if there are no output
4112 Surface types that can be stabilized.<wbr/></p>
4113 <p>If a camera device supports both this mode and OIS
4114 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4115 produce undesirable interaction,<wbr/> so it is recommended not to enable
4116 both at the same time.<wbr/></p>
4117             </td>
4118           </tr>
4119
4120
4121           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4122            <!-- end of entry -->
4123         
4124         
4125
4126       <!-- end of kind -->
4127       </tbody>
4128       <tr><td colspan="6" class="kind">static</td></tr>
4129
4130       <thead class="entries_header">
4131         <tr>
4132           <th class="th_name">Property Name</th>
4133           <th class="th_type">Type</th>
4134           <th class="th_description">Description</th>
4135           <th class="th_units">Units</th>
4136           <th class="th_range">Range</th>
4137           <th class="th_tags">Tags</th>
4138         </tr>
4139       </thead>
4140
4141       <tbody>
4142
4143         
4144
4145         
4146
4147         
4148
4149         
4150
4151                 
4152           <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4153             <td class="entry_name
4154              " rowspan="3">
4155               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4156             </td>
4157             <td class="entry_type">
4158                 <span class="entry_type_name">byte</span>
4159                 <span class="entry_type_container">x</span>
4160
4161                 <span class="entry_type_array">
4162                   n
4163                 </span>
4164               <span class="entry_type_visibility"> [public as enumList]</span>
4165
4166
4167               <span class="entry_type_hwlevel">[legacy] </span>
4168
4169
4170                 <div class="entry_type_notes">list of enums</div>
4171
4172
4173             </td> <!-- entry_type -->
4174
4175             <td class="entry_description">
4176               <p>List of auto-exposure antibanding modes for <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> that are
4177 supported by this camera device.<wbr/></p>
4178             </td>
4179
4180             <td class="entry_units">
4181             </td>
4182
4183             <td class="entry_range">
4184               <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4185             </td>
4186
4187             <td class="entry_tags">
4188               <ul class="entry_tags">
4189                   <li><a href="#tag_BC">BC</a></li>
4190               </ul>
4191             </td>
4192
4193           </tr>
4194           <tr class="entries_header">
4195             <th class="th_details" colspan="5">Details</th>
4196           </tr>
4197           <tr class="entry_cont">
4198             <td class="entry_details" colspan="5">
4199               <p>Not all of the auto-exposure anti-banding modes may be
4200 supported by a given camera device.<wbr/> This field lists the
4201 valid anti-banding modes that the application may request
4202 for this camera device with the
4203 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4204             </td>
4205           </tr>
4206
4207
4208           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4209            <!-- end of entry -->
4210         
4211                 
4212           <tr class="entry" id="static_android.control.aeAvailableModes">
4213             <td class="entry_name
4214              " rowspan="3">
4215               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4216             </td>
4217             <td class="entry_type">
4218                 <span class="entry_type_name">byte</span>
4219                 <span class="entry_type_container">x</span>
4220
4221                 <span class="entry_type_array">
4222                   n
4223                 </span>
4224               <span class="entry_type_visibility"> [public as enumList]</span>
4225
4226
4227               <span class="entry_type_hwlevel">[legacy] </span>
4228
4229
4230                 <div class="entry_type_notes">list of enums</div>
4231
4232
4233             </td> <!-- entry_type -->
4234
4235             <td class="entry_description">
4236               <p>List of auto-exposure modes for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> that are supported by this camera
4237 device.<wbr/></p>
4238             </td>
4239
4240             <td class="entry_units">
4241             </td>
4242
4243             <td class="entry_range">
4244               <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4245             </td>
4246
4247             <td class="entry_tags">
4248               <ul class="entry_tags">
4249                   <li><a href="#tag_BC">BC</a></li>
4250               </ul>
4251             </td>
4252
4253           </tr>
4254           <tr class="entries_header">
4255             <th class="th_details" colspan="5">Details</th>
4256           </tr>
4257           <tr class="entry_cont">
4258             <td class="entry_details" colspan="5">
4259               <p>Not all the auto-exposure modes may be supported by a
4260 given camera device,<wbr/> especially if no flash unit is
4261 available.<wbr/> This entry lists the valid modes for
4262 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4263 <p>All camera devices support ON,<wbr/> and all camera devices with flash
4264 units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4265 <p>FULL mode camera devices always support OFF mode,<wbr/>
4266 which enables application control of camera exposure time,<wbr/>
4267 sensitivity,<wbr/> and frame duration.<wbr/></p>
4268 <p>LEGACY mode camera devices never support OFF mode.<wbr/>
4269 LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4270 capability.<wbr/></p>
4271             </td>
4272           </tr>
4273
4274
4275           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4276            <!-- end of entry -->
4277         
4278                 
4279           <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4280             <td class="entry_name
4281              " rowspan="3">
4282               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4283             </td>
4284             <td class="entry_type">
4285                 <span class="entry_type_name">int32</span>
4286                 <span class="entry_type_container">x</span>
4287
4288                 <span class="entry_type_array">
4289                   2 x n
4290                 </span>
4291               <span class="entry_type_visibility"> [public as rangeInt]</span>
4292
4293
4294               <span class="entry_type_hwlevel">[legacy] </span>
4295
4296
4297                 <div class="entry_type_notes">list of pairs of frame rates</div>
4298
4299
4300             </td> <!-- entry_type -->
4301
4302             <td class="entry_description">
4303               <p>List of frame rate ranges for <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> supported by
4304 this camera device.<wbr/></p>
4305             </td>
4306
4307             <td class="entry_units">
4308               Frames per second (FPS)
4309             </td>
4310
4311             <td class="entry_range">
4312             </td>
4313
4314             <td class="entry_tags">
4315               <ul class="entry_tags">
4316                   <li><a href="#tag_BC">BC</a></li>
4317               </ul>
4318             </td>
4319
4320           </tr>
4321           <tr class="entries_header">
4322             <th class="th_details" colspan="5">Details</th>
4323           </tr>
4324           <tr class="entry_cont">
4325             <td class="entry_details" colspan="5">
4326               <p>For devices at the LEGACY level or above:</p>
4327 <ul>
4328 <li>
4329 <p>For constant-framerate recording,<wbr/> for each normal
4330 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4331 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4332 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4333 the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4334 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4335 supported by the device and has
4336 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4337 always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4338 </li>
4339 <li>
4340 <p>Also,<wbr/> a camera device must either not support any
4341 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4342 or support at least one
4343 normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4344 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> &gt;= 24.<wbr/></p>
4345 </li>
4346 </ul>
4347 <p>For devices at the LIMITED level or above:</p>
4348 <ul>
4349 <li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4350 and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> &lt;= 15 and <code>max</code> = the maximum output frame rate of the
4351 maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4352 </ul>
4353             </td>
4354           </tr>
4355
4356
4357           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4358            <!-- end of entry -->
4359         
4360                 
4361           <tr class="entry" id="static_android.control.aeCompensationRange">
4362             <td class="entry_name
4363              " rowspan="1">
4364               android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4365             </td>
4366             <td class="entry_type">
4367                 <span class="entry_type_name">int32</span>
4368                 <span class="entry_type_container">x</span>
4369
4370                 <span class="entry_type_array">
4371                   2
4372                 </span>
4373               <span class="entry_type_visibility"> [public as rangeInt]</span>
4374
4375
4376               <span class="entry_type_hwlevel">[legacy] </span>
4377
4378
4379
4380
4381             </td> <!-- entry_type -->
4382
4383             <td class="entry_description">
4384               <p>Maximum and minimum exposure compensation values for
4385 <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a>,<wbr/> in counts of <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a>,<wbr/>
4386 that are supported by this camera device.<wbr/></p>
4387             </td>
4388
4389             <td class="entry_units">
4390             </td>
4391
4392             <td class="entry_range">
4393               <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4394 <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4395 compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4396 <p><code>Min.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> &lt;= -2 EV</code></p>
4397 <p><code>Max.<wbr/>exposure compensation * <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> &gt;= 2 EV</code></p>
4398 <p>LEGACY devices may support a smaller range than this.<wbr/></p>
4399             </td>
4400
4401             <td class="entry_tags">
4402               <ul class="entry_tags">
4403                   <li><a href="#tag_BC">BC</a></li>
4404               </ul>
4405             </td>
4406
4407           </tr>
4408
4409
4410           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4411            <!-- end of entry -->
4412         
4413                 
4414           <tr class="entry" id="static_android.control.aeCompensationStep">
4415             <td class="entry_name
4416              " rowspan="5">
4417               android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4418             </td>
4419             <td class="entry_type">
4420                 <span class="entry_type_name">rational</span>
4421
4422               <span class="entry_type_visibility"> [public]</span>
4423
4424
4425               <span class="entry_type_hwlevel">[legacy] </span>
4426
4427
4428
4429
4430             </td> <!-- entry_type -->
4431
4432             <td class="entry_description">
4433               <p>Smallest step by which the exposure compensation
4434 can be changed.<wbr/></p>
4435             </td>
4436
4437             <td class="entry_units">
4438               Exposure Value (EV)
4439             </td>
4440
4441             <td class="entry_range">
4442             </td>
4443
4444             <td class="entry_tags">
4445               <ul class="entry_tags">
4446                   <li><a href="#tag_BC">BC</a></li>
4447               </ul>
4448             </td>
4449
4450           </tr>
4451           <tr class="entries_header">
4452             <th class="th_details" colspan="5">Details</th>
4453           </tr>
4454           <tr class="entry_cont">
4455             <td class="entry_details" colspan="5">
4456               <p>This is the unit for <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a>.<wbr/> For example,<wbr/> if this key has
4457 a value of <code>1/<wbr/>2</code>,<wbr/> then a setting of <code>-2</code> for <a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> means
4458 that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4459 <p>One unit of EV compensation changes the brightness of the captured image by a factor
4460 of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4461             </td>
4462           </tr>
4463
4464           <tr class="entries_header">
4465             <th class="th_details" colspan="5">HAL Implementation Details</th>
4466           </tr>
4467           <tr class="entry_cont">
4468             <td class="entry_details" colspan="5">
4469               <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4470             </td>
4471           </tr>
4472
4473           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4474            <!-- end of entry -->
4475         
4476                 
4477           <tr class="entry" id="static_android.control.afAvailableModes">
4478             <td class="entry_name
4479              " rowspan="3">
4480               android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4481             </td>
4482             <td class="entry_type">
4483                 <span class="entry_type_name">byte</span>
4484                 <span class="entry_type_container">x</span>
4485
4486                 <span class="entry_type_array">
4487                   n
4488                 </span>
4489               <span class="entry_type_visibility"> [public as enumList]</span>
4490
4491
4492               <span class="entry_type_hwlevel">[legacy] </span>
4493
4494
4495                 <div class="entry_type_notes">List of enums</div>
4496
4497
4498             </td> <!-- entry_type -->
4499
4500             <td class="entry_description">
4501               <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4502 supported by this camera device.<wbr/></p>
4503             </td>
4504
4505             <td class="entry_units">
4506             </td>
4507
4508             <td class="entry_range">
4509               <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4510             </td>
4511
4512             <td class="entry_tags">
4513               <ul class="entry_tags">
4514                   <li><a href="#tag_BC">BC</a></li>
4515               </ul>
4516             </td>
4517
4518           </tr>
4519           <tr class="entries_header">
4520             <th class="th_details" colspan="5">Details</th>
4521           </tr>
4522           <tr class="entry_cont">
4523             <td class="entry_details" colspan="5">
4524               <p>Not all the auto-focus modes may be supported by a
4525 given camera device.<wbr/> This entry lists the valid modes for
4526 <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4527 <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4528 camera devices with adjustable focuser units
4529 (<code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> &gt; 0</code>) will support AUTO mode.<wbr/></p>
4530 <p>LEGACY devices will support OFF mode only if they support
4531 focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4532 <code>0.<wbr/>0f</code>).<wbr/></p>
4533             </td>
4534           </tr>
4535
4536
4537           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4538            <!-- end of entry -->
4539         
4540                 
4541           <tr class="entry" id="static_android.control.availableEffects">
4542             <td class="entry_name
4543              " rowspan="3">
4544               android.<wbr/>control.<wbr/>available<wbr/>Effects
4545             </td>
4546             <td class="entry_type">
4547                 <span class="entry_type_name">byte</span>
4548                 <span class="entry_type_container">x</span>
4549
4550                 <span class="entry_type_array">
4551                   n
4552                 </span>
4553               <span class="entry_type_visibility"> [public as enumList]</span>
4554
4555
4556               <span class="entry_type_hwlevel">[legacy] </span>
4557
4558
4559                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4560
4561
4562             </td> <!-- entry_type -->
4563
4564             <td class="entry_description">
4565               <p>List of color effects for <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a> that are supported by this camera
4566 device.<wbr/></p>
4567             </td>
4568
4569             <td class="entry_units">
4570             </td>
4571
4572             <td class="entry_range">
4573               <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4574             </td>
4575
4576             <td class="entry_tags">
4577               <ul class="entry_tags">
4578                   <li><a href="#tag_BC">BC</a></li>
4579               </ul>
4580             </td>
4581
4582           </tr>
4583           <tr class="entries_header">
4584             <th class="th_details" colspan="5">Details</th>
4585           </tr>
4586           <tr class="entry_cont">
4587             <td class="entry_details" colspan="5">
4588               <p>This list contains the color effect modes that can be applied to
4589 images produced by the camera device.<wbr/>
4590 Implementations are not expected to be consistent across all devices.<wbr/>
4591 If no color effect modes are available for a device,<wbr/> this will only list
4592 OFF.<wbr/></p>
4593 <p>A color effect will only be applied if
4594 <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
4595 <p>This control has no effect on the operation of other control routines such
4596 as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
4597             </td>
4598           </tr>
4599
4600
4601           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4602            <!-- end of entry -->
4603         
4604                 
4605           <tr class="entry" id="static_android.control.availableSceneModes">
4606             <td class="entry_name
4607              " rowspan="3">
4608               android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
4609             </td>
4610             <td class="entry_type">
4611                 <span class="entry_type_name">byte</span>
4612                 <span class="entry_type_container">x</span>
4613
4614                 <span class="entry_type_array">
4615                   n
4616                 </span>
4617               <span class="entry_type_visibility"> [public as enumList]</span>
4618
4619
4620               <span class="entry_type_hwlevel">[legacy] </span>
4621
4622
4623                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
4624
4625
4626             </td> <!-- entry_type -->
4627
4628             <td class="entry_description">
4629               <p>List of scene modes for <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> that are supported by this camera
4630 device.<wbr/></p>
4631             </td>
4632
4633             <td class="entry_units">
4634             </td>
4635
4636             <td class="entry_range">
4637               <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
4638             </td>
4639
4640             <td class="entry_tags">
4641               <ul class="entry_tags">
4642                   <li><a href="#tag_BC">BC</a></li>
4643               </ul>
4644             </td>
4645
4646           </tr>
4647           <tr class="entries_header">
4648             <th class="th_details" colspan="5">Details</th>
4649           </tr>
4650           <tr class="entry_cont">
4651             <td class="entry_details" colspan="5">
4652               <p>This list contains scene modes that can be set for the camera device.<wbr/>
4653 Only scene modes that have been fully implemented for the
4654 camera device may be included here.<wbr/> Implementations are not expected
4655 to be consistent across all devices.<wbr/></p>
4656 <p>If no scene modes are supported by the camera device,<wbr/> this
4657 will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
4658 <p>FACE_<wbr/>PRIORITY is always listed if face detection is
4659 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;
4660 0</code>).<wbr/></p>
4661             </td>
4662           </tr>
4663
4664
4665           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4666            <!-- end of entry -->
4667         
4668                 
4669           <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
4670             <td class="entry_name
4671              " rowspan="3">
4672               android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
4673             </td>
4674             <td class="entry_type">
4675                 <span class="entry_type_name">byte</span>
4676                 <span class="entry_type_container">x</span>
4677
4678                 <span class="entry_type_array">
4679                   n
4680                 </span>
4681               <span class="entry_type_visibility"> [public as enumList]</span>
4682
4683
4684               <span class="entry_type_hwlevel">[legacy] </span>
4685
4686
4687                 <div class="entry_type_notes">List of enums.<wbr/></div>
4688
4689
4690             </td> <!-- entry_type -->
4691
4692             <td class="entry_description">
4693               <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
4694 that are supported by this camera device.<wbr/></p>
4695             </td>
4696
4697             <td class="entry_units">
4698             </td>
4699
4700             <td class="entry_range">
4701               <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
4702             </td>
4703
4704             <td class="entry_tags">
4705               <ul class="entry_tags">
4706                   <li><a href="#tag_BC">BC</a></li>
4707               </ul>
4708             </td>
4709
4710           </tr>
4711           <tr class="entries_header">
4712             <th class="th_details" colspan="5">Details</th>
4713           </tr>
4714           <tr class="entry_cont">
4715             <td class="entry_details" colspan="5">
4716               <p>OFF will always be listed.<wbr/></p>
4717             </td>
4718           </tr>
4719
4720
4721           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4722            <!-- end of entry -->
4723         
4724                 
4725           <tr class="entry" id="static_android.control.awbAvailableModes">
4726             <td class="entry_name
4727              " rowspan="3">
4728               android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
4729             </td>
4730             <td class="entry_type">
4731                 <span class="entry_type_name">byte</span>
4732                 <span class="entry_type_container">x</span>
4733
4734                 <span class="entry_type_array">
4735                   n
4736                 </span>
4737               <span class="entry_type_visibility"> [public as enumList]</span>
4738
4739
4740               <span class="entry_type_hwlevel">[legacy] </span>
4741
4742
4743                 <div class="entry_type_notes">List of enums</div>
4744
4745
4746             </td> <!-- entry_type -->
4747
4748             <td class="entry_description">
4749               <p>List of auto-white-balance modes for <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> that are supported by this
4750 camera device.<wbr/></p>
4751             </td>
4752
4753             <td class="entry_units">
4754             </td>
4755
4756             <td class="entry_range">
4757               <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
4758             </td>
4759
4760             <td class="entry_tags">
4761               <ul class="entry_tags">
4762                   <li><a href="#tag_BC">BC</a></li>
4763               </ul>
4764             </td>
4765
4766           </tr>
4767           <tr class="entries_header">
4768             <th class="th_details" colspan="5">Details</th>
4769           </tr>
4770           <tr class="entry_cont">
4771             <td class="entry_details" colspan="5">
4772               <p>Not all the auto-white-balance modes may be supported by a
4773 given camera device.<wbr/> This entry lists the valid modes for
4774 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
4775 <p>All camera devices will support ON mode.<wbr/></p>
4776 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
4777 mode,<wbr/> which enables application control of white balance,<wbr/> by using
4778 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>(<a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> must be set to TRANSFORM_<wbr/>MATRIX).<wbr/> This includes all FULL
4779 mode camera devices.<wbr/></p>
4780             </td>
4781           </tr>
4782
4783
4784           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4785            <!-- end of entry -->
4786         
4787                 
4788           <tr class="entry" id="static_android.control.maxRegions">
4789             <td class="entry_name
4790              " rowspan="1">
4791               android.<wbr/>control.<wbr/>max<wbr/>Regions
4792             </td>
4793             <td class="entry_type">
4794                 <span class="entry_type_name">int32</span>
4795                 <span class="entry_type_container">x</span>
4796
4797                 <span class="entry_type_array">
4798                   3
4799                 </span>
4800               <span class="entry_type_visibility"> [hidden]</span>
4801
4802
4803               <span class="entry_type_hwlevel">[legacy] </span>
4804
4805
4806
4807
4808             </td> <!-- entry_type -->
4809
4810             <td class="entry_description">
4811               <p>List of the maximum number of regions that can be used for metering in
4812 auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
4813 this corresponds to the the maximum number of elements in
4814 <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/>
4815 and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
4816             </td>
4817
4818             <td class="entry_units">
4819             </td>
4820
4821             <td class="entry_range">
4822               <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
4823 this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
4824 <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
4825             </td>
4826
4827             <td class="entry_tags">
4828               <ul class="entry_tags">
4829                   <li><a href="#tag_BC">BC</a></li>
4830               </ul>
4831             </td>
4832
4833           </tr>
4834
4835
4836           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4837            <!-- end of entry -->
4838         
4839                 
4840           <tr class="entry" id="static_android.control.maxRegionsAe">
4841             <td class="entry_name
4842              " rowspan="5">
4843               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
4844             </td>
4845             <td class="entry_type">
4846                 <span class="entry_type_name">int32</span>
4847
4848               <span class="entry_type_visibility"> [public]</span>
4849
4850               <span class="entry_type_synthetic">[synthetic] </span>
4851
4852               <span class="entry_type_hwlevel">[legacy] </span>
4853
4854
4855
4856
4857             </td> <!-- entry_type -->
4858
4859             <td class="entry_description">
4860               <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
4861 routine.<wbr/></p>
4862             </td>
4863
4864             <td class="entry_units">
4865             </td>
4866
4867             <td class="entry_range">
4868               <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
4869 value will be &gt;= 1.<wbr/></p>
4870             </td>
4871
4872             <td class="entry_tags">
4873             </td>
4874
4875           </tr>
4876           <tr class="entries_header">
4877             <th class="th_details" colspan="5">Details</th>
4878           </tr>
4879           <tr class="entry_cont">
4880             <td class="entry_details" colspan="5">
4881               <p>This corresponds to the the maximum allowed number of elements in
4882 <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
4883             </td>
4884           </tr>
4885
4886           <tr class="entries_header">
4887             <th class="th_details" colspan="5">HAL Implementation Details</th>
4888           </tr>
4889           <tr class="entry_cont">
4890             <td class="entry_details" colspan="5">
4891               <p>This entry is private to the framework.<wbr/> Fill in
4892 maxRegions to have this entry be automatically populated.<wbr/></p>
4893             </td>
4894           </tr>
4895
4896           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4897            <!-- end of entry -->
4898         
4899                 
4900           <tr class="entry" id="static_android.control.maxRegionsAwb">
4901             <td class="entry_name
4902              " rowspan="5">
4903               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
4904             </td>
4905             <td class="entry_type">
4906                 <span class="entry_type_name">int32</span>
4907
4908               <span class="entry_type_visibility"> [public]</span>
4909
4910               <span class="entry_type_synthetic">[synthetic] </span>
4911
4912               <span class="entry_type_hwlevel">[legacy] </span>
4913
4914
4915
4916
4917             </td> <!-- entry_type -->
4918
4919             <td class="entry_description">
4920               <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
4921 routine.<wbr/></p>
4922             </td>
4923
4924             <td class="entry_units">
4925             </td>
4926
4927             <td class="entry_range">
4928               <p>Value will be &gt;= 0.<wbr/></p>
4929             </td>
4930
4931             <td class="entry_tags">
4932             </td>
4933
4934           </tr>
4935           <tr class="entries_header">
4936             <th class="th_details" colspan="5">Details</th>
4937           </tr>
4938           <tr class="entry_cont">
4939             <td class="entry_details" colspan="5">
4940               <p>This corresponds to the the maximum allowed number of elements in
4941 <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
4942             </td>
4943           </tr>
4944
4945           <tr class="entries_header">
4946             <th class="th_details" colspan="5">HAL Implementation Details</th>
4947           </tr>
4948           <tr class="entry_cont">
4949             <td class="entry_details" colspan="5">
4950               <p>This entry is private to the framework.<wbr/> Fill in
4951 maxRegions to have this entry be automatically populated.<wbr/></p>
4952             </td>
4953           </tr>
4954
4955           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4956            <!-- end of entry -->
4957         
4958                 
4959           <tr class="entry" id="static_android.control.maxRegionsAf">
4960             <td class="entry_name
4961              " rowspan="5">
4962               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
4963             </td>
4964             <td class="entry_type">
4965                 <span class="entry_type_name">int32</span>
4966
4967               <span class="entry_type_visibility"> [public]</span>
4968
4969               <span class="entry_type_synthetic">[synthetic] </span>
4970
4971               <span class="entry_type_hwlevel">[legacy] </span>
4972
4973
4974
4975
4976             </td> <!-- entry_type -->
4977
4978             <td class="entry_description">
4979               <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
4980             </td>
4981
4982             <td class="entry_units">
4983             </td>
4984
4985             <td class="entry_range">
4986               <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
4987 value will be &gt;= 1.<wbr/></p>
4988             </td>
4989
4990             <td class="entry_tags">
4991             </td>
4992
4993           </tr>
4994           <tr class="entries_header">
4995             <th class="th_details" colspan="5">Details</th>
4996           </tr>
4997           <tr class="entry_cont">
4998             <td class="entry_details" colspan="5">
4999               <p>This corresponds to the the maximum allowed number of elements in
5000 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5001             </td>
5002           </tr>
5003
5004           <tr class="entries_header">
5005             <th class="th_details" colspan="5">HAL Implementation Details</th>
5006           </tr>
5007           <tr class="entry_cont">
5008             <td class="entry_details" colspan="5">
5009               <p>This entry is private to the framework.<wbr/> Fill in
5010 maxRegions to have this entry be automatically populated.<wbr/></p>
5011             </td>
5012           </tr>
5013
5014           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5015            <!-- end of entry -->
5016         
5017                 
5018           <tr class="entry" id="static_android.control.sceneModeOverrides">
5019             <td class="entry_name
5020              " rowspan="5">
5021               android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5022             </td>
5023             <td class="entry_type">
5024                 <span class="entry_type_name">byte</span>
5025                 <span class="entry_type_container">x</span>
5026
5027                 <span class="entry_type_array">
5028                   3 x length(availableSceneModes)
5029                 </span>
5030               <span class="entry_type_visibility"> [system]</span>
5031
5032
5033               <span class="entry_type_hwlevel">[limited] </span>
5034
5035
5036
5037
5038             </td> <!-- entry_type -->
5039
5040             <td class="entry_description">
5041               <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5042 settings to use with each available scene mode.<wbr/></p>
5043             </td>
5044
5045             <td class="entry_units">
5046             </td>
5047
5048             <td class="entry_range">
5049               <p>For each available scene mode,<wbr/> the list must contain three
5050 entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5051 <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
5052 by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5053 where aeMode has the lowest index position.<wbr/></p>
5054             </td>
5055
5056             <td class="entry_tags">
5057               <ul class="entry_tags">
5058                   <li><a href="#tag_BC">BC</a></li>
5059               </ul>
5060             </td>
5061
5062           </tr>
5063           <tr class="entries_header">
5064             <th class="th_details" colspan="5">Details</th>
5065           </tr>
5066           <tr class="entry_cont">
5067             <td class="entry_details" colspan="5">
5068               <p>When a scene mode is enabled,<wbr/> the camera device is expected
5069 to 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/>
5070 and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5071 that scene mode.<wbr/></p>
5072 <p>The order of this list matches that of availableSceneModes,<wbr/>
5073 with 3 entries for each mode.<wbr/>  The overrides listed
5074 for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5075 since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5076 <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
5077 used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5078 is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5079 FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5080 <p>For example,<wbr/> if availableSceneModes contains
5081 <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
5082 expects sceneModeOverrides to have 9 entries formatted like:
5083 <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5084 ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5085             </td>
5086           </tr>
5087
5088           <tr class="entries_header">
5089             <th class="th_details" colspan="5">HAL Implementation Details</th>
5090           </tr>
5091           <tr class="entry_cont">
5092             <td class="entry_details" colspan="5">
5093               <p>To maintain backward compatibility,<wbr/> this list will be made available
5094 in the static metadata of the camera service.<wbr/>  The camera service will
5095 use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5096 <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
5097 mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5098             </td>
5099           </tr>
5100
5101           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5102            <!-- end of entry -->
5103         
5104                 
5105           <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5106             <td class="entry_name
5107              " rowspan="5">
5108               android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5109             </td>
5110             <td class="entry_type">
5111                 <span class="entry_type_name">int32</span>
5112                 <span class="entry_type_container">x</span>
5113
5114                 <span class="entry_type_array">
5115                   5 x n
5116                 </span>
5117               <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5118
5119
5120               <span class="entry_type_hwlevel">[limited] </span>
5121
5122
5123
5124
5125             </td> <!-- entry_type -->
5126
5127             <td class="entry_description">
5128               <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5129 supported by the camera device,<wbr/> in the format of (width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max,<wbr/> batch_<wbr/>size_<wbr/>max).<wbr/></p>
5130             </td>
5131
5132             <td class="entry_units">
5133             </td>
5134
5135             <td class="entry_range">
5136               <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
5137             </td>
5138
5139             <td class="entry_tags">
5140               <ul class="entry_tags">
5141                   <li><a href="#tag_V1">V1</a></li>
5142               </ul>
5143             </td>
5144
5145           </tr>
5146           <tr class="entries_header">
5147             <th class="th_details" colspan="5">Details</th>
5148           </tr>
5149           <tr class="entry_cont">
5150             <td class="entry_details" colspan="5">
5151               <p>When CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO is supported in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>,<wbr/>
5152 this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5153 configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5154 reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5155 for processed non-stalling formats.<wbr/></p>
5156 <p>For the high speed video use case,<wbr/> the application must
5157 select the video size and fps range from this metadata to configure the recording and
5158 preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5159 to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5160 configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5161 by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5162 recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5163 must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5164 must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5165 <p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5166 <p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5167 to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5168 multiple frames together and send to camera device for processing where the request
5169 controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5170 the max possible number of frames the camera device will group together for this high
5171 speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5172 recording request list by
5173 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5174 The max batch size for each configuration will satisfy below conditions:</p>
5175 <ul>
5176 <li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5177 if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5178 <li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5179 the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5180 size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li>
5181 <li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5182 </ul>
5183 <p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5184 in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5185 <p>This fps ranges in this configuration list can only be used to create requests
5186 that are submitted to a high speed camera capture session created by
5187 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5188 The fps ranges reported in this metadata must not be used to setup capture requests for
5189 normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5190             </td>
5191           </tr>
5192
5193           <tr class="entries_header">
5194             <th class="th_details" colspan="5">HAL Implementation Details</th>
5195           </tr>
5196           <tr class="entry_cont">
5197             <td class="entry_details" colspan="5">
5198               <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5199 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5200 Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5201 of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5202 <p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5203 sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5204 usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5205 stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5206 the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5207 the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5208 For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5209 [30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5210 do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5211 recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5212 values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5213 values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5214 switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5215             </td>
5216           </tr>
5217
5218           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5219            <!-- end of entry -->
5220         
5221                 
5222           <tr class="entry" id="static_android.control.aeLockAvailable">
5223             <td class="entry_name
5224              " rowspan="3">
5225               android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5226             </td>
5227             <td class="entry_type">
5228                 <span class="entry_type_name entry_type_name_enum">byte</span>
5229
5230               <span class="entry_type_visibility"> [public as boolean]</span>
5231
5232
5233               <span class="entry_type_hwlevel">[legacy] </span>
5234
5235
5236
5237                 <ul class="entry_type_enum">
5238                   <li>
5239                     <span class="entry_type_enum_name">FALSE</span>
5240                   </li>
5241                   <li>
5242                     <span class="entry_type_enum_name">TRUE</span>
5243                   </li>
5244                 </ul>
5245
5246             </td> <!-- entry_type -->
5247
5248             <td class="entry_description">
5249               <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5250             </td>
5251
5252             <td class="entry_units">
5253             </td>
5254
5255             <td class="entry_range">
5256             </td>
5257
5258             <td class="entry_tags">
5259               <ul class="entry_tags">
5260                   <li><a href="#tag_BC">BC</a></li>
5261               </ul>
5262             </td>
5263
5264           </tr>
5265           <tr class="entries_header">
5266             <th class="th_details" colspan="5">Details</th>
5267           </tr>
5268           <tr class="entry_cont">
5269             <td class="entry_details" colspan="5">
5270               <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5271 list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5272             </td>
5273           </tr>
5274
5275
5276           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5277            <!-- end of entry -->
5278         
5279                 
5280           <tr class="entry" id="static_android.control.awbLockAvailable">
5281             <td class="entry_name
5282              " rowspan="3">
5283               android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5284             </td>
5285             <td class="entry_type">
5286                 <span class="entry_type_name entry_type_name_enum">byte</span>
5287
5288               <span class="entry_type_visibility"> [public as boolean]</span>
5289
5290
5291               <span class="entry_type_hwlevel">[legacy] </span>
5292
5293
5294
5295                 <ul class="entry_type_enum">
5296                   <li>
5297                     <span class="entry_type_enum_name">FALSE</span>
5298                   </li>
5299                   <li>
5300                     <span class="entry_type_enum_name">TRUE</span>
5301                   </li>
5302                 </ul>
5303
5304             </td> <!-- entry_type -->
5305
5306             <td class="entry_description">
5307               <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5308             </td>
5309
5310             <td class="entry_units">
5311             </td>
5312
5313             <td class="entry_range">
5314             </td>
5315
5316             <td class="entry_tags">
5317               <ul class="entry_tags">
5318                   <li><a href="#tag_BC">BC</a></li>
5319               </ul>
5320             </td>
5321
5322           </tr>
5323           <tr class="entries_header">
5324             <th class="th_details" colspan="5">Details</th>
5325           </tr>
5326           <tr class="entry_cont">
5327             <td class="entry_details" colspan="5">
5328               <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5329 always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5330             </td>
5331           </tr>
5332
5333
5334           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5335            <!-- end of entry -->
5336         
5337                 
5338           <tr class="entry" id="static_android.control.availableModes">
5339             <td class="entry_name
5340              " rowspan="3">
5341               android.<wbr/>control.<wbr/>available<wbr/>Modes
5342             </td>
5343             <td class="entry_type">
5344                 <span class="entry_type_name">byte</span>
5345                 <span class="entry_type_container">x</span>
5346
5347                 <span class="entry_type_array">
5348                   n
5349                 </span>
5350               <span class="entry_type_visibility"> [public as enumList]</span>
5351
5352
5353               <span class="entry_type_hwlevel">[legacy] </span>
5354
5355
5356                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5357
5358
5359             </td> <!-- entry_type -->
5360
5361             <td class="entry_description">
5362               <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5363 device.<wbr/></p>
5364             </td>
5365
5366             <td class="entry_units">
5367             </td>
5368
5369             <td class="entry_range">
5370               <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5371             </td>
5372
5373             <td class="entry_tags">
5374             </td>
5375
5376           </tr>
5377           <tr class="entries_header">
5378             <th class="th_details" colspan="5">Details</th>
5379           </tr>
5380           <tr class="entry_cont">
5381             <td class="entry_details" colspan="5">
5382               <p>This list contains control modes that can be set for the camera device.<wbr/>
5383 LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5384 devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5385             </td>
5386           </tr>
5387
5388
5389           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5390            <!-- end of entry -->
5391         
5392         
5393
5394       <!-- end of kind -->
5395       </tbody>
5396       <tr><td colspan="6" class="kind">dynamic</td></tr>
5397
5398       <thead class="entries_header">
5399         <tr>
5400           <th class="th_name">Property Name</th>
5401           <th class="th_type">Type</th>
5402           <th class="th_description">Description</th>
5403           <th class="th_units">Units</th>
5404           <th class="th_range">Range</th>
5405           <th class="th_tags">Tags</th>
5406         </tr>
5407       </thead>
5408
5409       <tbody>
5410
5411         
5412
5413         
5414
5415         
5416
5417         
5418
5419                 
5420           <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5421             <td class="entry_name
5422                 entry_name_deprecated
5423              " rowspan="3">
5424               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5425             </td>
5426             <td class="entry_type">
5427                 <span class="entry_type_name">int32</span>
5428
5429               <span class="entry_type_visibility"> [system]</span>
5430
5431
5432
5433               <span class="entry_type_deprecated">[deprecated] </span>
5434
5435
5436
5437             </td> <!-- entry_type -->
5438
5439             <td class="entry_description">
5440               <p>The ID sent with the latest
5441 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
5442             </td>
5443
5444             <td class="entry_units">
5445             </td>
5446
5447             <td class="entry_range">
5448               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5449             </td>
5450
5451             <td class="entry_tags">
5452             </td>
5453
5454           </tr>
5455           <tr class="entries_header">
5456             <th class="th_details" colspan="5">Details</th>
5457           </tr>
5458           <tr class="entry_cont">
5459             <td class="entry_details" colspan="5">
5460               <p>Must be 0 if no
5461 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5462 by HAL.<wbr/> Always updated even if AE algorithm ignores the
5463 trigger</p>
5464             </td>
5465           </tr>
5466
5467
5468           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5469            <!-- end of entry -->
5470         
5471                 
5472           <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
5473             <td class="entry_name
5474              " rowspan="5">
5475               android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
5476             </td>
5477             <td class="entry_type">
5478                 <span class="entry_type_name entry_type_name_enum">byte</span>
5479
5480               <span class="entry_type_visibility"> [public]</span>
5481
5482
5483               <span class="entry_type_hwlevel">[legacy] </span>
5484
5485
5486
5487                 <ul class="entry_type_enum">
5488                   <li>
5489                     <span class="entry_type_enum_name">OFF</span>
5490                     <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
5491 avoid banding problems.<wbr/></p></span>
5492                   </li>
5493                   <li>
5494                     <span class="entry_type_enum_name">50HZ</span>
5495                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5496 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
5497                   </li>
5498                   <li>
5499                     <span class="entry_type_enum_name">60HZ</span>
5500                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5501 avoid banding problems with 60Hz illumination
5502 sources.<wbr/></p></span>
5503                   </li>
5504                   <li>
5505                     <span class="entry_type_enum_name">AUTO</span>
5506                     <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
5507 antibanding routine to the current illumination
5508 condition.<wbr/> This is the default mode if AUTO is
5509 available on given camera device.<wbr/></p></span>
5510                   </li>
5511                 </ul>
5512
5513             </td> <!-- entry_type -->
5514
5515             <td class="entry_description">
5516               <p>The desired setting for the camera device's auto-exposure
5517 algorithm's antibanding compensation.<wbr/></p>
5518             </td>
5519
5520             <td class="entry_units">
5521             </td>
5522
5523             <td class="entry_range">
5524               <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
5525             </td>
5526
5527             <td class="entry_tags">
5528               <ul class="entry_tags">
5529                   <li><a href="#tag_BC">BC</a></li>
5530               </ul>
5531             </td>
5532
5533           </tr>
5534           <tr class="entries_header">
5535             <th class="th_details" colspan="5">Details</th>
5536           </tr>
5537           <tr class="entry_cont">
5538             <td class="entry_details" colspan="5">
5539               <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
5540 lights,<wbr/> flicker at the rate of the power supply frequency
5541 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
5542 typically not noticeable to a person,<wbr/> it can be visible to
5543 a camera device.<wbr/> If a camera sets its exposure time to the
5544 wrong value,<wbr/> the flicker may become visible in the
5545 viewfinder as flicker or in a final captured image,<wbr/> as a
5546 set of variable-brightness bands across the image.<wbr/></p>
5547 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
5548 include antibanding routines that ensure that the chosen
5549 exposure value will not cause such banding.<wbr/> The choice of
5550 exposure time depends on the rate of flicker,<wbr/> which the
5551 camera device can detect automatically,<wbr/> or the expected
5552 rate can be selected by the application using this
5553 control.<wbr/></p>
5554 <p>A given camera device may not support all of the possible
5555 options for the antibanding mode.<wbr/> The
5556 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
5557 the available modes for a given camera device.<wbr/></p>
5558 <p>AUTO mode is the default if it is available on given
5559 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
5560 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
5561 and 60HZ will be available.<wbr/></p>
5562 <p>If manual exposure control is enabled (by setting
5563 <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/>
5564 then this setting has no effect,<wbr/> and the application must
5565 ensure it selects exposure times that do not cause banding
5566 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
5567 the application in this.<wbr/></p>
5568             </td>
5569           </tr>
5570
5571           <tr class="entries_header">
5572             <th class="th_details" colspan="5">HAL Implementation Details</th>
5573           </tr>
5574           <tr class="entry_cont">
5575             <td class="entry_details" colspan="5">
5576               <p>For all capture request templates,<wbr/> this field must be set
5577 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
5578 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
5579 60HZ must be available.<wbr/></p>
5580 <p>If manual exposure control is enabled (by setting
5581 <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/>
5582 then the exposure values provided by the application must not be
5583 adjusted for antibanding.<wbr/></p>
5584             </td>
5585           </tr>
5586
5587           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5588            <!-- end of entry -->
5589         
5590                 
5591           <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
5592             <td class="entry_name
5593              " rowspan="3">
5594               android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
5595             </td>
5596             <td class="entry_type">
5597                 <span class="entry_type_name">int32</span>
5598
5599               <span class="entry_type_visibility"> [public]</span>
5600
5601
5602               <span class="entry_type_hwlevel">[legacy] </span>
5603
5604
5605
5606
5607             </td> <!-- entry_type -->
5608
5609             <td class="entry_description">
5610               <p>Adjustment to auto-exposure (AE) target image
5611 brightness.<wbr/></p>
5612             </td>
5613
5614             <td class="entry_units">
5615               Compensation steps
5616             </td>
5617
5618             <td class="entry_range">
5619               <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
5620             </td>
5621
5622             <td class="entry_tags">
5623               <ul class="entry_tags">
5624                   <li><a href="#tag_BC">BC</a></li>
5625               </ul>
5626             </td>
5627
5628           </tr>
5629           <tr class="entries_header">
5630             <th class="th_details" colspan="5">Details</th>
5631           </tr>
5632           <tr class="entry_cont">
5633             <td class="entry_details" colspan="5">
5634               <p>The adjustment is measured as a count of steps,<wbr/> with the
5635 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
5636 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
5637 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
5638 will mean an exposure compensation of +2 EV; -3 will mean an
5639 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
5640 of image brightness.<wbr/> Note that this control will only be
5641 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
5642 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
5643 <p>In the event of exposure compensation value being changed,<wbr/> camera device
5644 may take several frames to reach the newly requested exposure target.<wbr/>
5645 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
5646 state.<wbr/> Once the new exposure target is reached,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> will
5647 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
5648 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
5649             </td>
5650           </tr>
5651
5652
5653           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5654            <!-- end of entry -->
5655         
5656                 
5657           <tr class="entry" id="dynamic_android.control.aeLock">
5658             <td class="entry_name
5659              " rowspan="3">
5660               android.<wbr/>control.<wbr/>ae<wbr/>Lock
5661             </td>
5662             <td class="entry_type">
5663                 <span class="entry_type_name entry_type_name_enum">byte</span>
5664
5665               <span class="entry_type_visibility"> [public as boolean]</span>
5666
5667
5668               <span class="entry_type_hwlevel">[legacy] </span>
5669
5670
5671
5672                 <ul class="entry_type_enum">
5673                   <li>
5674                     <span class="entry_type_enum_name">OFF</span>
5675                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
5676 is free to update its parameters.<wbr/></p></span>
5677                   </li>
5678                   <li>
5679                     <span class="entry_type_enum_name">ON</span>
5680                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
5681 must not update the exposure and sensitivity parameters
5682 while the lock is active.<wbr/></p>
5683 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
5684 will still take effect while auto-exposure is locked.<wbr/></p>
5685 <p>Some rare LEGACY devices may not support
5686 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
5687                   </li>
5688                 </ul>
5689
5690             </td> <!-- entry_type -->
5691
5692             <td class="entry_description">
5693               <p>Whether auto-exposure (AE) is currently locked to its latest
5694 calculated values.<wbr/></p>
5695             </td>
5696
5697             <td class="entry_units">
5698             </td>
5699
5700             <td class="entry_range">
5701             </td>
5702
5703             <td class="entry_tags">
5704               <ul class="entry_tags">
5705                   <li><a href="#tag_BC">BC</a></li>
5706               </ul>
5707             </td>
5708
5709           </tr>
5710           <tr class="entries_header">
5711             <th class="th_details" colspan="5">Details</th>
5712           </tr>
5713           <tr class="entry_cont">
5714             <td class="entry_details" colspan="5">
5715               <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
5716 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
5717 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
5718 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
5719 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
5720 <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
5721 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
5722 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
5723 when AE is already locked,<wbr/> the camera device will not change the exposure time
5724 (<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>)
5725 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
5726 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
5727 <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/>
5728 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
5729 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
5730 the AE if AE is locked by the camera device internally during precapture metering
5731 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
5732 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
5733 will never succeed in a sequence of preview requests where AE lock is always set
5734 to <code>false</code>.<wbr/></p>
5735 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
5736 get locked do not necessarily correspond to the settings that were present in the
5737 latest capture result received from the camera device,<wbr/> since additional captures
5738 and AE updates may have occurred even before the result was sent out.<wbr/> If an
5739 application is switching between automatic and manual control and wishes to eliminate
5740 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
5741 <ol>
5742 <li>Starting in auto-AE mode:</li>
5743 <li>Lock AE</li>
5744 <li>Wait for the first result to be output that has the AE locked</li>
5745 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
5746 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
5747 </ol>
5748 <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>
5749             </td>
5750           </tr>
5751
5752
5753           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5754            <!-- end of entry -->
5755         
5756                 
5757           <tr class="entry" id="dynamic_android.control.aeMode">
5758             <td class="entry_name
5759              " rowspan="3">
5760               android.<wbr/>control.<wbr/>ae<wbr/>Mode
5761             </td>
5762             <td class="entry_type">
5763                 <span class="entry_type_name entry_type_name_enum">byte</span>
5764
5765               <span class="entry_type_visibility"> [public]</span>
5766
5767
5768               <span class="entry_type_hwlevel">[legacy] </span>
5769
5770
5771
5772                 <ul class="entry_type_enum">
5773                   <li>
5774                     <span class="entry_type_enum_name">OFF</span>
5775                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
5776 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5777 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
5778 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
5779 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
5780 a flash unit for this camera device.<wbr/></p>
5781 <p>Note that auto-white balance (AWB) and auto-focus (AF)
5782 behavior is device dependent when AE is in OFF mode.<wbr/>
5783 To have consistent behavior across different devices,<wbr/>
5784 it is recommended to either set AWB and AF to OFF mode
5785 or lock AWB and AF before setting AE to OFF.<wbr/>
5786 See <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/>
5787 <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a>,<wbr/> and <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
5788 for more details.<wbr/></p>
5789 <p>LEGACY devices do not support the OFF mode and will
5790 override attempts to use this value to ON.<wbr/></p></span>
5791                   </li>
5792                   <li>
5793                     <span class="entry_type_enum_name">ON</span>
5794                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
5795 with no flash control.<wbr/></p>
5796 <p>The application's values for
5797 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5798 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
5799 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
5800 application has control over the various
5801 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
5802                   </li>
5803                   <li>
5804                     <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
5805                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
5806 the camera's flash unit,<wbr/> firing it in low-light
5807 conditions.<wbr/></p>
5808 <p>The flash may be fired during a precapture sequence
5809 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
5810 may be fired for captures for which the
5811 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
5812 STILL_<wbr/>CAPTURE</p></span>
5813                   </li>
5814                   <li>
5815                     <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
5816                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
5817 the camera's flash unit,<wbr/> always firing it for still
5818 captures.<wbr/></p>
5819 <p>The flash may be fired during a precapture sequence
5820 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
5821 will always be fired for captures for which the
5822 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
5823 STILL_<wbr/>CAPTURE</p></span>
5824                   </li>
5825                   <li>
5826                     <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
5827                     <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
5828 reduction.<wbr/></p>
5829 <p>If deemed necessary by the camera device,<wbr/> a red eye
5830 reduction flash will fire during the precapture
5831 sequence.<wbr/></p></span>
5832                   </li>
5833                 </ul>
5834
5835             </td> <!-- entry_type -->
5836
5837             <td class="entry_description">
5838               <p>The desired mode for the camera device's
5839 auto-exposure routine.<wbr/></p>
5840             </td>
5841
5842             <td class="entry_units">
5843             </td>
5844
5845             <td class="entry_range">
5846               <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
5847             </td>
5848
5849             <td class="entry_tags">
5850               <ul class="entry_tags">
5851                   <li><a href="#tag_BC">BC</a></li>
5852               </ul>
5853             </td>
5854
5855           </tr>
5856           <tr class="entries_header">
5857             <th class="th_details" colspan="5">Details</th>
5858           </tr>
5859           <tr class="entry_cont">
5860             <td class="entry_details" colspan="5">
5861               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
5862 AUTO.<wbr/></p>
5863 <p>When set to any of the ON modes,<wbr/> the camera device's
5864 auto-exposure routine is enabled,<wbr/> overriding the
5865 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
5866 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5867 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
5868 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
5869 is selected,<wbr/> the camera device's flash unit controls are
5870 also overridden.<wbr/></p>
5871 <p>The FLASH modes are only available if the camera device
5872 has a flash unit (<a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> is <code>true</code>).<wbr/></p>
5873 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
5874 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
5875 <p>When set to any of the ON modes,<wbr/> the values chosen by the
5876 camera device auto-exposure routine for the overridden
5877 fields for a given capture will be available in its
5878 CaptureResult.<wbr/></p>
5879             </td>
5880           </tr>
5881
5882
5883           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5884            <!-- end of entry -->
5885         
5886                 
5887           <tr class="entry" id="dynamic_android.control.aeRegions">
5888             <td class="entry_name
5889              " rowspan="5">
5890               android.<wbr/>control.<wbr/>ae<wbr/>Regions
5891             </td>
5892             <td class="entry_type">
5893                 <span class="entry_type_name">int32</span>
5894                 <span class="entry_type_container">x</span>
5895
5896                 <span class="entry_type_array">
5897                   5 x area_count
5898                 </span>
5899               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
5900
5901
5902
5903
5904
5905
5906             </td> <!-- entry_type -->
5907
5908             <td class="entry_description">
5909               <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
5910             </td>
5911
5912             <td class="entry_units">
5913               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
5914             </td>
5915
5916             <td class="entry_range">
5917               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
5918 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
5919             </td>
5920
5921             <td class="entry_tags">
5922               <ul class="entry_tags">
5923                   <li><a href="#tag_BC">BC</a></li>
5924               </ul>
5925             </td>
5926
5927           </tr>
5928           <tr class="entries_header">
5929             <th class="th_details" colspan="5">Details</th>
5930           </tr>
5931           <tr class="entry_cont">
5932             <td class="entry_details" colspan="5">
5933               <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
5934 Otherwise will always be present.<wbr/></p>
5935 <p>The maximum number of regions supported by the device is determined by the value
5936 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
5937 <p>The coordinate system is based on the active pixel array,<wbr/>
5938 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
5939 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
5940 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
5941 bottom-right pixel in the active pixel array.<wbr/></p>
5942 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
5943 for every pixel in the area.<wbr/> This means that a large metering area
5944 with the same weight as a smaller area will have more effect in
5945 the metering result.<wbr/> Metering areas can partially overlap and the
5946 camera device will add the weights in the overlap region.<wbr/></p>
5947 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
5948 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
5949 weight is ignored.<wbr/></p>
5950 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
5951 camera device.<wbr/></p>
5952 <p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
5953 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
5954 region and output only the intersection rectangle as the metering region in the result
5955 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
5956 not reported in the result metadata.<wbr/></p>
5957             </td>
5958           </tr>
5959
5960           <tr class="entries_header">
5961             <th class="th_details" colspan="5">HAL Implementation Details</th>
5962           </tr>
5963           <tr class="entry_cont">
5964             <td class="entry_details" colspan="5">
5965               <p>The HAL level representation of MeteringRectangle[] is a
5966 int[5 * area_<wbr/>count].<wbr/>
5967 Every five elements represent a metering region of
5968 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
5969 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
5970 exclusive on xmax and ymax.<wbr/></p>
5971             </td>
5972           </tr>
5973
5974           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5975            <!-- end of entry -->
5976         
5977                 
5978           <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
5979             <td class="entry_name
5980              " rowspan="3">
5981               android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
5982             </td>
5983             <td class="entry_type">
5984                 <span class="entry_type_name">int32</span>
5985                 <span class="entry_type_container">x</span>
5986
5987                 <span class="entry_type_array">
5988                   2
5989                 </span>
5990               <span class="entry_type_visibility"> [public as rangeInt]</span>
5991
5992
5993               <span class="entry_type_hwlevel">[legacy] </span>
5994
5995
5996
5997
5998             </td> <!-- entry_type -->
5999
6000             <td class="entry_description">
6001               <p>Range over which the auto-exposure routine can
6002 adjust the capture frame rate to maintain good
6003 exposure.<wbr/></p>
6004             </td>
6005
6006             <td class="entry_units">
6007               Frames per second (FPS)
6008             </td>
6009
6010             <td class="entry_range">
6011               <p>Any of the entries in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a></p>
6012             </td>
6013
6014             <td class="entry_tags">
6015               <ul class="entry_tags">
6016                   <li><a href="#tag_BC">BC</a></li>
6017               </ul>
6018             </td>
6019
6020           </tr>
6021           <tr class="entries_header">
6022             <th class="th_details" colspan="5">Details</th>
6023           </tr>
6024           <tr class="entry_cont">
6025             <td class="entry_details" colspan="5">
6026               <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6027 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6028 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6029             </td>
6030           </tr>
6031
6032
6033           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6034            <!-- end of entry -->
6035         
6036                 
6037           <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6038             <td class="entry_name
6039              " rowspan="5">
6040               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6041             </td>
6042             <td class="entry_type">
6043                 <span class="entry_type_name entry_type_name_enum">byte</span>
6044
6045               <span class="entry_type_visibility"> [public]</span>
6046
6047
6048               <span class="entry_type_hwlevel">[limited] </span>
6049
6050
6051
6052                 <ul class="entry_type_enum">
6053                   <li>
6054                     <span class="entry_type_enum_name">IDLE</span>
6055                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6056                   </li>
6057                   <li>
6058                     <span class="entry_type_enum_name">START</span>
6059                     <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6060 by the camera device.<wbr/></p>
6061 <p>The exact effect of the precapture trigger depends on
6062 the current AE mode and state.<wbr/></p></span>
6063                   </li>
6064                   <li>
6065                     <span class="entry_type_enum_name">CANCEL</span>
6066                     <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6067 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6068 initial state.<wbr/></p></span>
6069                   </li>
6070                 </ul>
6071
6072             </td> <!-- entry_type -->
6073
6074             <td class="entry_description">
6075               <p>Whether the camera device will trigger a precapture
6076 metering sequence when it processes this request.<wbr/></p>
6077             </td>
6078
6079             <td class="entry_units">
6080             </td>
6081
6082             <td class="entry_range">
6083             </td>
6084
6085             <td class="entry_tags">
6086               <ul class="entry_tags">
6087                   <li><a href="#tag_BC">BC</a></li>
6088               </ul>
6089             </td>
6090
6091           </tr>
6092           <tr class="entries_header">
6093             <th class="th_details" colspan="5">Details</th>
6094           </tr>
6095           <tr class="entry_cont">
6096             <td class="entry_details" colspan="5">
6097               <p>This entry is normally set to IDLE,<wbr/> or is not
6098 included at all in the request settings.<wbr/> When included and
6099 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6100 precapture metering sequence.<wbr/></p>
6101 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
6102 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6103 If a precapture metering sequence is already completed,<wbr/> and the camera
6104 device has implicitly locked the AE for subsequent still capture,<wbr/> the
6105 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6106 <p>The precapture sequence should be triggered before starting a
6107 high-quality still capture for final metering decisions to
6108 be made,<wbr/> and for firing pre-capture flash pulses to estimate
6109 scene brightness and required final capture flash power,<wbr/> when
6110 the flash is enabled.<wbr/></p>
6111 <p>Normally,<wbr/> this entry should be set to START for only a
6112 single request,<wbr/> and the application should wait until the
6113 sequence completes before starting a new one.<wbr/></p>
6114 <p>When a precapture metering sequence is finished,<wbr/> the camera device
6115 may lock the auto-exposure routine internally to be able to accurately expose the
6116 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6117 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6118 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6119 submit a request with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == true</code>,<wbr/> followed by a request
6120 with <code><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> == false</code>,<wbr/> if the application decides not to submit a
6121 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6122 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6123 internally locked AE if the application doesn't submit a still capture request after
6124 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6125 be used in devices that have earlier API levels.<wbr/></p>
6126 <p>The exact effect of auto-exposure (AE) precapture trigger
6127 depends on the current AE mode and state; see
6128 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6129 details.<wbr/></p>
6130 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6131 capturing a high-resolution JPEG image will automatically trigger a
6132 precapture sequence before the high-resolution capture,<wbr/> including
6133 potentially firing a pre-capture flash.<wbr/></p>
6134 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6135 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6136 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6137 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6138 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6139 changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
6140 example.<wbr/></p>
6141 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6142 the camera device will complete them in the optimal order for that device.<wbr/></p>
6143             </td>
6144           </tr>
6145
6146           <tr class="entries_header">
6147             <th class="th_details" colspan="5">HAL Implementation Details</th>
6148           </tr>
6149           <tr class="entry_cont">
6150             <td class="entry_details" colspan="5">
6151               <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6152 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
6153 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6154 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6155 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6156             </td>
6157           </tr>
6158
6159           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6160            <!-- end of entry -->
6161         
6162                 
6163           <tr class="entry" id="dynamic_android.control.aeState">
6164             <td class="entry_name
6165              " rowspan="3">
6166               android.<wbr/>control.<wbr/>ae<wbr/>State
6167             </td>
6168             <td class="entry_type">
6169                 <span class="entry_type_name entry_type_name_enum">byte</span>
6170
6171               <span class="entry_type_visibility"> [public]</span>
6172
6173
6174               <span class="entry_type_hwlevel">[limited] </span>
6175
6176
6177
6178                 <ul class="entry_type_enum">
6179                   <li>
6180                     <span class="entry_type_enum_name">INACTIVE</span>
6181                     <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6182 <p>When a camera device is opened,<wbr/> it starts in
6183 this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6184 this state in capture result.<wbr/></p></span>
6185                   </li>
6186                   <li>
6187                     <span class="entry_type_enum_name">SEARCHING</span>
6188                     <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6189 for the current scene.<wbr/></p>
6190 <p>This is a transient state,<wbr/> the camera device may skip
6191 reporting this state in capture result.<wbr/></p></span>
6192                   </li>
6193                   <li>
6194                     <span class="entry_type_enum_name">CONVERGED</span>
6195                     <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6196 current scene.<wbr/></p></span>
6197                   </li>
6198                   <li>
6199                     <span class="entry_type_enum_name">LOCKED</span>
6200                     <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6201                   </li>
6202                   <li>
6203                     <span class="entry_type_enum_name">FLASH_REQUIRED</span>
6204                     <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6205 needs to be fired for good quality still
6206 capture.<wbr/></p></span>
6207                   </li>
6208                   <li>
6209                     <span class="entry_type_enum_name">PRECAPTURE</span>
6210                     <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6211 and is currently executing it.<wbr/></p>
6212 <p>Precapture can be triggered through setting
6213 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6214 active and completed (if it causes camera device internal AE lock) precapture
6215 metering sequence can be canceled through setting
6216 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6217 <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6218 or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6219 state,<wbr/> the camera device may skip reporting this state in
6220 capture result.<wbr/></p></span>
6221                   </li>
6222                 </ul>
6223
6224             </td> <!-- entry_type -->
6225
6226             <td class="entry_description">
6227               <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6228             </td>
6229
6230             <td class="entry_units">
6231             </td>
6232
6233             <td class="entry_range">
6234             </td>
6235
6236             <td class="entry_tags">
6237             </td>
6238
6239           </tr>
6240           <tr class="entries_header">
6241             <th class="th_details" colspan="5">Details</th>
6242           </tr>
6243           <tr class="entry_cont">
6244             <td class="entry_details" colspan="5">
6245               <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6246 resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6247 or <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
6248 the algorithm states to INACTIVE.<wbr/></p>
6249 <p>The camera device can do several state transitions between two results,<wbr/> if it is
6250 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6251 seen in a result.<wbr/></p>
6252 <p>The state in the result is the state for this image (in sync with this image): if
6253 AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6254 be good to use.<wbr/></p>
6255 <p>Below are state transition tables for different AE modes.<wbr/></p>
6256 <table>
6257 <thead>
6258 <tr>
6259 <th align="center">State</th>
6260 <th align="center">Transition Cause</th>
6261 <th align="center">New State</th>
6262 <th align="center">Notes</th>
6263 </tr>
6264 </thead>
6265 <tbody>
6266 <tr>
6267 <td align="center">INACTIVE</td>
6268 <td align="center"></td>
6269 <td align="center">INACTIVE</td>
6270 <td align="center">Camera device auto exposure algorithm is disabled</td>
6271 </tr>
6272 </tbody>
6273 </table>
6274 <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p>
6275 <table>
6276 <thead>
6277 <tr>
6278 <th align="center">State</th>
6279 <th align="center">Transition Cause</th>
6280 <th align="center">New State</th>
6281 <th align="center">Notes</th>
6282 </tr>
6283 </thead>
6284 <tbody>
6285 <tr>
6286 <td align="center">INACTIVE</td>
6287 <td align="center">Camera device initiates AE scan</td>
6288 <td align="center">SEARCHING</td>
6289 <td align="center">Values changing</td>
6290 </tr>
6291 <tr>
6292 <td align="center">INACTIVE</td>
6293 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6294 <td align="center">LOCKED</td>
6295 <td align="center">Values locked</td>
6296 </tr>
6297 <tr>
6298 <td align="center">SEARCHING</td>
6299 <td align="center">Camera device finishes AE scan</td>
6300 <td align="center">CONVERGED</td>
6301 <td align="center">Good values,<wbr/> not changing</td>
6302 </tr>
6303 <tr>
6304 <td align="center">SEARCHING</td>
6305 <td align="center">Camera device finishes AE scan</td>
6306 <td align="center">FLASH_<wbr/>REQUIRED</td>
6307 <td align="center">Converged but too dark w/<wbr/>o flash</td>
6308 </tr>
6309 <tr>
6310 <td align="center">SEARCHING</td>
6311 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6312 <td align="center">LOCKED</td>
6313 <td align="center">Values locked</td>
6314 </tr>
6315 <tr>
6316 <td align="center">CONVERGED</td>
6317 <td align="center">Camera device initiates AE scan</td>
6318 <td align="center">SEARCHING</td>
6319 <td align="center">Values changing</td>
6320 </tr>
6321 <tr>
6322 <td align="center">CONVERGED</td>
6323 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6324 <td align="center">LOCKED</td>
6325 <td align="center">Values locked</td>
6326 </tr>
6327 <tr>
6328 <td align="center">FLASH_<wbr/>REQUIRED</td>
6329 <td align="center">Camera device initiates AE scan</td>
6330 <td align="center">SEARCHING</td>
6331 <td align="center">Values changing</td>
6332 </tr>
6333 <tr>
6334 <td align="center">FLASH_<wbr/>REQUIRED</td>
6335 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6336 <td align="center">LOCKED</td>
6337 <td align="center">Values locked</td>
6338 </tr>
6339 <tr>
6340 <td align="center">LOCKED</td>
6341 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6342 <td align="center">SEARCHING</td>
6343 <td align="center">Values not good after unlock</td>
6344 </tr>
6345 <tr>
6346 <td align="center">LOCKED</td>
6347 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6348 <td align="center">CONVERGED</td>
6349 <td align="center">Values good after unlock</td>
6350 </tr>
6351 <tr>
6352 <td align="center">LOCKED</td>
6353 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6354 <td align="center">FLASH_<wbr/>REQUIRED</td>
6355 <td align="center">Exposure good,<wbr/> but too dark</td>
6356 </tr>
6357 <tr>
6358 <td align="center">PRECAPTURE</td>
6359 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6360 <td align="center">CONVERGED</td>
6361 <td align="center">Ready for high-quality capture</td>
6362 </tr>
6363 <tr>
6364 <td align="center">PRECAPTURE</td>
6365 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6366 <td align="center">LOCKED</td>
6367 <td align="center">Ready for high-quality capture</td>
6368 </tr>
6369 <tr>
6370 <td align="center">LOCKED</td>
6371 <td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6372 <td align="center">LOCKED</td>
6373 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6374 </tr>
6375 <tr>
6376 <td align="center">LOCKED</td>
6377 <td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6378 <td align="center">LOCKED</td>
6379 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6380 </tr>
6381 <tr>
6382 <td align="center">Any state (excluding LOCKED)</td>
6383 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6384 <td align="center">PRECAPTURE</td>
6385 <td align="center">Start AE precapture metering sequence</td>
6386 </tr>
6387 <tr>
6388 <td align="center">Any state (excluding LOCKED)</td>
6389 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
6390 <td align="center">INACTIVE</td>
6391 <td align="center">Currently active precapture metering sequence is canceled</td>
6392 </tr>
6393 </tbody>
6394 </table>
6395 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6396 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6397 can be skipped in that manner is called a transient state.<wbr/></p>
6398 <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
6399 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6400 transient states between two results.<wbr/> See below table for examples:</p>
6401 <table>
6402 <thead>
6403 <tr>
6404 <th align="center">State</th>
6405 <th align="center">Transition Cause</th>
6406 <th align="center">New State</th>
6407 <th align="center">Notes</th>
6408 </tr>
6409 </thead>
6410 <tbody>
6411 <tr>
6412 <td align="center">INACTIVE</td>
6413 <td align="center">Camera device finished AE scan</td>
6414 <td align="center">CONVERGED</td>
6415 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6416 </tr>
6417 <tr>
6418 <td align="center">Any state (excluding LOCKED)</td>
6419 <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>
6420 <td align="center">FLASH_<wbr/>REQUIRED</td>
6421 <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>
6422 </tr>
6423 <tr>
6424 <td align="center">Any state (excluding LOCKED)</td>
6425 <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>
6426 <td align="center">CONVERGED</td>
6427 <td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
6428 </tr>
6429 <tr>
6430 <td align="center">Any state (excluding LOCKED)</td>
6431 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6432 <td align="center">FLASH_<wbr/>REQUIRED</td>
6433 <td align="center">Converged but too dark w/<wbr/>o flash after a precapture sequence is canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
6434 </tr>
6435 <tr>
6436 <td align="center">Any state (excluding LOCKED)</td>
6437 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6438 <td align="center">CONVERGED</td>
6439 <td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
6440 </tr>
6441 <tr>
6442 <td align="center">CONVERGED</td>
6443 <td align="center">Camera device finished AE scan</td>
6444 <td align="center">FLASH_<wbr/>REQUIRED</td>
6445 <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>
6446 </tr>
6447 <tr>
6448 <td align="center">FLASH_<wbr/>REQUIRED</td>
6449 <td align="center">Camera device finished AE scan</td>
6450 <td align="center">CONVERGED</td>
6451 <td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
6452 </tr>
6453 </tbody>
6454 </table>
6455             </td>
6456           </tr>
6457
6458
6459           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6460            <!-- end of entry -->
6461         
6462                 
6463           <tr class="entry" id="dynamic_android.control.afMode">
6464             <td class="entry_name
6465              " rowspan="5">
6466               android.<wbr/>control.<wbr/>af<wbr/>Mode
6467             </td>
6468             <td class="entry_type">
6469                 <span class="entry_type_name entry_type_name_enum">byte</span>
6470
6471               <span class="entry_type_visibility"> [public]</span>
6472
6473
6474               <span class="entry_type_hwlevel">[legacy] </span>
6475
6476
6477
6478                 <ul class="entry_type_enum">
6479                   <li>
6480                     <span class="entry_type_enum_name">OFF</span>
6481                     <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
6482 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
6483 application.<wbr/></p></span>
6484                   </li>
6485                   <li>
6486                     <span class="entry_type_enum_name">AUTO</span>
6487                     <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
6488 <p>In this mode,<wbr/> the lens does not move unless
6489 the autofocus trigger action is called.<wbr/> When that trigger
6490 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6491 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
6492 <p>Always supported if lens is not fixed focus.<wbr/></p>
6493 <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
6494 is fixed-focus.<wbr/></p>
6495 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
6496 and sets the AF state to INACTIVE.<wbr/></p></span>
6497                   </li>
6498                   <li>
6499                     <span class="entry_type_enum_name">MACRO</span>
6500                     <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
6501 <p>In this mode,<wbr/> the lens does not move unless the
6502 autofocus trigger action is called.<wbr/> When that trigger is
6503 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6504 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
6505 mode is optimized for focusing on objects very close to
6506 the camera.<wbr/></p>
6507 <p>When that trigger is activated,<wbr/> AF will transition to
6508 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
6509 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
6510 position to default,<wbr/> and sets the AF state to
6511 INACTIVE.<wbr/></p></span>
6512                   </li>
6513                   <li>
6514                     <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
6515                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6516 position continually to attempt to provide a
6517 constantly-in-focus image stream.<wbr/></p>
6518 <p>The focusing behavior should be suitable for good quality
6519 video recording; typically this means slower focus
6520 movement and no overshoots.<wbr/> When the AF trigger is not
6521 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
6522 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
6523 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
6524 the algorithm should immediately transition into
6525 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6526 lens position until a cancel AF trigger is received.<wbr/></p>
6527 <p>Once cancel is received,<wbr/> the algorithm should transition
6528 back to INACTIVE and resume passive scan.<wbr/> Note that this
6529 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
6530 ongoing PASSIVE_<wbr/>SCAN must immediately be
6531 canceled.<wbr/></p></span>
6532                   </li>
6533                   <li>
6534                     <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
6535                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6536 position continually to attempt to provide a
6537 constantly-in-focus image stream.<wbr/></p>
6538 <p>The focusing behavior should be suitable for still image
6539 capture; typically this means focusing as fast as
6540 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
6541 algorithm should start in INACTIVE state,<wbr/> and then
6542 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
6543 appropriate as it attempts to maintain focus.<wbr/> When the AF
6544 trigger is activated,<wbr/> the algorithm should finish its
6545 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
6546 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6547 lens position until a cancel AF trigger is received.<wbr/></p>
6548 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
6549 should transition back to INACTIVE and then act as if it
6550 has just been started.<wbr/></p></span>
6551                   </li>
6552                   <li>
6553                     <span class="entry_type_enum_name">EDOF</span>
6554                     <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
6555 <p>The camera device will produce images with an extended
6556 depth of field automatically; no special focusing
6557 operations need to be done before taking a picture.<wbr/></p>
6558 <p>AF triggers are ignored,<wbr/> and the AF state will always be
6559 INACTIVE.<wbr/></p></span>
6560                   </li>
6561                 </ul>
6562
6563             </td> <!-- entry_type -->
6564
6565             <td class="entry_description">
6566               <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
6567 mode it is set to.<wbr/></p>
6568             </td>
6569
6570             <td class="entry_units">
6571             </td>
6572
6573             <td class="entry_range">
6574               <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
6575             </td>
6576
6577             <td class="entry_tags">
6578               <ul class="entry_tags">
6579                   <li><a href="#tag_BC">BC</a></li>
6580               </ul>
6581             </td>
6582
6583           </tr>
6584           <tr class="entries_header">
6585             <th class="th_details" colspan="5">Details</th>
6586           </tr>
6587           <tr class="entry_cont">
6588             <td class="entry_details" colspan="5">
6589               <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
6590 (i.<wbr/>e.<wbr/> <code><a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> &gt; 0</code>).<wbr/> Also note that
6591 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
6592 dependent.<wbr/> It is recommended to lock AF by using <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a> before
6593 setting <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> to OFF,<wbr/> or set AF mode to OFF when AE is OFF.<wbr/></p>
6594 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
6595 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
6596 in result metadata.<wbr/></p>
6597             </td>
6598           </tr>
6599
6600           <tr class="entries_header">
6601             <th class="th_details" colspan="5">HAL Implementation Details</th>
6602           </tr>
6603           <tr class="entry_cont">
6604             <td class="entry_details" colspan="5">
6605               <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
6606 request (<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
6607 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
6608 <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
6609 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
6610 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
6611 the same focal plane remains in focus.<wbr/></p>
6612 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
6613 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
6614 (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
6615 same lock behavior as above.<wbr/></p>
6616 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
6617 focus 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/>
6618 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
6619 manual control.<wbr/></p>
6620 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
6621 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
6622 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
6623 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
6624 that will arise on camera modules with open-loop VCMs.<wbr/></p>
6625             </td>
6626           </tr>
6627
6628           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6629            <!-- end of entry -->
6630         
6631                 
6632           <tr class="entry" id="dynamic_android.control.afRegions">
6633             <td class="entry_name
6634              " rowspan="5">
6635               android.<wbr/>control.<wbr/>af<wbr/>Regions
6636             </td>
6637             <td class="entry_type">
6638                 <span class="entry_type_name">int32</span>
6639                 <span class="entry_type_container">x</span>
6640
6641                 <span class="entry_type_array">
6642                   5 x area_count
6643                 </span>
6644               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6645
6646
6647
6648
6649
6650
6651             </td> <!-- entry_type -->
6652
6653             <td class="entry_description">
6654               <p>List of metering areas to use for auto-focus.<wbr/></p>
6655             </td>
6656
6657             <td class="entry_units">
6658               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6659             </td>
6660
6661             <td class="entry_range">
6662               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6663 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6664             </td>
6665
6666             <td class="entry_tags">
6667               <ul class="entry_tags">
6668                   <li><a href="#tag_BC">BC</a></li>
6669               </ul>
6670             </td>
6671
6672           </tr>
6673           <tr class="entries_header">
6674             <th class="th_details" colspan="5">Details</th>
6675           </tr>
6676           <tr class="entry_cont">
6677             <td class="entry_details" colspan="5">
6678               <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
6679 Otherwise will always be present.<wbr/></p>
6680 <p>The maximum number of focus areas supported by the device is determined by the value
6681 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
6682 <p>The coordinate system is based on the active pixel array,<wbr/>
6683 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6684 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6685 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6686 bottom-right pixel in the active pixel array.<wbr/></p>
6687 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6688 for every pixel in the area.<wbr/> This means that a large metering area
6689 with the same weight as a smaller area will have more effect in
6690 the metering result.<wbr/> Metering areas can partially overlap and the
6691 camera device will add the weights in the overlap region.<wbr/></p>
6692 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
6693 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
6694 ignored.<wbr/></p>
6695 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6696 camera device.<wbr/></p>
6697 <p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
6698 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6699 region and output only the intersection rectangle as the metering region in the result
6700 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
6701 not reported in the result metadata.<wbr/></p>
6702             </td>
6703           </tr>
6704
6705           <tr class="entries_header">
6706             <th class="th_details" colspan="5">HAL Implementation Details</th>
6707           </tr>
6708           <tr class="entry_cont">
6709             <td class="entry_details" colspan="5">
6710               <p>The HAL level representation of MeteringRectangle[] is a
6711 int[5 * area_<wbr/>count].<wbr/>
6712 Every five elements represent a metering region of
6713 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6714 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6715 exclusive on xmax and ymax.<wbr/></p>
6716             </td>
6717           </tr>
6718
6719           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6720            <!-- end of entry -->
6721         
6722                 
6723           <tr class="entry" id="dynamic_android.control.afTrigger">
6724             <td class="entry_name
6725              " rowspan="5">
6726               android.<wbr/>control.<wbr/>af<wbr/>Trigger
6727             </td>
6728             <td class="entry_type">
6729                 <span class="entry_type_name entry_type_name_enum">byte</span>
6730
6731               <span class="entry_type_visibility"> [public]</span>
6732
6733
6734               <span class="entry_type_hwlevel">[legacy] </span>
6735
6736
6737
6738                 <ul class="entry_type_enum">
6739                   <li>
6740                     <span class="entry_type_enum_name">IDLE</span>
6741                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6742                   </li>
6743                   <li>
6744                     <span class="entry_type_enum_name">START</span>
6745                     <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
6746                   </li>
6747                   <li>
6748                     <span class="entry_type_enum_name">CANCEL</span>
6749                     <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
6750 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
6751                   </li>
6752                 </ul>
6753
6754             </td> <!-- entry_type -->
6755
6756             <td class="entry_description">
6757               <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
6758             </td>
6759
6760             <td class="entry_units">
6761             </td>
6762
6763             <td class="entry_range">
6764             </td>
6765
6766             <td class="entry_tags">
6767               <ul class="entry_tags">
6768                   <li><a href="#tag_BC">BC</a></li>
6769               </ul>
6770             </td>
6771
6772           </tr>
6773           <tr class="entries_header">
6774             <th class="th_details" colspan="5">Details</th>
6775           </tr>
6776           <tr class="entry_cont">
6777             <td class="entry_details" colspan="5">
6778               <p>This entry is normally set to IDLE,<wbr/> or is not
6779 included at all in the request settings.<wbr/></p>
6780 <p>When included and set to START,<wbr/> the camera device will trigger the
6781 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
6782 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
6783 and return to its initial AF state.<wbr/></p>
6784 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
6785 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
6786 START for multiple captures in a row means restarting the AF operation over
6787 and over again.<wbr/></p>
6788 <p>See <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a> for what the trigger means for each AF mode.<wbr/></p>
6789 <p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>
6790 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6791 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6792 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6793 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6794 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
6795             </td>
6796           </tr>
6797
6798           <tr class="entries_header">
6799             <th class="th_details" colspan="5">HAL Implementation Details</th>
6800           </tr>
6801           <tr class="entry_cont">
6802             <td class="entry_details" colspan="5">
6803               <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
6804 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
6805 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6806 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6807 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6808             </td>
6809           </tr>
6810
6811           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6812            <!-- end of entry -->
6813         
6814                 
6815           <tr class="entry" id="dynamic_android.control.afState">
6816             <td class="entry_name
6817              " rowspan="3">
6818               android.<wbr/>control.<wbr/>af<wbr/>State
6819             </td>
6820             <td class="entry_type">
6821                 <span class="entry_type_name entry_type_name_enum">byte</span>
6822
6823               <span class="entry_type_visibility"> [public]</span>
6824
6825
6826               <span class="entry_type_hwlevel">[legacy] </span>
6827
6828
6829
6830                 <ul class="entry_type_enum">
6831                   <li>
6832                     <span class="entry_type_enum_name">INACTIVE</span>
6833                     <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
6834 to scan.<wbr/></p>
6835 <p>When a camera device is opened,<wbr/> it starts in this
6836 state.<wbr/> This is a transient state,<wbr/> the camera device may
6837 skip reporting this state in capture
6838 result.<wbr/></p></span>
6839                   </li>
6840                   <li>
6841                     <span class="entry_type_enum_name">PASSIVE_SCAN</span>
6842                     <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
6843 camera device in a continuous autofocus mode.<wbr/></p>
6844 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
6845 state,<wbr/> the camera device may skip reporting this state in
6846 capture result.<wbr/></p></span>
6847                   </li>
6848                   <li>
6849                     <span class="entry_type_enum_name">PASSIVE_FOCUSED</span>
6850                     <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
6851 restart scanning at any time.<wbr/></p>
6852 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
6853 state,<wbr/> the camera device may skip reporting this state in
6854 capture result.<wbr/></p></span>
6855                   </li>
6856                   <li>
6857                     <span class="entry_type_enum_name">ACTIVE_SCAN</span>
6858                     <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
6859 triggered by AF trigger.<wbr/></p>
6860 <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
6861 state,<wbr/> the camera device may skip reporting this state in
6862 capture result.<wbr/></p></span>
6863                   </li>
6864                   <li>
6865                     <span class="entry_type_enum_name">FOCUSED_LOCKED</span>
6866                     <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
6867 focus.<wbr/></p>
6868 <p>This state is reached only after an explicit START AF trigger has been
6869 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
6870 <p>The lens will remain stationary until the AF mode (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) is changed or
6871 a new AF trigger is sent to the camera device (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>).<wbr/></p></span>
6872                   </li>
6873                   <li>
6874                     <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span>
6875                     <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
6876 focus.<wbr/></p>
6877 <p>This state is reached only after an explicit START AF trigger has been
6878 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
6879 <p>The lens will remain stationary until the AF mode (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) is changed or
6880 a new AF trigger is sent to the camera device (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>).<wbr/></p></span>
6881                   </li>
6882                   <li>
6883                     <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span>
6884                     <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
6885 and may restart scanning at any time.<wbr/></p>
6886 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
6887 device may skip reporting this state in capture result.<wbr/></p>
6888 <p>LEGACY camera devices do not support this state.<wbr/> When a passive
6889 scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
6890                   </li>
6891                 </ul>
6892
6893             </td> <!-- entry_type -->
6894
6895             <td class="entry_description">
6896               <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
6897             </td>
6898
6899             <td class="entry_units">
6900             </td>
6901
6902             <td class="entry_range">
6903             </td>
6904
6905             <td class="entry_tags">
6906             </td>
6907
6908           </tr>
6909           <tr class="entries_header">
6910             <th class="th_details" colspan="5">Details</th>
6911           </tr>
6912           <tr class="entry_cont">
6913             <td class="entry_details" colspan="5">
6914               <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
6915 resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6916 or <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
6917 the algorithm states to INACTIVE.<wbr/></p>
6918 <p>The camera device can do several state transitions between two results,<wbr/> if it is
6919 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6920 seen in a result.<wbr/></p>
6921 <p>The state in the result is the state for this image (in sync with this image): if
6922 AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
6923 be sharp.<wbr/></p>
6924 <p>Below are state transition tables for different AF modes.<wbr/></p>
6925 <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>
6926 <table>
6927 <thead>
6928 <tr>
6929 <th align="center">State</th>
6930 <th align="center">Transition Cause</th>
6931 <th align="center">New State</th>
6932 <th align="center">Notes</th>
6933 </tr>
6934 </thead>
6935 <tbody>
6936 <tr>
6937 <td align="center">INACTIVE</td>
6938 <td align="center"></td>
6939 <td align="center">INACTIVE</td>
6940 <td align="center">Never changes</td>
6941 </tr>
6942 </tbody>
6943 </table>
6944 <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>
6945 <table>
6946 <thead>
6947 <tr>
6948 <th align="center">State</th>
6949 <th align="center">Transition Cause</th>
6950 <th align="center">New State</th>
6951 <th align="center">Notes</th>
6952 </tr>
6953 </thead>
6954 <tbody>
6955 <tr>
6956 <td align="center">INACTIVE</td>
6957 <td align="center">AF_<wbr/>TRIGGER</td>
6958 <td align="center">ACTIVE_<wbr/>SCAN</td>
6959 <td align="center">Start AF sweep,<wbr/> Lens now moving</td>
6960 </tr>
6961 <tr>
6962 <td align="center">ACTIVE_<wbr/>SCAN</td>
6963 <td align="center">AF sweep done</td>
6964 <td align="center">FOCUSED_<wbr/>LOCKED</td>
6965 <td align="center">Focused,<wbr/> Lens now locked</td>
6966 </tr>
6967 <tr>
6968 <td align="center">ACTIVE_<wbr/>SCAN</td>
6969 <td align="center">AF sweep done</td>
6970 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6971 <td align="center">Not focused,<wbr/> Lens now locked</td>
6972 </tr>
6973 <tr>
6974 <td align="center">ACTIVE_<wbr/>SCAN</td>
6975 <td align="center">AF_<wbr/>CANCEL</td>
6976 <td align="center">INACTIVE</td>
6977 <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
6978 </tr>
6979 <tr>
6980 <td align="center">FOCUSED_<wbr/>LOCKED</td>
6981 <td align="center">AF_<wbr/>CANCEL</td>
6982 <td align="center">INACTIVE</td>
6983 <td align="center">Cancel/<wbr/>reset AF</td>
6984 </tr>
6985 <tr>
6986 <td align="center">FOCUSED_<wbr/>LOCKED</td>
6987 <td align="center">AF_<wbr/>TRIGGER</td>
6988 <td align="center">ACTIVE_<wbr/>SCAN</td>
6989 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
6990 </tr>
6991 <tr>
6992 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6993 <td align="center">AF_<wbr/>CANCEL</td>
6994 <td align="center">INACTIVE</td>
6995 <td align="center">Cancel/<wbr/>reset AF</td>
6996 </tr>
6997 <tr>
6998 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6999 <td align="center">AF_<wbr/>TRIGGER</td>
7000 <td align="center">ACTIVE_<wbr/>SCAN</td>
7001 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7002 </tr>
7003 <tr>
7004 <td align="center">Any state</td>
7005 <td align="center">Mode change</td>
7006 <td align="center">INACTIVE</td>
7007 <td align="center"></td>
7008 </tr>
7009 </tbody>
7010 </table>
7011 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7012 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7013 can be skipped in that manner is called a transient state.<wbr/></p>
7014 <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7015 state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7016 one or more transient states between two results.<wbr/> See below table for examples:</p>
7017 <table>
7018 <thead>
7019 <tr>
7020 <th align="center">State</th>
7021 <th align="center">Transition Cause</th>
7022 <th align="center">New State</th>
7023 <th align="center">Notes</th>
7024 </tr>
7025 </thead>
7026 <tbody>
7027 <tr>
7028 <td align="center">INACTIVE</td>
7029 <td align="center">AF_<wbr/>TRIGGER</td>
7030 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7031 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7032 </tr>
7033 <tr>
7034 <td align="center">INACTIVE</td>
7035 <td align="center">AF_<wbr/>TRIGGER</td>
7036 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7037 <td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7038 </tr>
7039 <tr>
7040 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7041 <td align="center">AF_<wbr/>TRIGGER</td>
7042 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7043 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7044 </tr>
7045 <tr>
7046 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7047 <td align="center">AF_<wbr/>TRIGGER</td>
7048 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7049 <td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7050 </tr>
7051 </tbody>
7052 </table>
7053 <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>
7054 <table>
7055 <thead>
7056 <tr>
7057 <th align="center">State</th>
7058 <th align="center">Transition Cause</th>
7059 <th align="center">New State</th>
7060 <th align="center">Notes</th>
7061 </tr>
7062 </thead>
7063 <tbody>
7064 <tr>
7065 <td align="center">INACTIVE</td>
7066 <td align="center">Camera device initiates new scan</td>
7067 <td align="center">PASSIVE_<wbr/>SCAN</td>
7068 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7069 </tr>
7070 <tr>
7071 <td align="center">INACTIVE</td>
7072 <td align="center">AF_<wbr/>TRIGGER</td>
7073 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7074 <td align="center">AF state query,<wbr/> Lens now locked</td>
7075 </tr>
7076 <tr>
7077 <td align="center">PASSIVE_<wbr/>SCAN</td>
7078 <td align="center">Camera device completes current scan</td>
7079 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7080 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7081 </tr>
7082 <tr>
7083 <td align="center">PASSIVE_<wbr/>SCAN</td>
7084 <td align="center">Camera device fails current scan</td>
7085 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7086 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7087 </tr>
7088 <tr>
7089 <td align="center">PASSIVE_<wbr/>SCAN</td>
7090 <td align="center">AF_<wbr/>TRIGGER</td>
7091 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7092 <td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7093 </tr>
7094 <tr>
7095 <td align="center">PASSIVE_<wbr/>SCAN</td>
7096 <td align="center">AF_<wbr/>TRIGGER</td>
7097 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7098 <td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7099 </tr>
7100 <tr>
7101 <td align="center">PASSIVE_<wbr/>SCAN</td>
7102 <td align="center">AF_<wbr/>CANCEL</td>
7103 <td align="center">INACTIVE</td>
7104 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7105 </tr>
7106 <tr>
7107 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7108 <td align="center">Camera device initiates new scan</td>
7109 <td align="center">PASSIVE_<wbr/>SCAN</td>
7110 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7111 </tr>
7112 <tr>
7113 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7114 <td align="center">Camera device initiates new scan</td>
7115 <td align="center">PASSIVE_<wbr/>SCAN</td>
7116 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7117 </tr>
7118 <tr>
7119 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7120 <td align="center">AF_<wbr/>TRIGGER</td>
7121 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7122 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7123 </tr>
7124 <tr>
7125 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7126 <td align="center">AF_<wbr/>TRIGGER</td>
7127 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7128 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7129 </tr>
7130 <tr>
7131 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7132 <td align="center">AF_<wbr/>TRIGGER</td>
7133 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7134 <td align="center">No effect</td>
7135 </tr>
7136 <tr>
7137 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7138 <td align="center">AF_<wbr/>CANCEL</td>
7139 <td align="center">INACTIVE</td>
7140 <td align="center">Restart AF scan</td>
7141 </tr>
7142 <tr>
7143 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7144 <td align="center">AF_<wbr/>TRIGGER</td>
7145 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7146 <td align="center">No effect</td>
7147 </tr>
7148 <tr>
7149 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7150 <td align="center">AF_<wbr/>CANCEL</td>
7151 <td align="center">INACTIVE</td>
7152 <td align="center">Restart AF scan</td>
7153 </tr>
7154 </tbody>
7155 </table>
7156 <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>
7157 <table>
7158 <thead>
7159 <tr>
7160 <th align="center">State</th>
7161 <th align="center">Transition Cause</th>
7162 <th align="center">New State</th>
7163 <th align="center">Notes</th>
7164 </tr>
7165 </thead>
7166 <tbody>
7167 <tr>
7168 <td align="center">INACTIVE</td>
7169 <td align="center">Camera device initiates new scan</td>
7170 <td align="center">PASSIVE_<wbr/>SCAN</td>
7171 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7172 </tr>
7173 <tr>
7174 <td align="center">INACTIVE</td>
7175 <td align="center">AF_<wbr/>TRIGGER</td>
7176 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7177 <td align="center">AF state query,<wbr/> Lens now locked</td>
7178 </tr>
7179 <tr>
7180 <td align="center">PASSIVE_<wbr/>SCAN</td>
7181 <td align="center">Camera device completes current scan</td>
7182 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7183 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7184 </tr>
7185 <tr>
7186 <td align="center">PASSIVE_<wbr/>SCAN</td>
7187 <td align="center">Camera device fails current scan</td>
7188 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7189 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7190 </tr>
7191 <tr>
7192 <td align="center">PASSIVE_<wbr/>SCAN</td>
7193 <td align="center">AF_<wbr/>TRIGGER</td>
7194 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7195 <td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7196 </tr>
7197 <tr>
7198 <td align="center">PASSIVE_<wbr/>SCAN</td>
7199 <td align="center">AF_<wbr/>TRIGGER</td>
7200 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7201 <td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7202 </tr>
7203 <tr>
7204 <td align="center">PASSIVE_<wbr/>SCAN</td>
7205 <td align="center">AF_<wbr/>CANCEL</td>
7206 <td align="center">INACTIVE</td>
7207 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7208 </tr>
7209 <tr>
7210 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7211 <td align="center">Camera device initiates new scan</td>
7212 <td align="center">PASSIVE_<wbr/>SCAN</td>
7213 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7214 </tr>
7215 <tr>
7216 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7217 <td align="center">Camera device initiates new scan</td>
7218 <td align="center">PASSIVE_<wbr/>SCAN</td>
7219 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7220 </tr>
7221 <tr>
7222 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7223 <td align="center">AF_<wbr/>TRIGGER</td>
7224 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7225 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7226 </tr>
7227 <tr>
7228 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7229 <td align="center">AF_<wbr/>TRIGGER</td>
7230 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7231 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7232 </tr>
7233 <tr>
7234 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7235 <td align="center">AF_<wbr/>TRIGGER</td>
7236 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7237 <td align="center">No effect</td>
7238 </tr>
7239 <tr>
7240 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7241 <td align="center">AF_<wbr/>CANCEL</td>
7242 <td align="center">INACTIVE</td>
7243 <td align="center">Restart AF scan</td>
7244 </tr>
7245 <tr>
7246 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7247 <td align="center">AF_<wbr/>TRIGGER</td>
7248 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7249 <td align="center">No effect</td>
7250 </tr>
7251 <tr>
7252 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7253 <td align="center">AF_<wbr/>CANCEL</td>
7254 <td align="center">INACTIVE</td>
7255 <td align="center">Restart AF scan</td>
7256 </tr>
7257 </tbody>
7258 </table>
7259 <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7260 (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7261 camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7262 will be evaluated in the context of the new mode in the request.<wbr/>
7263 See below table for examples:</p>
7264 <table>
7265 <thead>
7266 <tr>
7267 <th align="center">State</th>
7268 <th align="center">Transition Cause</th>
7269 <th align="center">New State</th>
7270 <th align="center">Notes</th>
7271 </tr>
7272 </thead>
7273 <tbody>
7274 <tr>
7275 <td align="center">any state</td>
7276 <td align="center">CAF--&gt;AUTO mode switch</td>
7277 <td align="center">INACTIVE</td>
7278 <td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7279 </tr>
7280 <tr>
7281 <td align="center">any state</td>
7282 <td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
7283 <td align="center">trigger-reachable states from INACTIVE</td>
7284 <td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7285 </tr>
7286 <tr>
7287 <td align="center">any state</td>
7288 <td align="center">AUTO--&gt;CAF mode switch</td>
7289 <td align="center">passively reachable states from INACTIVE</td>
7290 <td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7291 </tr>
7292 </tbody>
7293 </table>
7294             </td>
7295           </tr>
7296
7297
7298           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7299            <!-- end of entry -->
7300         
7301                 
7302           <tr class="entry" id="dynamic_android.control.afTriggerId">
7303             <td class="entry_name
7304                 entry_name_deprecated
7305              " rowspan="3">
7306               android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7307             </td>
7308             <td class="entry_type">
7309                 <span class="entry_type_name">int32</span>
7310
7311               <span class="entry_type_visibility"> [system]</span>
7312
7313
7314
7315               <span class="entry_type_deprecated">[deprecated] </span>
7316
7317
7318
7319             </td> <!-- entry_type -->
7320
7321             <td class="entry_description">
7322               <p>The ID sent with the latest
7323 CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7324             </td>
7325
7326             <td class="entry_units">
7327             </td>
7328
7329             <td class="entry_range">
7330               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7331             </td>
7332
7333             <td class="entry_tags">
7334             </td>
7335
7336           </tr>
7337           <tr class="entries_header">
7338             <th class="th_details" colspan="5">Details</th>
7339           </tr>
7340           <tr class="entry_cont">
7341             <td class="entry_details" colspan="5">
7342               <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7343 received yet by HAL.<wbr/> Always updated even if AF algorithm
7344 ignores the trigger</p>
7345             </td>
7346           </tr>
7347
7348
7349           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7350            <!-- end of entry -->
7351         
7352                 
7353           <tr class="entry" id="dynamic_android.control.awbLock">
7354             <td class="entry_name
7355              " rowspan="3">
7356               android.<wbr/>control.<wbr/>awb<wbr/>Lock
7357             </td>
7358             <td class="entry_type">
7359                 <span class="entry_type_name entry_type_name_enum">byte</span>
7360
7361               <span class="entry_type_visibility"> [public as boolean]</span>
7362
7363
7364               <span class="entry_type_hwlevel">[legacy] </span>
7365
7366
7367
7368                 <ul class="entry_type_enum">
7369                   <li>
7370                     <span class="entry_type_enum_name">OFF</span>
7371                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
7372 algorithm is free to update its parameters if in AUTO
7373 mode.<wbr/></p></span>
7374                   </li>
7375                   <li>
7376                     <span class="entry_type_enum_name">ON</span>
7377                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
7378 algorithm will not update its parameters while the lock
7379 is active.<wbr/></p></span>
7380                   </li>
7381                 </ul>
7382
7383             </td> <!-- entry_type -->
7384
7385             <td class="entry_description">
7386               <p>Whether auto-white balance (AWB) is currently locked to its
7387 latest calculated values.<wbr/></p>
7388             </td>
7389
7390             <td class="entry_units">
7391             </td>
7392
7393             <td class="entry_range">
7394             </td>
7395
7396             <td class="entry_tags">
7397               <ul class="entry_tags">
7398                   <li><a href="#tag_BC">BC</a></li>
7399               </ul>
7400             </td>
7401
7402           </tr>
7403           <tr class="entries_header">
7404             <th class="th_details" colspan="5">Details</th>
7405           </tr>
7406           <tr class="entry_cont">
7407             <td class="entry_details" colspan="5">
7408               <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
7409 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
7410 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
7411 get locked do not necessarily correspond to the settings that were present in the
7412 latest capture result received from the camera device,<wbr/> since additional captures
7413 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
7414 application is switching between automatic and manual control and wishes to eliminate
7415 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
7416 <ol>
7417 <li>Starting in auto-AWB mode:</li>
7418 <li>Lock AWB</li>
7419 <li>Wait for the first result to be output that has the AWB locked</li>
7420 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
7421 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
7422 </ol>
7423 <p>Note that AWB lock is only meaningful when
7424 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
7425 AWB is already fixed to a specific setting.<wbr/></p>
7426 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
7427             </td>
7428           </tr>
7429
7430
7431           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7432            <!-- end of entry -->
7433         
7434                 
7435           <tr class="entry" id="dynamic_android.control.awbMode">
7436             <td class="entry_name
7437              " rowspan="3">
7438               android.<wbr/>control.<wbr/>awb<wbr/>Mode
7439             </td>
7440             <td class="entry_type">
7441                 <span class="entry_type_name entry_type_name_enum">byte</span>
7442
7443               <span class="entry_type_visibility"> [public]</span>
7444
7445
7446               <span class="entry_type_hwlevel">[legacy] </span>
7447
7448
7449
7450                 <ul class="entry_type_enum">
7451                   <li>
7452                     <span class="entry_type_enum_name">OFF</span>
7453                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
7454 <p>The application-selected color transform matrix
7455 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
7456 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
7457 device for manual white balance control.<wbr/></p></span>
7458                   </li>
7459                   <li>
7460                     <span class="entry_type_enum_name">AUTO</span>
7461                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
7462 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7463 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7464 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7465 values used by the camera device for the transform and gains
7466 will be available in the capture result for this request.<wbr/></p></span>
7467                   </li>
7468                   <li>
7469                     <span class="entry_type_enum_name">INCANDESCENT</span>
7470                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7471 the camera device uses incandescent light as the assumed scene
7472 illumination for white balance.<wbr/></p>
7473 <p>While the exact white balance transforms are up to the
7474 camera device,<wbr/> they will approximately match the CIE
7475 standard illuminant A.<wbr/></p>
7476 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7477 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7478 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7479 values used by the camera device for the transform and gains
7480 will be available in the capture result for this request.<wbr/></p></span>
7481                   </li>
7482                   <li>
7483                     <span class="entry_type_enum_name">FLUORESCENT</span>
7484                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7485 the camera device uses fluorescent light as the assumed scene
7486 illumination for white balance.<wbr/></p>
7487 <p>While the exact white balance transforms are up to the
7488 camera device,<wbr/> they will approximately match the CIE
7489 standard illuminant F2.<wbr/></p>
7490 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7491 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7492 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7493 values used by the camera device for the transform and gains
7494 will be available in the capture result for this request.<wbr/></p></span>
7495                   </li>
7496                   <li>
7497                     <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
7498                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7499 the camera device uses warm fluorescent light as the assumed scene
7500 illumination for white balance.<wbr/></p>
7501 <p>While the exact white balance transforms are up to the
7502 camera device,<wbr/> they will approximately match the CIE
7503 standard illuminant F4.<wbr/></p>
7504 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7505 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7506 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7507 values used by the camera device for the transform and gains
7508 will be available in the capture result for this request.<wbr/></p></span>
7509                   </li>
7510                   <li>
7511                     <span class="entry_type_enum_name">DAYLIGHT</span>
7512                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7513 the camera device uses daylight light as the assumed scene
7514 illumination for white balance.<wbr/></p>
7515 <p>While the exact white balance transforms are up to the
7516 camera device,<wbr/> they will approximately match the CIE
7517 standard illuminant D65.<wbr/></p>
7518 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7519 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7520 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7521 values used by the camera device for the transform and gains
7522 will be available in the capture result for this request.<wbr/></p></span>
7523                   </li>
7524                   <li>
7525                     <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
7526                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7527 the camera device uses cloudy daylight light as the assumed scene
7528 illumination for white balance.<wbr/></p>
7529 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7530 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7531 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7532 values used by the camera device for the transform and gains
7533 will be available in the capture result for this request.<wbr/></p></span>
7534                   </li>
7535                   <li>
7536                     <span class="entry_type_enum_name">TWILIGHT</span>
7537                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7538 the camera device uses twilight light as the assumed scene
7539 illumination for white balance.<wbr/></p>
7540 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7541 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7542 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7543 values used by the camera device for the transform and gains
7544 will be available in the capture result for this request.<wbr/></p></span>
7545                   </li>
7546                   <li>
7547                     <span class="entry_type_enum_name">SHADE</span>
7548                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7549 the camera device uses shade light as the assumed scene
7550 illumination for white balance.<wbr/></p>
7551 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7552 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7553 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7554 values used by the camera device for the transform and gains
7555 will be available in the capture result for this request.<wbr/></p></span>
7556                   </li>
7557                 </ul>
7558
7559             </td> <!-- entry_type -->
7560
7561             <td class="entry_description">
7562               <p>Whether auto-white balance (AWB) is currently setting the color
7563 transform fields,<wbr/> and what its illumination target
7564 is.<wbr/></p>
7565             </td>
7566
7567             <td class="entry_units">
7568             </td>
7569
7570             <td class="entry_range">
7571               <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
7572             </td>
7573
7574             <td class="entry_tags">
7575               <ul class="entry_tags">
7576                   <li><a href="#tag_BC">BC</a></li>
7577               </ul>
7578             </td>
7579
7580           </tr>
7581           <tr class="entries_header">
7582             <th class="th_details" colspan="5">Details</th>
7583           </tr>
7584           <tr class="entry_cont">
7585             <td class="entry_details" colspan="5">
7586               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
7587 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
7588 routine is enabled,<wbr/> overriding the application's selected
7589 <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
7590 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/> Note that when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
7591 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
7592 also set AWB mode to OFF or lock AWB by using <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> before
7593 setting AE mode to OFF.<wbr/></p>
7594 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
7595 routine is disabled.<wbr/> The application manually controls the white
7596 balance 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>
7597 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
7598 <p>When set to any other modes,<wbr/> the camera device's auto-white
7599 balance routine is disabled.<wbr/> The camera device uses each
7600 particular illumination target for white balance
7601 adjustment.<wbr/> The application's values for
7602 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
7603 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
7604 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
7605             </td>
7606           </tr>
7607
7608
7609           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7610            <!-- end of entry -->
7611         
7612                 
7613           <tr class="entry" id="dynamic_android.control.awbRegions">
7614             <td class="entry_name
7615              " rowspan="5">
7616               android.<wbr/>control.<wbr/>awb<wbr/>Regions
7617             </td>
7618             <td class="entry_type">
7619                 <span class="entry_type_name">int32</span>
7620                 <span class="entry_type_container">x</span>
7621
7622                 <span class="entry_type_array">
7623                   5 x area_count
7624                 </span>
7625               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7626
7627
7628
7629
7630
7631
7632             </td> <!-- entry_type -->
7633
7634             <td class="entry_description">
7635               <p>List of metering areas to use for auto-white-balance illuminant
7636 estimation.<wbr/></p>
7637             </td>
7638
7639             <td class="entry_units">
7640               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7641             </td>
7642
7643             <td class="entry_range">
7644               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7645 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7646             </td>
7647
7648             <td class="entry_tags">
7649               <ul class="entry_tags">
7650                   <li><a href="#tag_BC">BC</a></li>
7651               </ul>
7652             </td>
7653
7654           </tr>
7655           <tr class="entries_header">
7656             <th class="th_details" colspan="5">Details</th>
7657           </tr>
7658           <tr class="entry_cont">
7659             <td class="entry_details" colspan="5">
7660               <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
7661 Otherwise will always be present.<wbr/></p>
7662 <p>The maximum number of regions supported by the device is determined by the value
7663 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
7664 <p>The coordinate system is based on the active pixel array,<wbr/>
7665 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7666 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7667 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7668 bottom-right pixel in the active pixel array.<wbr/></p>
7669 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
7670 for every pixel in the area.<wbr/> This means that a large metering area
7671 with the same weight as a smaller area will have more effect in
7672 the metering result.<wbr/> Metering areas can partially overlap and the
7673 camera device will add the weights in the overlap region.<wbr/></p>
7674 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
7675 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
7676 0 weight is ignored.<wbr/></p>
7677 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7678 camera device.<wbr/></p>
7679 <p>If the metering region is outside the used <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> returned in
7680 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7681 region and output only the intersection rectangle as the metering region in the result
7682 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
7683 not reported in the result metadata.<wbr/></p>
7684             </td>
7685           </tr>
7686
7687           <tr class="entries_header">
7688             <th class="th_details" colspan="5">HAL Implementation Details</th>
7689           </tr>
7690           <tr class="entry_cont">
7691             <td class="entry_details" colspan="5">
7692               <p>The HAL level representation of MeteringRectangle[] is a
7693 int[5 * area_<wbr/>count].<wbr/>
7694 Every five elements represent a metering region of
7695 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7696 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7697 exclusive on xmax and ymax.<wbr/></p>
7698             </td>
7699           </tr>
7700
7701           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7702            <!-- end of entry -->
7703         
7704                 
7705           <tr class="entry" id="dynamic_android.control.captureIntent">
7706             <td class="entry_name
7707              " rowspan="3">
7708               android.<wbr/>control.<wbr/>capture<wbr/>Intent
7709             </td>
7710             <td class="entry_type">
7711                 <span class="entry_type_name entry_type_name_enum">byte</span>
7712
7713               <span class="entry_type_visibility"> [public]</span>
7714
7715
7716               <span class="entry_type_hwlevel">[legacy] </span>
7717
7718
7719
7720                 <ul class="entry_type_enum">
7721                   <li>
7722                     <span class="entry_type_enum_name">CUSTOM</span>
7723                     <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
7724 categories.<wbr/> The camera device will default to preview-like
7725 behavior.<wbr/></p></span>
7726                   </li>
7727                   <li>
7728                     <span class="entry_type_enum_name">PREVIEW</span>
7729                     <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
7730 <p>The precapture trigger may be used to start off a metering
7731 w/<wbr/>flash sequence.<wbr/></p></span>
7732                   </li>
7733                   <li>
7734                     <span class="entry_type_enum_name">STILL_CAPTURE</span>
7735                     <span class="entry_type_enum_notes"><p>This request is for a still capture-type
7736 use case.<wbr/></p>
7737 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
7738                   </li>
7739                   <li>
7740                     <span class="entry_type_enum_name">VIDEO_RECORD</span>
7741                     <span class="entry_type_enum_notes"><p>This request is for a video recording
7742 use case.<wbr/></p></span>
7743                   </li>
7744                   <li>
7745                     <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
7746                     <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
7747 image while recording video) use case.<wbr/></p>
7748 <p>The camera device should take the highest-quality image
7749 possible (given the other settings) without disrupting the
7750 frame rate of video recording.<wbr/>  </p></span>
7751                   </li>
7752                   <li>
7753                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
7754                     <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
7755 application will stream full-resolution images and
7756 reprocess one or several later for a final
7757 capture.<wbr/></p></span>
7758                   </li>
7759                   <li>
7760                     <span class="entry_type_enum_name">MANUAL</span>
7761                     <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
7762 the applications want to directly control the capture parameters.<wbr/></p>
7763 <p>For example,<wbr/> the application may wish to manually control
7764 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> etc.<wbr/></p></span>
7765                   </li>
7766                 </ul>
7767
7768             </td> <!-- entry_type -->
7769
7770             <td class="entry_description">
7771               <p>Information to the camera device 3A (auto-exposure,<wbr/>
7772 auto-focus,<wbr/> auto-white balance) routines about the purpose
7773 of this capture,<wbr/> to help the camera device to decide optimal 3A
7774 strategy.<wbr/></p>
7775             </td>
7776
7777             <td class="entry_units">
7778             </td>
7779
7780             <td class="entry_range">
7781             </td>
7782
7783             <td class="entry_tags">
7784               <ul class="entry_tags">
7785                   <li><a href="#tag_BC">BC</a></li>
7786               </ul>
7787             </td>
7788
7789           </tr>
7790           <tr class="entries_header">
7791             <th class="th_details" colspan="5">Details</th>
7792           </tr>
7793           <tr class="entry_cont">
7794             <td class="entry_details" colspan="5">
7795               <p>This control (except for MANUAL) is only effective if
7796 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
7797 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
7798 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
7799 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
7800 always supported.<wbr/></p>
7801             </td>
7802           </tr>
7803
7804
7805           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7806            <!-- end of entry -->
7807         
7808                 
7809           <tr class="entry" id="dynamic_android.control.awbState">
7810             <td class="entry_name
7811              " rowspan="3">
7812               android.<wbr/>control.<wbr/>awb<wbr/>State
7813             </td>
7814             <td class="entry_type">
7815                 <span class="entry_type_name entry_type_name_enum">byte</span>
7816
7817               <span class="entry_type_visibility"> [public]</span>
7818
7819
7820               <span class="entry_type_hwlevel">[limited] </span>
7821
7822
7823
7824                 <ul class="entry_type_enum">
7825                   <li>
7826                     <span class="entry_type_enum_name">INACTIVE</span>
7827                     <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
7828 <p>When a camera device is opened,<wbr/> it starts in this
7829 state.<wbr/> This is a transient state,<wbr/> the camera device may
7830 skip reporting this state in capture
7831 result.<wbr/></p></span>
7832                   </li>
7833                   <li>
7834                     <span class="entry_type_enum_name">SEARCHING</span>
7835                     <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
7836 values for the current scene.<wbr/></p>
7837 <p>This is a transient state,<wbr/> the camera device
7838 may skip reporting this state in capture result.<wbr/></p></span>
7839                   </li>
7840                   <li>
7841                     <span class="entry_type_enum_name">CONVERGED</span>
7842                     <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
7843 current scene.<wbr/></p></span>
7844                   </li>
7845                   <li>
7846                     <span class="entry_type_enum_name">LOCKED</span>
7847                     <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
7848                   </li>
7849                 </ul>
7850
7851             </td> <!-- entry_type -->
7852
7853             <td class="entry_description">
7854               <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
7855             </td>
7856
7857             <td class="entry_units">
7858             </td>
7859
7860             <td class="entry_range">
7861             </td>
7862
7863             <td class="entry_tags">
7864             </td>
7865
7866           </tr>
7867           <tr class="entries_header">
7868             <th class="th_details" colspan="5">Details</th>
7869           </tr>
7870           <tr class="entry_cont">
7871             <td class="entry_details" colspan="5">
7872               <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
7873 resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7874 or <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
7875 the algorithm states to INACTIVE.<wbr/></p>
7876 <p>The camera device can do several state transitions between two results,<wbr/> if it is
7877 allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
7878 a result.<wbr/></p>
7879 <p>The state in the result is the state for this image (in sync with this image): if
7880 AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
7881 be good to use.<wbr/></p>
7882 <p>Below are state transition tables for different AWB modes.<wbr/></p>
7883 <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
7884 <table>
7885 <thead>
7886 <tr>
7887 <th align="center">State</th>
7888 <th align="center">Transition Cause</th>
7889 <th align="center">New State</th>
7890 <th align="center">Notes</th>
7891 </tr>
7892 </thead>
7893 <tbody>
7894 <tr>
7895 <td align="center">INACTIVE</td>
7896 <td align="center"></td>
7897 <td align="center">INACTIVE</td>
7898 <td align="center">Camera device auto white balance algorithm is disabled</td>
7899 </tr>
7900 </tbody>
7901 </table>
7902 <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
7903 <table>
7904 <thead>
7905 <tr>
7906 <th align="center">State</th>
7907 <th align="center">Transition Cause</th>
7908 <th align="center">New State</th>
7909 <th align="center">Notes</th>
7910 </tr>
7911 </thead>
7912 <tbody>
7913 <tr>
7914 <td align="center">INACTIVE</td>
7915 <td align="center">Camera device initiates AWB scan</td>
7916 <td align="center">SEARCHING</td>
7917 <td align="center">Values changing</td>
7918 </tr>
7919 <tr>
7920 <td align="center">INACTIVE</td>
7921 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7922 <td align="center">LOCKED</td>
7923 <td align="center">Values locked</td>
7924 </tr>
7925 <tr>
7926 <td align="center">SEARCHING</td>
7927 <td align="center">Camera device finishes AWB scan</td>
7928 <td align="center">CONVERGED</td>
7929 <td align="center">Good values,<wbr/> not changing</td>
7930 </tr>
7931 <tr>
7932 <td align="center">SEARCHING</td>
7933 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7934 <td align="center">LOCKED</td>
7935 <td align="center">Values locked</td>
7936 </tr>
7937 <tr>
7938 <td align="center">CONVERGED</td>
7939 <td align="center">Camera device initiates AWB scan</td>
7940 <td align="center">SEARCHING</td>
7941 <td align="center">Values changing</td>
7942 </tr>
7943 <tr>
7944 <td align="center">CONVERGED</td>
7945 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7946 <td align="center">LOCKED</td>
7947 <td align="center">Values locked</td>
7948 </tr>
7949 <tr>
7950 <td align="center">LOCKED</td>
7951 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
7952 <td align="center">SEARCHING</td>
7953 <td align="center">Values not good after unlock</td>
7954 </tr>
7955 </tbody>
7956 </table>
7957 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7958 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7959 can be skipped in that manner is called a transient state.<wbr/></p>
7960 <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
7961 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
7962 transient states between two results.<wbr/> See below table for examples:</p>
7963 <table>
7964 <thead>
7965 <tr>
7966 <th align="center">State</th>
7967 <th align="center">Transition Cause</th>
7968 <th align="center">New State</th>
7969 <th align="center">Notes</th>
7970 </tr>
7971 </thead>
7972 <tbody>
7973 <tr>
7974 <td align="center">INACTIVE</td>
7975 <td align="center">Camera device finished AWB scan</td>
7976 <td align="center">CONVERGED</td>
7977 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
7978 </tr>
7979 <tr>
7980 <td align="center">LOCKED</td>
7981 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
7982 <td align="center">CONVERGED</td>
7983 <td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
7984 </tr>
7985 </tbody>
7986 </table>
7987             </td>
7988           </tr>
7989
7990
7991           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7992            <!-- end of entry -->
7993         
7994                 
7995           <tr class="entry" id="dynamic_android.control.effectMode">
7996             <td class="entry_name
7997              " rowspan="3">
7998               android.<wbr/>control.<wbr/>effect<wbr/>Mode
7999             </td>
8000             <td class="entry_type">
8001                 <span class="entry_type_name entry_type_name_enum">byte</span>
8002
8003               <span class="entry_type_visibility"> [public]</span>
8004
8005
8006               <span class="entry_type_hwlevel">[legacy] </span>
8007
8008
8009
8010                 <ul class="entry_type_enum">
8011                   <li>
8012                     <span class="entry_type_enum_name">OFF</span>
8013                     <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8014                   </li>
8015                   <li>
8016                     <span class="entry_type_enum_name">MONO</span>
8017                     <span class="entry_type_enum_optional">[optional]</span>
8018                     <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8019 a single color.<wbr/></p>
8020 <p>This will typically be grayscale.<wbr/></p></span>
8021                   </li>
8022                   <li>
8023                     <span class="entry_type_enum_name">NEGATIVE</span>
8024                     <span class="entry_type_enum_optional">[optional]</span>
8025                     <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8026 are inverted.<wbr/></p></span>
8027                   </li>
8028                   <li>
8029                     <span class="entry_type_enum_name">SOLARIZE</span>
8030                     <span class="entry_type_enum_optional">[optional]</span>
8031                     <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8032 image is wholly or partially reversed in
8033 tone.<wbr/></p></span>
8034                   </li>
8035                   <li>
8036                     <span class="entry_type_enum_name">SEPIA</span>
8037                     <span class="entry_type_enum_optional">[optional]</span>
8038                     <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8039 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8040                   </li>
8041                   <li>
8042                     <span class="entry_type_enum_name">POSTERIZE</span>
8043                     <span class="entry_type_enum_optional">[optional]</span>
8044                     <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8045 discrete regions of tone rather than a continuous
8046 gradient of tones.<wbr/></p></span>
8047                   </li>
8048                   <li>
8049                     <span class="entry_type_enum_name">WHITEBOARD</span>
8050                     <span class="entry_type_enum_optional">[optional]</span>
8051                     <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8052 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8053                   </li>
8054                   <li>
8055                     <span class="entry_type_enum_name">BLACKBOARD</span>
8056                     <span class="entry_type_enum_optional">[optional]</span>
8057                     <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8058 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8059                   </li>
8060                   <li>
8061                     <span class="entry_type_enum_name">AQUA</span>
8062                     <span class="entry_type_enum_optional">[optional]</span>
8063                     <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8064                   </li>
8065                 </ul>
8066
8067             </td> <!-- entry_type -->
8068
8069             <td class="entry_description">
8070               <p>A special color effect to apply.<wbr/></p>
8071             </td>
8072
8073             <td class="entry_units">
8074             </td>
8075
8076             <td class="entry_range">
8077               <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8078             </td>
8079
8080             <td class="entry_tags">
8081               <ul class="entry_tags">
8082                   <li><a href="#tag_BC">BC</a></li>
8083               </ul>
8084             </td>
8085
8086           </tr>
8087           <tr class="entries_header">
8088             <th class="th_details" colspan="5">Details</th>
8089           </tr>
8090           <tr class="entry_cont">
8091             <td class="entry_details" colspan="5">
8092               <p>When this mode is set,<wbr/> a color effect will be applied
8093 to images produced by the camera device.<wbr/> The interpretation
8094 and implementation of these color effects is left to the
8095 implementor of the camera device,<wbr/> and should not be
8096 depended on to be consistent (or present) across all
8097 devices.<wbr/></p>
8098             </td>
8099           </tr>
8100
8101
8102           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8103            <!-- end of entry -->
8104         
8105                 
8106           <tr class="entry" id="dynamic_android.control.mode">
8107             <td class="entry_name
8108              " rowspan="3">
8109               android.<wbr/>control.<wbr/>mode
8110             </td>
8111             <td class="entry_type">
8112                 <span class="entry_type_name entry_type_name_enum">byte</span>
8113
8114               <span class="entry_type_visibility"> [public]</span>
8115
8116
8117               <span class="entry_type_hwlevel">[legacy] </span>
8118
8119
8120
8121                 <ul class="entry_type_enum">
8122                   <li>
8123                     <span class="entry_type_enum_name">OFF</span>
8124                     <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8125 <p>All control by the device's metering and focusing (3A)
8126 routines is disabled,<wbr/> and no other settings in
8127 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8128 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8129 device to select post-processing values for processing
8130 blocks that do not allow for manual control,<wbr/> or are not
8131 exposed by the camera API.<wbr/></p>
8132 <p>However,<wbr/> the camera device's 3A routines may continue to
8133 collect statistics and update their internal state so that
8134 when control is switched to AUTO mode,<wbr/> good control values
8135 can be immediately applied.<wbr/></p></span>
8136                   </li>
8137                   <li>
8138                     <span class="entry_type_enum_name">AUTO</span>
8139                     <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8140 <p>Manual control of capture parameters is disabled.<wbr/> All
8141 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8142 effect.<wbr/></p></span>
8143                   </li>
8144                   <li>
8145                     <span class="entry_type_enum_name">USE_SCENE_MODE</span>
8146                     <span class="entry_type_enum_optional">[optional]</span>
8147                     <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8148 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8149 control.<wbr/>afMode controls; the camera device will ignore
8150 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8151 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8152 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8153 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8154 contain some modes other than DISABLED).<wbr/></p></span>
8155                   </li>
8156                   <li>
8157                     <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
8158                     <span class="entry_type_enum_optional">[optional]</span>
8159                     <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8160 used by camera device background auto-exposure,<wbr/> auto-white balance and
8161 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8162 <p>Specifically,<wbr/> the 3A routines are locked to the last
8163 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8164 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8165 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8166 discarded by the camera device.<wbr/></p></span>
8167                   </li>
8168                 </ul>
8169
8170             </td> <!-- entry_type -->
8171
8172             <td class="entry_description">
8173               <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8174 routines.<wbr/></p>
8175             </td>
8176
8177             <td class="entry_units">
8178             </td>
8179
8180             <td class="entry_range">
8181               <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8182             </td>
8183
8184             <td class="entry_tags">
8185               <ul class="entry_tags">
8186                   <li><a href="#tag_BC">BC</a></li>
8187               </ul>
8188             </td>
8189
8190           </tr>
8191           <tr class="entries_header">
8192             <th class="th_details" colspan="5">Details</th>
8193           </tr>
8194           <tr class="entry_cont">
8195             <td class="entry_details" colspan="5">
8196               <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8197 by the camera device is disabled.<wbr/> The application must set the fields for
8198 capture parameters itself.<wbr/></p>
8199 <p>When set to AUTO,<wbr/> the individual algorithm controls in
8200 android.<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>
8201 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8202 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
8203 one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
8204 as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
8205 <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8206 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8207 is that this frame will not be used by camera device background 3A statistics
8208 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8209 where the application doesn't want a 3A manual control capture to affect
8210 the subsequent auto 3A capture results.<wbr/></p>
8211             </td>
8212           </tr>
8213
8214
8215           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8216            <!-- end of entry -->
8217         
8218                 
8219           <tr class="entry" id="dynamic_android.control.sceneMode">
8220             <td class="entry_name
8221              " rowspan="5">
8222               android.<wbr/>control.<wbr/>scene<wbr/>Mode
8223             </td>
8224             <td class="entry_type">
8225                 <span class="entry_type_name entry_type_name_enum">byte</span>
8226
8227               <span class="entry_type_visibility"> [public]</span>
8228
8229
8230               <span class="entry_type_hwlevel">[legacy] </span>
8231
8232
8233
8234                 <ul class="entry_type_enum">
8235                   <li>
8236                     <span class="entry_type_enum_name">DISABLED</span>
8237                     <span class="entry_type_enum_value">0</span>
8238                     <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8239                   </li>
8240                   <li>
8241                     <span class="entry_type_enum_name">FACE_PRIORITY</span>
8242                     <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8243 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8244 auto-exposure routines.<wbr/></p>
8245 <p>If face detection statistics are disabled
8246 (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/>
8247 this should still operate correctly (but will not return
8248 face detection statistics to the framework).<wbr/></p>
8249 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8250 <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>
8251 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8252                   </li>
8253                   <li>
8254                     <span class="entry_type_enum_name">ACTION</span>
8255                     <span class="entry_type_enum_optional">[optional]</span>
8256                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8257 <p>Similar to SPORTS.<wbr/></p></span>
8258                   </li>
8259                   <li>
8260                     <span class="entry_type_enum_name">PORTRAIT</span>
8261                     <span class="entry_type_enum_optional">[optional]</span>
8262                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8263                   </li>
8264                   <li>
8265                     <span class="entry_type_enum_name">LANDSCAPE</span>
8266                     <span class="entry_type_enum_optional">[optional]</span>
8267                     <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8268                   </li>
8269                   <li>
8270                     <span class="entry_type_enum_name">NIGHT</span>
8271                     <span class="entry_type_enum_optional">[optional]</span>
8272                     <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8273                   </li>
8274                   <li>
8275                     <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
8276                     <span class="entry_type_enum_optional">[optional]</span>
8277                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8278 settings.<wbr/></p></span>
8279                   </li>
8280                   <li>
8281                     <span class="entry_type_enum_name">THEATRE</span>
8282                     <span class="entry_type_enum_optional">[optional]</span>
8283                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8284 remain off.<wbr/></p></span>
8285                   </li>
8286                   <li>
8287                     <span class="entry_type_enum_name">BEACH</span>
8288                     <span class="entry_type_enum_optional">[optional]</span>
8289                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8290                   </li>
8291                   <li>
8292                     <span class="entry_type_enum_name">SNOW</span>
8293                     <span class="entry_type_enum_optional">[optional]</span>
8294                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8295                   </li>
8296                   <li>
8297                     <span class="entry_type_enum_name">SUNSET</span>
8298                     <span class="entry_type_enum_optional">[optional]</span>
8299                     <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8300                   </li>
8301                   <li>
8302                     <span class="entry_type_enum_name">STEADYPHOTO</span>
8303                     <span class="entry_type_enum_optional">[optional]</span>
8304                     <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8305 device motion (for example: due to hand shake).<wbr/></p></span>
8306                   </li>
8307                   <li>
8308                     <span class="entry_type_enum_name">FIREWORKS</span>
8309                     <span class="entry_type_enum_optional">[optional]</span>
8310                     <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8311                   </li>
8312                   <li>
8313                     <span class="entry_type_enum_name">SPORTS</span>
8314                     <span class="entry_type_enum_optional">[optional]</span>
8315                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8316 <p>Similar to ACTION.<wbr/></p></span>
8317                   </li>
8318                   <li>
8319                     <span class="entry_type_enum_name">PARTY</span>
8320                     <span class="entry_type_enum_optional">[optional]</span>
8321                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8322 people.<wbr/></p></span>
8323                   </li>
8324                   <li>
8325                     <span class="entry_type_enum_name">CANDLELIGHT</span>
8326                     <span class="entry_type_enum_optional">[optional]</span>
8327                     <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
8328 is a flame.<wbr/></p></span>
8329                   </li>
8330                   <li>
8331                     <span class="entry_type_enum_name">BARCODE</span>
8332                     <span class="entry_type_enum_optional">[optional]</span>
8333                     <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
8334 for use by camera applications that wish to read the
8335 barcode value.<wbr/></p></span>
8336                   </li>
8337                   <li>
8338                     <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
8339                     <span class="entry_type_enum_deprecated">[deprecated]</span>
8340                     <span class="entry_type_enum_optional">[optional]</span>
8341                     <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
8342 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
8343 for high speed video recording.<wbr/></p>
8344 <p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
8345 <p>The supported high speed video sizes and fps ranges are specified in
8346 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
8347 output frame rates,<wbr/> the application is only allowed to select video size
8348 and fps range combinations listed in this static metadata.<wbr/> The fps range
8349 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
8350 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
8351 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
8352 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
8353 and post-processing parameters is possible.<wbr/> All other controls operate the
8354 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
8355 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
8356 <ul>
8357 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
8358 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
8359 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
8360 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
8361 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
8362 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
8363 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
8364 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
8365 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
8366 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
8367 </ul>
8368 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
8369 <ul>
8370 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (automatic flash for still capture will not work since aeMode is ON)</li>
8371 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
8372 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
8373 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
8374 </ul>
8375 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
8376 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
8377 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
8378 the application need check if the video encoder is capable of supporting the
8379 high frame rate for a given video size,<wbr/> or it will end up with lower recording
8380 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
8381 rate will be bounded by the screen refresh rate.<wbr/></p>
8382 <p>The camera device will only support up to 2 output high speed streams
8383 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
8384 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
8385 <ul>
8386 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
8387 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
8388 min(2,<wbr/> <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>[Processed (but not-stalling)]).<wbr/></li>
8389 <li>The stream sizes are selected from the sizes reported by
8390 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
8391 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
8392 </ul>
8393 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
8394 <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> will be ignored by the camera device,<wbr/>
8395 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
8396 and the returned capture result metadata will give the fps range choosen
8397 by the camera device.<wbr/></p>
8398 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
8399 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
8400 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
8401                   </li>
8402                   <li>
8403                     <span class="entry_type_enum_name">HDR</span>
8404                     <span class="entry_type_enum_optional">[optional]</span>
8405                     <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
8406 <p>In this scene mode,<wbr/> the camera device captures images
8407 that keep a larger range of scene illumination levels
8408 visible in the final image.<wbr/> For example,<wbr/> when taking a
8409 picture of a object in front of a bright window,<wbr/> both
8410 the object and the scene through the window may be
8411 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
8412 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
8413 HDR mode generally takes much longer to capture a single
8414 image,<wbr/> has no user control,<wbr/> and may have other artifacts
8415 depending on the HDR method used.<wbr/></p>
8416 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
8417 than regular captures.<wbr/></p>
8418 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
8419 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
8420 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
8421 using a high dynamic range capture technique.<wbr/>  On LEGACY
8422 devices,<wbr/> captures that target a JPEG-format output will
8423 be captured with HDR,<wbr/> and the capture intent is not
8424 relevant.<wbr/></p>
8425 <p>The HDR capture may involve the device capturing a burst
8426 of images internally and combining them into one,<wbr/> or it
8427 may involve the device using specialized high dynamic
8428 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
8429 produced in response to a capture request submitted
8430 while in HDR mode.<wbr/></p>
8431 <p>Since substantial post-processing is generally needed to
8432 produce an HDR image,<wbr/> only YUV and JPEG outputs are
8433 supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only
8434 JPEG outputs are supported for LEGACY HDR
8435 captures.<wbr/> Using a RAW output for HDR capture is not
8436 supported.<wbr/></p></span>
8437                   </li>
8438                   <li>
8439                     <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT</span>
8440                     <span class="entry_type_enum_optional">[optional]</span>
8441                     <span class="entry_type_enum_hidden">[hidden]</span>
8442                     <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
8443 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
8444 under low light conditions.<wbr/></p>
8445 <p>The camera device may be tuned to expose the images in a reduced
8446 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
8447 if the <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> gives range of [100,<wbr/> 1600],<wbr/>
8448 the camera device auto-exposure routine tuning process may limit the actual
8449 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
8450 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
8451 low light may be under-exposed when the sensor max exposure time (bounded by the
8452 <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the
8453 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
8454 camera device auto-exposure routine to increase the sensitivity up to the max
8455 sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
8456 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
8457 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
8458 recommended that the application only use this scene mode when it is capable of
8459 reducing the noise level of the captured images.<wbr/></p>
8460 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8461 <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>
8462 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
8463                   </li>
8464                 </ul>
8465
8466             </td> <!-- entry_type -->
8467
8468             <td class="entry_description">
8469               <p>Control for which scene mode is currently active.<wbr/></p>
8470             </td>
8471
8472             <td class="entry_units">
8473             </td>
8474
8475             <td class="entry_range">
8476               <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
8477             </td>
8478
8479             <td class="entry_tags">
8480               <ul class="entry_tags">
8481                   <li><a href="#tag_BC">BC</a></li>
8482               </ul>
8483             </td>
8484
8485           </tr>
8486           <tr class="entries_header">
8487             <th class="th_details" colspan="5">Details</th>
8488           </tr>
8489           <tr class="entry_cont">
8490             <td class="entry_details" colspan="5">
8491               <p>Scene modes are custom camera modes optimized for a certain set of conditions and
8492 capture settings.<wbr/></p>
8493 <p>This is the mode that that is active when
8494 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will
8495 disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
8496 while in use.<wbr/></p>
8497 <p>The interpretation and implementation of these scene modes is left
8498 to the implementor of the camera device.<wbr/> Their behavior will not be
8499 consistent across all devices,<wbr/> and any given device may only implement
8500 a subset of these modes.<wbr/></p>
8501             </td>
8502           </tr>
8503
8504           <tr class="entries_header">
8505             <th class="th_details" colspan="5">HAL Implementation Details</th>
8506           </tr>
8507           <tr class="entry_cont">
8508             <td class="entry_details" colspan="5">
8509               <p>HAL implementations that include scene modes are expected to provide
8510 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8511 <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
8512 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
8513 <p>For HIGH_<wbr/>SPEED_<wbr/>VIDEO mode,<wbr/> if it is included in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/>
8514 the HAL must list supported video size and fps range in
8515 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> For a given size,<wbr/> e.<wbr/>g.<wbr/>
8516 1280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
8517 mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
8518 requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/>
8519 This mode is deprecated in HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
8520 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO
8521 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
8522             </td>
8523           </tr>
8524
8525           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8526            <!-- end of entry -->
8527         
8528                 
8529           <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
8530             <td class="entry_name
8531              " rowspan="3">
8532               android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
8533             </td>
8534             <td class="entry_type">
8535                 <span class="entry_type_name entry_type_name_enum">byte</span>
8536
8537               <span class="entry_type_visibility"> [public]</span>
8538
8539
8540               <span class="entry_type_hwlevel">[legacy] </span>
8541
8542
8543
8544                 <ul class="entry_type_enum">
8545                   <li>
8546                     <span class="entry_type_enum_name">OFF</span>
8547                     <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
8548                   </li>
8549                   <li>
8550                     <span class="entry_type_enum_name">ON</span>
8551                     <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
8552                   </li>
8553                 </ul>
8554
8555             </td> <!-- entry_type -->
8556
8557             <td class="entry_description">
8558               <p>Whether video stabilization is
8559 active.<wbr/></p>
8560             </td>
8561
8562             <td class="entry_units">
8563             </td>
8564
8565             <td class="entry_range">
8566             </td>
8567
8568             <td class="entry_tags">
8569               <ul class="entry_tags">
8570                   <li><a href="#tag_BC">BC</a></li>
8571               </ul>
8572             </td>
8573
8574           </tr>
8575           <tr class="entries_header">
8576             <th class="th_details" colspan="5">Details</th>
8577           </tr>
8578           <tr class="entry_cont">
8579             <td class="entry_details" colspan="5">
8580               <p>Video stabilization automatically warps images from
8581 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
8582 <p>If enabled,<wbr/> video stabilization can modify the
8583 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
8584 <p>Switching between different video stabilization modes may take several
8585 frames to initialize,<wbr/> the camera device will report the current mode
8586 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
8587 the video stabilization modes in the first several capture results may
8588 still be "OFF",<wbr/> and it will become "ON" when the initialization is
8589 done.<wbr/></p>
8590 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
8591 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
8592 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
8593 the recording resolution is less than or equal to 1920 x 1080 (width less than
8594 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
8595 frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
8596 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
8597 OFF if the recording output is not stabilized,<wbr/> or if there are no output
8598 Surface types that can be stabilized.<wbr/></p>
8599 <p>If a camera device supports both this mode and OIS
8600 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
8601 produce undesirable interaction,<wbr/> so it is recommended not to enable
8602 both at the same time.<wbr/></p>
8603             </td>
8604           </tr>
8605
8606
8607           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8608            <!-- end of entry -->
8609         
8610         
8611
8612       <!-- end of kind -->
8613       </tbody>
8614
8615   <!-- end of section -->
8616   <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr>
8617
8618
8619       <tr><td colspan="6" class="kind">controls</td></tr>
8620
8621       <thead class="entries_header">
8622         <tr>
8623           <th class="th_name">Property Name</th>
8624           <th class="th_type">Type</th>
8625           <th class="th_description">Description</th>
8626           <th class="th_units">Units</th>
8627           <th class="th_range">Range</th>
8628           <th class="th_tags">Tags</th>
8629         </tr>
8630       </thead>
8631
8632       <tbody>
8633
8634         
8635
8636         
8637
8638         
8639
8640         
8641
8642                 
8643           <tr class="entry" id="controls_android.demosaic.mode">
8644             <td class="entry_name
8645              " rowspan="1">
8646               android.<wbr/>demosaic.<wbr/>mode
8647             </td>
8648             <td class="entry_type">
8649                 <span class="entry_type_name entry_type_name_enum">byte</span>
8650
8651               <span class="entry_type_visibility"> [system]</span>
8652
8653
8654
8655
8656
8657                 <ul class="entry_type_enum">
8658                   <li>
8659                     <span class="entry_type_enum_name">FAST</span>
8660                     <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
8661 Bayer RAW output.<wbr/></p></span>
8662                   </li>
8663                   <li>
8664                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
8665                     <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
8666 relative to raw output.<wbr/></p></span>
8667                   </li>
8668                 </ul>
8669
8670             </td> <!-- entry_type -->
8671
8672             <td class="entry_description">
8673               <p>Controls the quality of the demosaicing
8674 processing.<wbr/></p>
8675             </td>
8676
8677             <td class="entry_units">
8678             </td>
8679
8680             <td class="entry_range">
8681             </td>
8682
8683             <td class="entry_tags">
8684               <ul class="entry_tags">
8685                   <li><a href="#tag_FUTURE">FUTURE</a></li>
8686               </ul>
8687             </td>
8688
8689           </tr>
8690
8691
8692           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8693            <!-- end of entry -->
8694         
8695         
8696
8697       <!-- end of kind -->
8698       </tbody>
8699
8700   <!-- end of section -->
8701   <tr><td colspan="6" id="section_edge" class="section">edge</td></tr>
8702
8703
8704       <tr><td colspan="6" class="kind">controls</td></tr>
8705
8706       <thead class="entries_header">
8707         <tr>
8708           <th class="th_name">Property Name</th>
8709           <th class="th_type">Type</th>
8710           <th class="th_description">Description</th>
8711           <th class="th_units">Units</th>
8712           <th class="th_range">Range</th>
8713           <th class="th_tags">Tags</th>
8714         </tr>
8715       </thead>
8716
8717       <tbody>
8718
8719         
8720
8721         
8722
8723         
8724
8725         
8726
8727                 
8728           <tr class="entry" id="controls_android.edge.mode">
8729             <td class="entry_name
8730              " rowspan="5">
8731               android.<wbr/>edge.<wbr/>mode
8732             </td>
8733             <td class="entry_type">
8734                 <span class="entry_type_name entry_type_name_enum">byte</span>
8735
8736               <span class="entry_type_visibility"> [public]</span>
8737
8738
8739               <span class="entry_type_hwlevel">[full] </span>
8740
8741
8742
8743                 <ul class="entry_type_enum">
8744                   <li>
8745                     <span class="entry_type_enum_name">OFF</span>
8746                     <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
8747                   </li>
8748                   <li>
8749                     <span class="entry_type_enum_name">FAST</span>
8750                     <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
8751 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
8752 slow down frame rate relative to sensor.<wbr/></p></span>
8753                   </li>
8754                   <li>
8755                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
8756                     <span class="entry_type_enum_notes"><p>Apply high-quality edge enhancement,<wbr/> at a cost of possibly reduced output frame rate.<wbr/></p></span>
8757                   </li>
8758                   <li>
8759                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
8760                     <span class="entry_type_enum_optional">[optional]</span>
8761                     <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
8762 based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have
8763 edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
8764 applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
8765 frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
8766 is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
8767 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
8768 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
8769 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
8770 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
8771 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
8772 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
8773 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
8774 reasonable preview quality.<wbr/></p>
8775 <p>This mode is guaranteed to be supported by devices that support either the
8776 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
8777 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
8778 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
8779                   </li>
8780                 </ul>
8781
8782             </td> <!-- entry_type -->
8783
8784             <td class="entry_description">
8785               <p>Operation mode for edge
8786 enhancement.<wbr/></p>
8787             </td>
8788
8789             <td class="entry_units">
8790             </td>
8791
8792             <td class="entry_range">
8793               <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
8794             </td>
8795
8796             <td class="entry_tags">
8797               <ul class="entry_tags">
8798                   <li><a href="#tag_V1">V1</a></li>
8799                   <li><a href="#tag_REPROC">REPROC</a></li>
8800               </ul>
8801             </td>
8802
8803           </tr>
8804           <tr class="entries_header">
8805             <th class="th_details" colspan="5">Details</th>
8806           </tr>
8807           <tr class="entry_cont">
8808             <td class="entry_details" colspan="5">
8809               <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
8810 no enhancement will be applied by the camera device.<wbr/></p>
8811 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
8812 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
8813 camera device will use the highest-quality enhancement algorithms,<wbr/>
8814 even if it slows down capture rate.<wbr/> FAST means the camera device will
8815 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
8816 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
8817 amount of enhancement applied.<wbr/></p>
8818 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
8819 buffer of high-resolution images during preview and reprocess image(s) from that buffer
8820 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
8821 edge enhancement to low-resolution streams (below maximum recording resolution) to
8822 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
8823 since those will be reprocessed later if necessary.<wbr/></p>
8824 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
8825 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
8826 The camera device may adjust its internal edge enhancement parameters for best
8827 image quality based on the <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a>,<wbr/> if it is set.<wbr/></p>
8828             </td>
8829           </tr>
8830
8831           <tr class="entries_header">
8832             <th class="th_details" colspan="5">HAL Implementation Details</th>
8833           </tr>
8834           <tr class="entry_cont">
8835             <td class="entry_details" colspan="5">
8836               <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
8837 adjust the internal edge enhancement reduction parameters appropriately to get the best
8838 quality images.<wbr/></p>
8839             </td>
8840           </tr>
8841
8842           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8843            <!-- end of entry -->
8844         
8845                 
8846           <tr class="entry" id="controls_android.edge.strength">
8847             <td class="entry_name
8848              " rowspan="1">
8849               android.<wbr/>edge.<wbr/>strength
8850             </td>
8851             <td class="entry_type">
8852                 <span class="entry_type_name">byte</span>
8853
8854               <span class="entry_type_visibility"> [system]</span>
8855
8856
8857
8858
8859
8860
8861             </td> <!-- entry_type -->
8862
8863             <td class="entry_description">
8864               <p>Control the amount of edge enhancement
8865 applied to the images</p>
8866             </td>
8867
8868             <td class="entry_units">
8869               1-10; 10 is maximum sharpening
8870             </td>
8871
8872             <td class="entry_range">
8873             </td>
8874
8875             <td class="entry_tags">
8876               <ul class="entry_tags">
8877                   <li><a href="#tag_FUTURE">FUTURE</a></li>
8878               </ul>
8879             </td>
8880
8881           </tr>
8882
8883
8884           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8885            <!-- end of entry -->
8886         
8887         
8888
8889       <!-- end of kind -->
8890       </tbody>
8891       <tr><td colspan="6" class="kind">static</td></tr>
8892
8893       <thead class="entries_header">
8894         <tr>
8895           <th class="th_name">Property Name</th>
8896           <th class="th_type">Type</th>
8897           <th class="th_description">Description</th>
8898           <th class="th_units">Units</th>
8899           <th class="th_range">Range</th>
8900           <th class="th_tags">Tags</th>
8901         </tr>
8902       </thead>
8903
8904       <tbody>
8905
8906         
8907
8908         
8909
8910         
8911
8912         
8913
8914                 
8915           <tr class="entry" id="static_android.edge.availableEdgeModes">
8916             <td class="entry_name
8917              " rowspan="5">
8918               android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
8919             </td>
8920             <td class="entry_type">
8921                 <span class="entry_type_name">byte</span>
8922                 <span class="entry_type_container">x</span>
8923
8924                 <span class="entry_type_array">
8925                   n
8926                 </span>
8927               <span class="entry_type_visibility"> [public as enumList]</span>
8928
8929
8930               <span class="entry_type_hwlevel">[full] </span>
8931
8932
8933                 <div class="entry_type_notes">list of enums</div>
8934
8935
8936             </td> <!-- entry_type -->
8937
8938             <td class="entry_description">
8939               <p>List of edge enhancement modes for <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> that are supported by this camera
8940 device.<wbr/></p>
8941             </td>
8942
8943             <td class="entry_units">
8944             </td>
8945
8946             <td class="entry_range">
8947               <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
8948             </td>
8949
8950             <td class="entry_tags">
8951               <ul class="entry_tags">
8952                   <li><a href="#tag_V1">V1</a></li>
8953                   <li><a href="#tag_REPROC">REPROC</a></li>
8954               </ul>
8955             </td>
8956
8957           </tr>
8958           <tr class="entries_header">
8959             <th class="th_details" colspan="5">Details</th>
8960           </tr>
8961           <tr class="entry_cont">
8962             <td class="entry_details" colspan="5">
8963               <p>Full-capability camera devices must always support OFF; camera devices that support
8964 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
8965 list FAST.<wbr/></p>
8966             </td>
8967           </tr>
8968
8969           <tr class="entries_header">
8970             <th class="th_details" colspan="5">HAL Implementation Details</th>
8971           </tr>
8972           <tr class="entry_cont">
8973             <td class="entry_details" colspan="5">
8974               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
8975 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
8976 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
8977 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
8978             </td>
8979           </tr>
8980
8981           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8982            <!-- end of entry -->
8983         
8984         
8985
8986       <!-- end of kind -->
8987       </tbody>
8988       <tr><td colspan="6" class="kind">dynamic</td></tr>
8989
8990       <thead class="entries_header">
8991         <tr>
8992           <th class="th_name">Property Name</th>
8993           <th class="th_type">Type</th>
8994           <th class="th_description">Description</th>
8995           <th class="th_units">Units</th>
8996           <th class="th_range">Range</th>
8997           <th class="th_tags">Tags</th>
8998         </tr>
8999       </thead>
9000
9001       <tbody>
9002
9003         
9004
9005         
9006
9007         
9008
9009         
9010
9011                 
9012           <tr class="entry" id="dynamic_android.edge.mode">
9013             <td class="entry_name
9014              " rowspan="5">
9015               android.<wbr/>edge.<wbr/>mode
9016             </td>
9017             <td class="entry_type">
9018                 <span class="entry_type_name entry_type_name_enum">byte</span>
9019
9020               <span class="entry_type_visibility"> [public]</span>
9021
9022
9023               <span class="entry_type_hwlevel">[full] </span>
9024
9025
9026
9027                 <ul class="entry_type_enum">
9028                   <li>
9029                     <span class="entry_type_enum_name">OFF</span>
9030                     <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9031                   </li>
9032                   <li>
9033                     <span class="entry_type_enum_name">FAST</span>
9034                     <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9035 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9036 slow down frame rate relative to sensor.<wbr/></p></span>
9037                   </li>
9038                   <li>
9039                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
9040                     <span class="entry_type_enum_notes"><p>Apply high-quality edge enhancement,<wbr/> at a cost of possibly reduced output frame rate.<wbr/></p></span>
9041                   </li>
9042                   <li>
9043                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
9044                     <span class="entry_type_enum_optional">[optional]</span>
9045                     <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different levels for different output streams,<wbr/>
9046 based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have
9047 edge enhancement applied,<wbr/> while higher-resolution streams have no edge enhancement
9048 applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned so that
9049 frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST (since it
9050 is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9051 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9052 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9053 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9054 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9055 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9056 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9057 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9058 reasonable preview quality.<wbr/></p>
9059 <p>This mode is guaranteed to be supported by devices that support either the
9060 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9061 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9062 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9063                   </li>
9064                 </ul>
9065
9066             </td> <!-- entry_type -->
9067
9068             <td class="entry_description">
9069               <p>Operation mode for edge
9070 enhancement.<wbr/></p>
9071             </td>
9072
9073             <td class="entry_units">
9074             </td>
9075
9076             <td class="entry_range">
9077               <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9078             </td>
9079
9080             <td class="entry_tags">
9081               <ul class="entry_tags">
9082                   <li><a href="#tag_V1">V1</a></li>
9083                   <li><a href="#tag_REPROC">REPROC</a></li>
9084               </ul>
9085             </td>
9086
9087           </tr>
9088           <tr class="entries_header">
9089             <th class="th_details" colspan="5">Details</th>
9090           </tr>
9091           <tr class="entry_cont">
9092             <td class="entry_details" colspan="5">
9093               <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9094 no enhancement will be applied by the camera device.<wbr/></p>
9095 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9096 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9097 camera device will use the highest-quality enhancement algorithms,<wbr/>
9098 even if it slows down capture rate.<wbr/> FAST means the camera device will
9099 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9100 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9101 amount of enhancement applied.<wbr/></p>
9102 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9103 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9104 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9105 edge enhancement to low-resolution streams (below maximum recording resolution) to
9106 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9107 since those will be reprocessed later if necessary.<wbr/></p>
9108 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9109 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9110 The camera device may adjust its internal edge enhancement parameters for best
9111 image quality based on the <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a>,<wbr/> if it is set.<wbr/></p>
9112             </td>
9113           </tr>
9114
9115           <tr class="entries_header">
9116             <th class="th_details" colspan="5">HAL Implementation Details</th>
9117           </tr>
9118           <tr class="entry_cont">
9119             <td class="entry_details" colspan="5">
9120               <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
9121 adjust the internal edge enhancement reduction parameters appropriately to get the best
9122 quality images.<wbr/></p>
9123             </td>
9124           </tr>
9125
9126           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9127            <!-- end of entry -->
9128         
9129         
9130
9131       <!-- end of kind -->
9132       </tbody>
9133
9134   <!-- end of section -->
9135   <tr><td colspan="6" id="section_flash" class="section">flash</td></tr>
9136
9137
9138       <tr><td colspan="6" class="kind">controls</td></tr>
9139
9140       <thead class="entries_header">
9141         <tr>
9142           <th class="th_name">Property Name</th>
9143           <th class="th_type">Type</th>
9144           <th class="th_description">Description</th>
9145           <th class="th_units">Units</th>
9146           <th class="th_range">Range</th>
9147           <th class="th_tags">Tags</th>
9148         </tr>
9149       </thead>
9150
9151       <tbody>
9152
9153         
9154
9155         
9156
9157         
9158
9159         
9160
9161                 
9162           <tr class="entry" id="controls_android.flash.firingPower">
9163             <td class="entry_name
9164              " rowspan="3">
9165               android.<wbr/>flash.<wbr/>firing<wbr/>Power
9166             </td>
9167             <td class="entry_type">
9168                 <span class="entry_type_name">byte</span>
9169
9170               <span class="entry_type_visibility"> [system]</span>
9171
9172
9173
9174
9175
9176
9177             </td> <!-- entry_type -->
9178
9179             <td class="entry_description">
9180               <p>Power for flash firing/<wbr/>torch</p>
9181             </td>
9182
9183             <td class="entry_units">
9184               10 is max power; 0 is no flash.<wbr/> Linear
9185             </td>
9186
9187             <td class="entry_range">
9188               <p>0 - 10</p>
9189             </td>
9190
9191             <td class="entry_tags">
9192               <ul class="entry_tags">
9193                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9194               </ul>
9195             </td>
9196
9197           </tr>
9198           <tr class="entries_header">
9199             <th class="th_details" colspan="5">Details</th>
9200           </tr>
9201           <tr class="entry_cont">
9202             <td class="entry_details" colspan="5">
9203               <p>Power for snapshot may use a different scale than
9204 for torch mode.<wbr/> Only one entry for torch mode will be
9205 used</p>
9206             </td>
9207           </tr>
9208
9209
9210           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9211            <!-- end of entry -->
9212         
9213                 
9214           <tr class="entry" id="controls_android.flash.firingTime">
9215             <td class="entry_name
9216              " rowspan="3">
9217               android.<wbr/>flash.<wbr/>firing<wbr/>Time
9218             </td>
9219             <td class="entry_type">
9220                 <span class="entry_type_name">int64</span>
9221
9222               <span class="entry_type_visibility"> [system]</span>
9223
9224
9225
9226
9227
9228
9229             </td> <!-- entry_type -->
9230
9231             <td class="entry_description">
9232               <p>Firing time of flash relative to start of
9233 exposure</p>
9234             </td>
9235
9236             <td class="entry_units">
9237               nanoseconds
9238             </td>
9239
9240             <td class="entry_range">
9241               <p>0-(exposure time-flash duration)</p>
9242             </td>
9243
9244             <td class="entry_tags">
9245               <ul class="entry_tags">
9246                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9247               </ul>
9248             </td>
9249
9250           </tr>
9251           <tr class="entries_header">
9252             <th class="th_details" colspan="5">Details</th>
9253           </tr>
9254           <tr class="entry_cont">
9255             <td class="entry_details" colspan="5">
9256               <p>Clamped to (0,<wbr/> exposure time - flash
9257 duration).<wbr/></p>
9258             </td>
9259           </tr>
9260
9261
9262           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9263            <!-- end of entry -->
9264         
9265                 
9266           <tr class="entry" id="controls_android.flash.mode">
9267             <td class="entry_name
9268              " rowspan="3">
9269               android.<wbr/>flash.<wbr/>mode
9270             </td>
9271             <td class="entry_type">
9272                 <span class="entry_type_name entry_type_name_enum">byte</span>
9273
9274               <span class="entry_type_visibility"> [public]</span>
9275
9276
9277               <span class="entry_type_hwlevel">[legacy] </span>
9278
9279
9280
9281                 <ul class="entry_type_enum">
9282                   <li>
9283                     <span class="entry_type_enum_name">OFF</span>
9284                     <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
9285                   </li>
9286                   <li>
9287                     <span class="entry_type_enum_name">SINGLE</span>
9288                     <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
9289 for this capture.<wbr/></p></span>
9290                   </li>
9291                   <li>
9292                     <span class="entry_type_enum_name">TORCH</span>
9293                     <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
9294                   </li>
9295                 </ul>
9296
9297             </td> <!-- entry_type -->
9298
9299             <td class="entry_description">
9300               <p>The desired mode for for the camera device's flash control.<wbr/></p>
9301             </td>
9302
9303             <td class="entry_units">
9304             </td>
9305
9306             <td class="entry_range">
9307             </td>
9308
9309             <td class="entry_tags">
9310               <ul class="entry_tags">
9311                   <li><a href="#tag_BC">BC</a></li>
9312               </ul>
9313             </td>
9314
9315           </tr>
9316           <tr class="entries_header">
9317             <th class="th_details" colspan="5">Details</th>
9318           </tr>
9319           <tr class="entry_cont">
9320             <td class="entry_details" colspan="5">
9321               <p>This control is only effective when flash unit is available
9322 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
9323 <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/>
9324 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
9325 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
9326 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
9327 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
9328 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
9329 control should be used along with auto-exposure (AE) precapture metering sequence
9330 (<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>
9331 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
9332 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
9333 <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>
9334             </td>
9335           </tr>
9336
9337
9338           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9339            <!-- end of entry -->
9340         
9341         
9342
9343       <!-- end of kind -->
9344       </tbody>
9345       <tr><td colspan="6" class="kind">static</td></tr>
9346
9347       <thead class="entries_header">
9348         <tr>
9349           <th class="th_name">Property Name</th>
9350           <th class="th_type">Type</th>
9351           <th class="th_description">Description</th>
9352           <th class="th_units">Units</th>
9353           <th class="th_range">Range</th>
9354           <th class="th_tags">Tags</th>
9355         </tr>
9356       </thead>
9357
9358       <tbody>
9359
9360         
9361
9362         
9363
9364         
9365
9366         
9367                 
9368             
9369
9370                 
9371           <tr class="entry" id="static_android.flash.info.available">
9372             <td class="entry_name
9373              " rowspan="3">
9374               android.<wbr/>flash.<wbr/>info.<wbr/>available
9375             </td>
9376             <td class="entry_type">
9377                 <span class="entry_type_name entry_type_name_enum">byte</span>
9378
9379               <span class="entry_type_visibility"> [public as boolean]</span>
9380
9381
9382               <span class="entry_type_hwlevel">[legacy] </span>
9383
9384
9385
9386                 <ul class="entry_type_enum">
9387                   <li>
9388                     <span class="entry_type_enum_name">FALSE</span>
9389                   </li>
9390                   <li>
9391                     <span class="entry_type_enum_name">TRUE</span>
9392                   </li>
9393                 </ul>
9394
9395             </td> <!-- entry_type -->
9396
9397             <td class="entry_description">
9398               <p>Whether this camera device has a
9399 flash unit.<wbr/></p>
9400             </td>
9401
9402             <td class="entry_units">
9403             </td>
9404
9405             <td class="entry_range">
9406             </td>
9407
9408             <td class="entry_tags">
9409               <ul class="entry_tags">
9410                   <li><a href="#tag_BC">BC</a></li>
9411               </ul>
9412             </td>
9413
9414           </tr>
9415           <tr class="entries_header">
9416             <th class="th_details" colspan="5">Details</th>
9417           </tr>
9418           <tr class="entry_cont">
9419             <td class="entry_details" colspan="5">
9420               <p>Will be <code>false</code> if no flash is available.<wbr/></p>
9421 <p>If there is no flash unit,<wbr/> none of the flash controls do
9422 anything.<wbr/></p>
9423             </td>
9424           </tr>
9425
9426
9427           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9428            <!-- end of entry -->
9429         
9430                 
9431           <tr class="entry" id="static_android.flash.info.chargeDuration">
9432             <td class="entry_name
9433              " rowspan="3">
9434               android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
9435             </td>
9436             <td class="entry_type">
9437                 <span class="entry_type_name">int64</span>
9438
9439               <span class="entry_type_visibility"> [system]</span>
9440
9441
9442
9443
9444
9445
9446             </td> <!-- entry_type -->
9447
9448             <td class="entry_description">
9449               <p>Time taken before flash can fire
9450 again</p>
9451             </td>
9452
9453             <td class="entry_units">
9454               nanoseconds
9455             </td>
9456
9457             <td class="entry_range">
9458               <p>0-1e9</p>
9459             </td>
9460
9461             <td class="entry_tags">
9462               <ul class="entry_tags">
9463                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9464               </ul>
9465             </td>
9466
9467           </tr>
9468           <tr class="entries_header">
9469             <th class="th_details" colspan="5">Details</th>
9470           </tr>
9471           <tr class="entry_cont">
9472             <td class="entry_details" colspan="5">
9473               <p>1 second too long/<wbr/>too short for recharge? Should
9474 this be power-dependent?</p>
9475             </td>
9476           </tr>
9477
9478
9479           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9480            <!-- end of entry -->
9481         
9482         
9483         
9484
9485                 
9486           <tr class="entry" id="static_android.flash.colorTemperature">
9487             <td class="entry_name
9488              " rowspan="1">
9489               android.<wbr/>flash.<wbr/>color<wbr/>Temperature
9490             </td>
9491             <td class="entry_type">
9492                 <span class="entry_type_name">byte</span>
9493
9494               <span class="entry_type_visibility"> [system]</span>
9495
9496
9497
9498
9499
9500
9501             </td> <!-- entry_type -->
9502
9503             <td class="entry_description">
9504               <p>The x,<wbr/>y whitepoint of the
9505 flash</p>
9506             </td>
9507
9508             <td class="entry_units">
9509               pair of floats
9510             </td>
9511
9512             <td class="entry_range">
9513               <p>0-1 for both</p>
9514             </td>
9515
9516             <td class="entry_tags">
9517               <ul class="entry_tags">
9518                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9519               </ul>
9520             </td>
9521
9522           </tr>
9523
9524
9525           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9526            <!-- end of entry -->
9527         
9528                 
9529           <tr class="entry" id="static_android.flash.maxEnergy">
9530             <td class="entry_name
9531              " rowspan="1">
9532               android.<wbr/>flash.<wbr/>max<wbr/>Energy
9533             </td>
9534             <td class="entry_type">
9535                 <span class="entry_type_name">byte</span>
9536
9537               <span class="entry_type_visibility"> [system]</span>
9538
9539
9540
9541
9542
9543
9544             </td> <!-- entry_type -->
9545
9546             <td class="entry_description">
9547               <p>Max energy output of the flash for a full
9548 power single flash</p>
9549             </td>
9550
9551             <td class="entry_units">
9552               lumen-seconds
9553             </td>
9554
9555             <td class="entry_range">
9556               <p>&gt;= 0</p>
9557             </td>
9558
9559             <td class="entry_tags">
9560               <ul class="entry_tags">
9561                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9562               </ul>
9563             </td>
9564
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">dynamic</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           <tr class="entry" id="dynamic_android.flash.firingPower">
9600             <td class="entry_name
9601              " rowspan="3">
9602               android.<wbr/>flash.<wbr/>firing<wbr/>Power
9603             </td>
9604             <td class="entry_type">
9605                 <span class="entry_type_name">byte</span>
9606
9607               <span class="entry_type_visibility"> [system]</span>
9608
9609
9610
9611
9612
9613
9614             </td> <!-- entry_type -->
9615
9616             <td class="entry_description">
9617               <p>Power for flash firing/<wbr/>torch</p>
9618             </td>
9619
9620             <td class="entry_units">
9621               10 is max power; 0 is no flash.<wbr/> Linear
9622             </td>
9623
9624             <td class="entry_range">
9625               <p>0 - 10</p>
9626             </td>
9627
9628             <td class="entry_tags">
9629               <ul class="entry_tags">
9630                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9631               </ul>
9632             </td>
9633
9634           </tr>
9635           <tr class="entries_header">
9636             <th class="th_details" colspan="5">Details</th>
9637           </tr>
9638           <tr class="entry_cont">
9639             <td class="entry_details" colspan="5">
9640               <p>Power for snapshot may use a different scale than
9641 for torch mode.<wbr/> Only one entry for torch mode will be
9642 used</p>
9643             </td>
9644           </tr>
9645
9646
9647           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9648            <!-- end of entry -->
9649         
9650                 
9651           <tr class="entry" id="dynamic_android.flash.firingTime">
9652             <td class="entry_name
9653              " rowspan="3">
9654               android.<wbr/>flash.<wbr/>firing<wbr/>Time
9655             </td>
9656             <td class="entry_type">
9657                 <span class="entry_type_name">int64</span>
9658
9659               <span class="entry_type_visibility"> [system]</span>
9660
9661
9662
9663
9664
9665
9666             </td> <!-- entry_type -->
9667
9668             <td class="entry_description">
9669               <p>Firing time of flash relative to start of
9670 exposure</p>
9671             </td>
9672
9673             <td class="entry_units">
9674               nanoseconds
9675             </td>
9676
9677             <td class="entry_range">
9678               <p>0-(exposure time-flash duration)</p>
9679             </td>
9680
9681             <td class="entry_tags">
9682               <ul class="entry_tags">
9683                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9684               </ul>
9685             </td>
9686
9687           </tr>
9688           <tr class="entries_header">
9689             <th class="th_details" colspan="5">Details</th>
9690           </tr>
9691           <tr class="entry_cont">
9692             <td class="entry_details" colspan="5">
9693               <p>Clamped to (0,<wbr/> exposure time - flash
9694 duration).<wbr/></p>
9695             </td>
9696           </tr>
9697
9698
9699           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9700            <!-- end of entry -->
9701         
9702                 
9703           <tr class="entry" id="dynamic_android.flash.mode">
9704             <td class="entry_name
9705              " rowspan="3">
9706               android.<wbr/>flash.<wbr/>mode
9707             </td>
9708             <td class="entry_type">
9709                 <span class="entry_type_name entry_type_name_enum">byte</span>
9710
9711               <span class="entry_type_visibility"> [public]</span>
9712
9713
9714               <span class="entry_type_hwlevel">[legacy] </span>
9715
9716
9717
9718                 <ul class="entry_type_enum">
9719                   <li>
9720                     <span class="entry_type_enum_name">OFF</span>
9721                     <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
9722                   </li>
9723                   <li>
9724                     <span class="entry_type_enum_name">SINGLE</span>
9725                     <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
9726 for this capture.<wbr/></p></span>
9727                   </li>
9728                   <li>
9729                     <span class="entry_type_enum_name">TORCH</span>
9730                     <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
9731                   </li>
9732                 </ul>
9733
9734             </td> <!-- entry_type -->
9735
9736             <td class="entry_description">
9737               <p>The desired mode for for the camera device's flash control.<wbr/></p>
9738             </td>
9739
9740             <td class="entry_units">
9741             </td>
9742
9743             <td class="entry_range">
9744             </td>
9745
9746             <td class="entry_tags">
9747               <ul class="entry_tags">
9748                   <li><a href="#tag_BC">BC</a></li>
9749               </ul>
9750             </td>
9751
9752           </tr>
9753           <tr class="entries_header">
9754             <th class="th_details" colspan="5">Details</th>
9755           </tr>
9756           <tr class="entry_cont">
9757             <td class="entry_details" colspan="5">
9758               <p>This control is only effective when flash unit is available
9759 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
9760 <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/>
9761 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
9762 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
9763 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
9764 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
9765 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
9766 control should be used along with auto-exposure (AE) precapture metering sequence
9767 (<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>
9768 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
9769 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
9770 <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>
9771             </td>
9772           </tr>
9773
9774
9775           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9776            <!-- end of entry -->
9777         
9778                 
9779           <tr class="entry" id="dynamic_android.flash.state">
9780             <td class="entry_name
9781              " rowspan="3">
9782               android.<wbr/>flash.<wbr/>state
9783             </td>
9784             <td class="entry_type">
9785                 <span class="entry_type_name entry_type_name_enum">byte</span>
9786
9787               <span class="entry_type_visibility"> [public]</span>
9788
9789
9790               <span class="entry_type_hwlevel">[limited] </span>
9791
9792
9793
9794                 <ul class="entry_type_enum">
9795                   <li>
9796                     <span class="entry_type_enum_name">UNAVAILABLE</span>
9797                     <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
9798                   </li>
9799                   <li>
9800                     <span class="entry_type_enum_name">CHARGING</span>
9801                     <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
9802                   </li>
9803                   <li>
9804                     <span class="entry_type_enum_name">READY</span>
9805                     <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
9806                   </li>
9807                   <li>
9808                     <span class="entry_type_enum_name">FIRED</span>
9809                     <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
9810                   </li>
9811                   <li>
9812                     <span class="entry_type_enum_name">PARTIAL</span>
9813                     <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
9814 <p>This is usually due to the next or previous frame having
9815 the flash fire,<wbr/> and the flash spilling into this capture
9816 due to hardware limitations.<wbr/></p></span>
9817                   </li>
9818                 </ul>
9819
9820             </td> <!-- entry_type -->
9821
9822             <td class="entry_description">
9823               <p>Current state of the flash
9824 unit.<wbr/></p>
9825             </td>
9826
9827             <td class="entry_units">
9828             </td>
9829
9830             <td class="entry_range">
9831             </td>
9832
9833             <td class="entry_tags">
9834             </td>
9835
9836           </tr>
9837           <tr class="entries_header">
9838             <th class="th_details" colspan="5">Details</th>
9839           </tr>
9840           <tr class="entry_cont">
9841             <td class="entry_details" colspan="5">
9842               <p>When the camera device doesn't have flash unit
9843 (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/>
9844 Other states indicate the current flash status.<wbr/></p>
9845 <p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
9846 <ul>
9847 <li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
9848 <li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
9849    will always return FIRED.<wbr/></li>
9850 <li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
9851    will always return FIRED.<wbr/></li>
9852 </ul>
9853 <p>In all other conditions the state will not be available on
9854 LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
9855             </td>
9856           </tr>
9857
9858
9859           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9860            <!-- end of entry -->
9861         
9862         
9863
9864       <!-- end of kind -->
9865       </tbody>
9866
9867   <!-- end of section -->
9868   <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr>
9869
9870
9871       <tr><td colspan="6" class="kind">controls</td></tr>
9872
9873       <thead class="entries_header">
9874         <tr>
9875           <th class="th_name">Property Name</th>
9876           <th class="th_type">Type</th>
9877           <th class="th_description">Description</th>
9878           <th class="th_units">Units</th>
9879           <th class="th_range">Range</th>
9880           <th class="th_tags">Tags</th>
9881         </tr>
9882       </thead>
9883
9884       <tbody>
9885
9886         
9887
9888         
9889
9890         
9891
9892         
9893
9894                 
9895           <tr class="entry" id="controls_android.hotPixel.mode">
9896             <td class="entry_name
9897              " rowspan="3">
9898               android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
9899             </td>
9900             <td class="entry_type">
9901                 <span class="entry_type_name entry_type_name_enum">byte</span>
9902
9903               <span class="entry_type_visibility"> [public]</span>
9904
9905
9906
9907
9908
9909                 <ul class="entry_type_enum">
9910                   <li>
9911                     <span class="entry_type_enum_name">OFF</span>
9912                     <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
9913 <p>The frame rate must not be reduced relative to sensor raw output
9914 for this option.<wbr/></p>
9915 <p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
9916                   </li>
9917                   <li>
9918                     <span class="entry_type_enum_name">FAST</span>
9919                     <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
9920 rate relative to sensor raw output.<wbr/></p>
9921 <p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
9922                   </li>
9923                   <li>
9924                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
9925                     <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
9926 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
9927 <p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
9928                   </li>
9929                 </ul>
9930
9931             </td> <!-- entry_type -->
9932
9933             <td class="entry_description">
9934               <p>Operational mode for hot pixel correction.<wbr/></p>
9935             </td>
9936
9937             <td class="entry_units">
9938             </td>
9939
9940             <td class="entry_range">
9941               <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
9942             </td>
9943
9944             <td class="entry_tags">
9945               <ul class="entry_tags">
9946                   <li><a href="#tag_V1">V1</a></li>
9947                   <li><a href="#tag_RAW">RAW</a></li>
9948               </ul>
9949             </td>
9950
9951           </tr>
9952           <tr class="entries_header">
9953             <th class="th_details" colspan="5">Details</th>
9954           </tr>
9955           <tr class="entry_cont">
9956             <td class="entry_details" colspan="5">
9957               <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
9958 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
9959 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
9960             </td>
9961           </tr>
9962
9963
9964           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9965            <!-- end of entry -->
9966         
9967         
9968
9969       <!-- end of kind -->
9970       </tbody>
9971       <tr><td colspan="6" class="kind">static</td></tr>
9972
9973       <thead class="entries_header">
9974         <tr>
9975           <th class="th_name">Property Name</th>
9976           <th class="th_type">Type</th>
9977           <th class="th_description">Description</th>
9978           <th class="th_units">Units</th>
9979           <th class="th_range">Range</th>
9980           <th class="th_tags">Tags</th>
9981         </tr>
9982       </thead>
9983
9984       <tbody>
9985
9986         
9987
9988         
9989
9990         
9991
9992         
9993
9994                 
9995           <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
9996             <td class="entry_name
9997              " rowspan="5">
9998               android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
9999             </td>
10000             <td class="entry_type">
10001                 <span class="entry_type_name">byte</span>
10002                 <span class="entry_type_container">x</span>
10003
10004                 <span class="entry_type_array">
10005                   n
10006                 </span>
10007               <span class="entry_type_visibility"> [public as enumList]</span>
10008
10009
10010
10011
10012                 <div class="entry_type_notes">list of enums</div>
10013
10014
10015             </td> <!-- entry_type -->
10016
10017             <td class="entry_description">
10018               <p>List of hot pixel correction modes for <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a> that are supported by this
10019 camera device.<wbr/></p>
10020             </td>
10021
10022             <td class="entry_units">
10023             </td>
10024
10025             <td class="entry_range">
10026               <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
10027             </td>
10028
10029             <td class="entry_tags">
10030               <ul class="entry_tags">
10031                   <li><a href="#tag_V1">V1</a></li>
10032                   <li><a href="#tag_RAW">RAW</a></li>
10033               </ul>
10034             </td>
10035
10036           </tr>
10037           <tr class="entries_header">
10038             <th class="th_details" colspan="5">Details</th>
10039           </tr>
10040           <tr class="entry_cont">
10041             <td class="entry_details" colspan="5">
10042               <p>FULL mode camera devices will always support FAST.<wbr/></p>
10043             </td>
10044           </tr>
10045
10046           <tr class="entries_header">
10047             <th class="th_details" colspan="5">HAL Implementation Details</th>
10048           </tr>
10049           <tr class="entry_cont">
10050             <td class="entry_details" colspan="5">
10051               <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
10052 pixels than actual pixels on the camera sensor.<wbr/>
10053 HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
10054 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
10055 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
10056 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
10057             </td>
10058           </tr>
10059
10060           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10061            <!-- end of entry -->
10062         
10063         
10064
10065       <!-- end of kind -->
10066       </tbody>
10067       <tr><td colspan="6" class="kind">dynamic</td></tr>
10068
10069       <thead class="entries_header">
10070         <tr>
10071           <th class="th_name">Property Name</th>
10072           <th class="th_type">Type</th>
10073           <th class="th_description">Description</th>
10074           <th class="th_units">Units</th>
10075           <th class="th_range">Range</th>
10076           <th class="th_tags">Tags</th>
10077         </tr>
10078       </thead>
10079
10080       <tbody>
10081
10082         
10083
10084         
10085
10086         
10087
10088         
10089
10090                 
10091           <tr class="entry" id="dynamic_android.hotPixel.mode">
10092             <td class="entry_name
10093              " rowspan="3">
10094               android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10095             </td>
10096             <td class="entry_type">
10097                 <span class="entry_type_name entry_type_name_enum">byte</span>
10098
10099               <span class="entry_type_visibility"> [public]</span>
10100
10101
10102
10103
10104
10105                 <ul class="entry_type_enum">
10106                   <li>
10107                     <span class="entry_type_enum_name">OFF</span>
10108                     <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10109 <p>The frame rate must not be reduced relative to sensor raw output
10110 for this option.<wbr/></p>
10111 <p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
10112                   </li>
10113                   <li>
10114                     <span class="entry_type_enum_name">FAST</span>
10115                     <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10116 rate relative to sensor raw output.<wbr/></p>
10117 <p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
10118                   </li>
10119                   <li>
10120                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
10121                     <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10122 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10123 <p>The hotpixel map may be returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/></p></span>
10124                   </li>
10125                 </ul>
10126
10127             </td> <!-- entry_type -->
10128
10129             <td class="entry_description">
10130               <p>Operational mode for hot pixel correction.<wbr/></p>
10131             </td>
10132
10133             <td class="entry_units">
10134             </td>
10135
10136             <td class="entry_range">
10137               <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10138             </td>
10139
10140             <td class="entry_tags">
10141               <ul class="entry_tags">
10142                   <li><a href="#tag_V1">V1</a></li>
10143                   <li><a href="#tag_RAW">RAW</a></li>
10144               </ul>
10145             </td>
10146
10147           </tr>
10148           <tr class="entries_header">
10149             <th class="th_details" colspan="5">Details</th>
10150           </tr>
10151           <tr class="entry_cont">
10152             <td class="entry_details" colspan="5">
10153               <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10154 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10155 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10156             </td>
10157           </tr>
10158
10159
10160           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10161            <!-- end of entry -->
10162         
10163         
10164
10165       <!-- end of kind -->
10166       </tbody>
10167
10168   <!-- end of section -->
10169   <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr>
10170
10171
10172       <tr><td colspan="6" class="kind">controls</td></tr>
10173
10174       <thead class="entries_header">
10175         <tr>
10176           <th class="th_name">Property Name</th>
10177           <th class="th_type">Type</th>
10178           <th class="th_description">Description</th>
10179           <th class="th_units">Units</th>
10180           <th class="th_range">Range</th>
10181           <th class="th_tags">Tags</th>
10182         </tr>
10183       </thead>
10184
10185       <tbody>
10186
10187         
10188
10189         
10190
10191         
10192
10193         
10194
10195                 
10196           <tr class="entry" id="controls_android.jpeg.gpsLocation">
10197             <td class="entry_name
10198              " rowspan="3">
10199               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
10200             </td>
10201             <td class="entry_type">
10202                 <span class="entry_type_name">byte</span>
10203
10204               <span class="entry_type_visibility"> [public as location]</span>
10205
10206               <span class="entry_type_synthetic">[synthetic] </span>
10207
10208               <span class="entry_type_hwlevel">[legacy] </span>
10209
10210
10211
10212
10213             </td> <!-- entry_type -->
10214
10215             <td class="entry_description">
10216               <p>A location object to use when generating image GPS metadata.<wbr/></p>
10217             </td>
10218
10219             <td class="entry_units">
10220             </td>
10221
10222             <td class="entry_range">
10223             </td>
10224
10225             <td class="entry_tags">
10226             </td>
10227
10228           </tr>
10229           <tr class="entries_header">
10230             <th class="th_details" colspan="5">Details</th>
10231           </tr>
10232           <tr class="entry_cont">
10233             <td class="entry_details" colspan="5">
10234               <p>Setting a location object in a request will include the GPS coordinates of the location
10235 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
10236 viewed by anyone who receives the JPEG image.<wbr/></p>
10237             </td>
10238           </tr>
10239
10240
10241           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10242            <!-- end of entry -->
10243         
10244                 
10245           <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
10246             <td class="entry_name
10247              " rowspan="1">
10248               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
10249             </td>
10250             <td class="entry_type">
10251                 <span class="entry_type_name">double</span>
10252                 <span class="entry_type_container">x</span>
10253
10254                 <span class="entry_type_array">
10255                   3
10256                 </span>
10257               <span class="entry_type_visibility"> [hidden]</span>
10258
10259
10260               <span class="entry_type_hwlevel">[legacy] </span>
10261
10262
10263                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
10264
10265
10266             </td> <!-- entry_type -->
10267
10268             <td class="entry_description">
10269               <p>GPS coordinates to include in output JPEG
10270 EXIF.<wbr/></p>
10271             </td>
10272
10273             <td class="entry_units">
10274             </td>
10275
10276             <td class="entry_range">
10277               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
10278             </td>
10279
10280             <td class="entry_tags">
10281               <ul class="entry_tags">
10282                   <li><a href="#tag_BC">BC</a></li>
10283               </ul>
10284             </td>
10285
10286           </tr>
10287
10288
10289           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10290            <!-- end of entry -->
10291         
10292                 
10293           <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
10294             <td class="entry_name
10295              " rowspan="1">
10296               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
10297             </td>
10298             <td class="entry_type">
10299                 <span class="entry_type_name">byte</span>
10300
10301               <span class="entry_type_visibility"> [hidden as string]</span>
10302
10303
10304               <span class="entry_type_hwlevel">[legacy] </span>
10305
10306
10307
10308
10309             </td> <!-- entry_type -->
10310
10311             <td class="entry_description">
10312               <p>32 characters describing GPS algorithm to
10313 include in EXIF.<wbr/></p>
10314             </td>
10315
10316             <td class="entry_units">
10317               UTF-8 null-terminated string
10318             </td>
10319
10320             <td class="entry_range">
10321             </td>
10322
10323             <td class="entry_tags">
10324               <ul class="entry_tags">
10325                   <li><a href="#tag_BC">BC</a></li>
10326               </ul>
10327             </td>
10328
10329           </tr>
10330
10331
10332           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10333            <!-- end of entry -->
10334         
10335                 
10336           <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
10337             <td class="entry_name
10338              " rowspan="1">
10339               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
10340             </td>
10341             <td class="entry_type">
10342                 <span class="entry_type_name">int64</span>
10343
10344               <span class="entry_type_visibility"> [hidden]</span>
10345
10346
10347               <span class="entry_type_hwlevel">[legacy] </span>
10348
10349
10350
10351
10352             </td> <!-- entry_type -->
10353
10354             <td class="entry_description">
10355               <p>Time GPS fix was made to include in
10356 EXIF.<wbr/></p>
10357             </td>
10358
10359             <td class="entry_units">
10360               UTC in seconds since January 1,<wbr/> 1970
10361             </td>
10362
10363             <td class="entry_range">
10364             </td>
10365
10366             <td class="entry_tags">
10367               <ul class="entry_tags">
10368                   <li><a href="#tag_BC">BC</a></li>
10369               </ul>
10370             </td>
10371
10372           </tr>
10373
10374
10375           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10376            <!-- end of entry -->
10377         
10378                 
10379           <tr class="entry" id="controls_android.jpeg.orientation">
10380             <td class="entry_name
10381              " rowspan="3">
10382               android.<wbr/>jpeg.<wbr/>orientation
10383             </td>
10384             <td class="entry_type">
10385                 <span class="entry_type_name">int32</span>
10386
10387               <span class="entry_type_visibility"> [public]</span>
10388
10389
10390               <span class="entry_type_hwlevel">[legacy] </span>
10391
10392
10393
10394
10395             </td> <!-- entry_type -->
10396
10397             <td class="entry_description">
10398               <p>The orientation for a JPEG image.<wbr/></p>
10399             </td>
10400
10401             <td class="entry_units">
10402               Degrees in multiples of 90
10403             </td>
10404
10405             <td class="entry_range">
10406               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
10407             </td>
10408
10409             <td class="entry_tags">
10410               <ul class="entry_tags">
10411                   <li><a href="#tag_BC">BC</a></li>
10412               </ul>
10413             </td>
10414
10415           </tr>
10416           <tr class="entries_header">
10417             <th class="th_details" colspan="5">Details</th>
10418           </tr>
10419           <tr class="entry_cont">
10420             <td class="entry_details" colspan="5">
10421               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
10422 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
10423 upright.<wbr/></p>
10424 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
10425 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
10426 the thumbnail data will also be rotated.<wbr/></p>
10427 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
10428 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
10429 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
10430 sample code may be used:</p>
10431 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
10432     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
10433     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
10434
10435     //<wbr/> Round device orientation to a multiple of 90
10436     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
10437
10438     //<wbr/> Reverse device orientation for front-facing cameras
10439     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
10440     if (facingFront) deviceOrientation = -deviceOrientation;
10441
10442     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
10443     //<wbr/> the image upright relative to the device orientation
10444     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
10445
10446     return jpegOrientation;
10447 }
10448 </code></pre>
10449             </td>
10450           </tr>
10451
10452
10453           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10454            <!-- end of entry -->
10455         
10456                 
10457           <tr class="entry" id="controls_android.jpeg.quality">
10458             <td class="entry_name
10459              " rowspan="3">
10460               android.<wbr/>jpeg.<wbr/>quality
10461             </td>
10462             <td class="entry_type">
10463                 <span class="entry_type_name">byte</span>
10464
10465               <span class="entry_type_visibility"> [public]</span>
10466
10467
10468               <span class="entry_type_hwlevel">[legacy] </span>
10469
10470
10471
10472
10473             </td> <!-- entry_type -->
10474
10475             <td class="entry_description">
10476               <p>Compression quality of the final JPEG
10477 image.<wbr/></p>
10478             </td>
10479
10480             <td class="entry_units">
10481             </td>
10482
10483             <td class="entry_range">
10484               <p>1-100; larger is higher quality</p>
10485             </td>
10486
10487             <td class="entry_tags">
10488               <ul class="entry_tags">
10489                   <li><a href="#tag_BC">BC</a></li>
10490               </ul>
10491             </td>
10492
10493           </tr>
10494           <tr class="entries_header">
10495             <th class="th_details" colspan="5">Details</th>
10496           </tr>
10497           <tr class="entry_cont">
10498             <td class="entry_details" colspan="5">
10499               <p>85-95 is typical usage range.<wbr/></p>
10500             </td>
10501           </tr>
10502
10503
10504           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10505            <!-- end of entry -->
10506         
10507                 
10508           <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
10509             <td class="entry_name
10510              " rowspan="1">
10511               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
10512             </td>
10513             <td class="entry_type">
10514                 <span class="entry_type_name">byte</span>
10515
10516               <span class="entry_type_visibility"> [public]</span>
10517
10518
10519               <span class="entry_type_hwlevel">[legacy] </span>
10520
10521
10522
10523
10524             </td> <!-- entry_type -->
10525
10526             <td class="entry_description">
10527               <p>Compression quality of JPEG
10528 thumbnail.<wbr/></p>
10529             </td>
10530
10531             <td class="entry_units">
10532             </td>
10533
10534             <td class="entry_range">
10535               <p>1-100; larger is higher quality</p>
10536             </td>
10537
10538             <td class="entry_tags">
10539               <ul class="entry_tags">
10540                   <li><a href="#tag_BC">BC</a></li>
10541               </ul>
10542             </td>
10543
10544           </tr>
10545
10546
10547           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10548            <!-- end of entry -->
10549         
10550                 
10551           <tr class="entry" id="controls_android.jpeg.thumbnailSize">
10552             <td class="entry_name
10553              " rowspan="5">
10554               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
10555             </td>
10556             <td class="entry_type">
10557                 <span class="entry_type_name">int32</span>
10558                 <span class="entry_type_container">x</span>
10559
10560                 <span class="entry_type_array">
10561                   2
10562                 </span>
10563               <span class="entry_type_visibility"> [public as size]</span>
10564
10565
10566               <span class="entry_type_hwlevel">[legacy] </span>
10567
10568
10569
10570
10571             </td> <!-- entry_type -->
10572
10573             <td class="entry_description">
10574               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
10575             </td>
10576
10577             <td class="entry_units">
10578             </td>
10579
10580             <td class="entry_range">
10581               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
10582             </td>
10583
10584             <td class="entry_tags">
10585               <ul class="entry_tags">
10586                   <li><a href="#tag_BC">BC</a></li>
10587               </ul>
10588             </td>
10589
10590           </tr>
10591           <tr class="entries_header">
10592             <th class="th_details" colspan="5">Details</th>
10593           </tr>
10594           <tr class="entry_cont">
10595             <td class="entry_details" colspan="5">
10596               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
10597 but the captured JPEG will still be a valid image.<wbr/></p>
10598 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
10599 should have the same aspect ratio as the main JPEG output.<wbr/></p>
10600 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
10601 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
10602 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
10603 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
10604 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
10605 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
10606 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
10607 the camera device will handle thumbnail rotation in one of the following ways:</p>
10608 <ul>
10609 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
10610   and keep jpeg and thumbnail image data unrotated.<wbr/></li>
10611 <li>Rotate the jpeg and thumbnail image data and not set
10612   <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
10613   case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
10614   capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
10615   orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
10616   size.<wbr/></li>
10617 </ul>
10618             </td>
10619           </tr>
10620
10621           <tr class="entries_header">
10622             <th class="th_details" colspan="5">HAL Implementation Details</th>
10623           </tr>
10624           <tr class="entry_cont">
10625             <td class="entry_details" colspan="5">
10626               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
10627 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
10628 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
10629 thumbnail image cropping.<wbr/></p>
10630             </td>
10631           </tr>
10632
10633           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10634            <!-- end of entry -->
10635         
10636         
10637
10638       <!-- end of kind -->
10639       </tbody>
10640       <tr><td colspan="6" class="kind">static</td></tr>
10641
10642       <thead class="entries_header">
10643         <tr>
10644           <th class="th_name">Property Name</th>
10645           <th class="th_type">Type</th>
10646           <th class="th_description">Description</th>
10647           <th class="th_units">Units</th>
10648           <th class="th_range">Range</th>
10649           <th class="th_tags">Tags</th>
10650         </tr>
10651       </thead>
10652
10653       <tbody>
10654
10655         
10656
10657         
10658
10659         
10660
10661         
10662
10663                 
10664           <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
10665             <td class="entry_name
10666              " rowspan="3">
10667               android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
10668             </td>
10669             <td class="entry_type">
10670                 <span class="entry_type_name">int32</span>
10671                 <span class="entry_type_container">x</span>
10672
10673                 <span class="entry_type_array">
10674                   2 x n
10675                 </span>
10676               <span class="entry_type_visibility"> [public as size]</span>
10677
10678
10679               <span class="entry_type_hwlevel">[legacy] </span>
10680
10681
10682
10683
10684             </td> <!-- entry_type -->
10685
10686             <td class="entry_description">
10687               <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
10688 camera device.<wbr/></p>
10689             </td>
10690
10691             <td class="entry_units">
10692             </td>
10693
10694             <td class="entry_range">
10695             </td>
10696
10697             <td class="entry_tags">
10698               <ul class="entry_tags">
10699                   <li><a href="#tag_BC">BC</a></li>
10700               </ul>
10701             </td>
10702
10703           </tr>
10704           <tr class="entries_header">
10705             <th class="th_details" colspan="5">Details</th>
10706           </tr>
10707           <tr class="entry_cont">
10708             <td class="entry_details" colspan="5">
10709               <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
10710 thumbnail should be generated.<wbr/></p>
10711 <p>Below condiditions will be satisfied for this size list:</p>
10712 <ul>
10713 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
10714 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
10715 <li>The aspect ratio of the largest thumbnail size will be same as the
10716 aspect ratio of largest JPEG output size in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
10717 The largest size is defined as the size that has the largest pixel area
10718 in a given size list.<wbr/></li>
10719 <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
10720 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
10721 and vice versa.<wbr/></li>
10722 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
10723 </ul>
10724             </td>
10725           </tr>
10726
10727
10728           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10729            <!-- end of entry -->
10730         
10731                 
10732           <tr class="entry" id="static_android.jpeg.maxSize">
10733             <td class="entry_name
10734              " rowspan="3">
10735               android.<wbr/>jpeg.<wbr/>max<wbr/>Size
10736             </td>
10737             <td class="entry_type">
10738                 <span class="entry_type_name">int32</span>
10739
10740               <span class="entry_type_visibility"> [system]</span>
10741
10742
10743
10744
10745
10746
10747             </td> <!-- entry_type -->
10748
10749             <td class="entry_description">
10750               <p>Maximum size in bytes for the compressed
10751 JPEG buffer</p>
10752             </td>
10753
10754             <td class="entry_units">
10755             </td>
10756
10757             <td class="entry_range">
10758               <p>Must be large enough to fit any JPEG produced by
10759 the camera</p>
10760             </td>
10761
10762             <td class="entry_tags">
10763             </td>
10764
10765           </tr>
10766           <tr class="entries_header">
10767             <th class="th_details" colspan="5">Details</th>
10768           </tr>
10769           <tr class="entry_cont">
10770             <td class="entry_details" colspan="5">
10771               <p>This is used for sizing the gralloc buffers for
10772 JPEG</p>
10773             </td>
10774           </tr>
10775
10776
10777           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10778            <!-- end of entry -->
10779         
10780         
10781
10782       <!-- end of kind -->
10783       </tbody>
10784       <tr><td colspan="6" class="kind">dynamic</td></tr>
10785
10786       <thead class="entries_header">
10787         <tr>
10788           <th class="th_name">Property Name</th>
10789           <th class="th_type">Type</th>
10790           <th class="th_description">Description</th>
10791           <th class="th_units">Units</th>
10792           <th class="th_range">Range</th>
10793           <th class="th_tags">Tags</th>
10794         </tr>
10795       </thead>
10796
10797       <tbody>
10798
10799         
10800
10801         
10802
10803         
10804
10805         
10806
10807                 
10808           <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
10809             <td class="entry_name
10810              " rowspan="3">
10811               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
10812             </td>
10813             <td class="entry_type">
10814                 <span class="entry_type_name">byte</span>
10815
10816               <span class="entry_type_visibility"> [public as location]</span>
10817
10818               <span class="entry_type_synthetic">[synthetic] </span>
10819
10820               <span class="entry_type_hwlevel">[legacy] </span>
10821
10822
10823
10824
10825             </td> <!-- entry_type -->
10826
10827             <td class="entry_description">
10828               <p>A location object to use when generating image GPS metadata.<wbr/></p>
10829             </td>
10830
10831             <td class="entry_units">
10832             </td>
10833
10834             <td class="entry_range">
10835             </td>
10836
10837             <td class="entry_tags">
10838             </td>
10839
10840           </tr>
10841           <tr class="entries_header">
10842             <th class="th_details" colspan="5">Details</th>
10843           </tr>
10844           <tr class="entry_cont">
10845             <td class="entry_details" colspan="5">
10846               <p>Setting a location object in a request will include the GPS coordinates of the location
10847 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
10848 viewed by anyone who receives the JPEG image.<wbr/></p>
10849             </td>
10850           </tr>
10851
10852
10853           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10854            <!-- end of entry -->
10855         
10856                 
10857           <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
10858             <td class="entry_name
10859              " rowspan="1">
10860               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
10861             </td>
10862             <td class="entry_type">
10863                 <span class="entry_type_name">double</span>
10864                 <span class="entry_type_container">x</span>
10865
10866                 <span class="entry_type_array">
10867                   3
10868                 </span>
10869               <span class="entry_type_visibility"> [hidden]</span>
10870
10871
10872               <span class="entry_type_hwlevel">[legacy] </span>
10873
10874
10875                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
10876
10877
10878             </td> <!-- entry_type -->
10879
10880             <td class="entry_description">
10881               <p>GPS coordinates to include in output JPEG
10882 EXIF.<wbr/></p>
10883             </td>
10884
10885             <td class="entry_units">
10886             </td>
10887
10888             <td class="entry_range">
10889               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
10890             </td>
10891
10892             <td class="entry_tags">
10893               <ul class="entry_tags">
10894                   <li><a href="#tag_BC">BC</a></li>
10895               </ul>
10896             </td>
10897
10898           </tr>
10899
10900
10901           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10902            <!-- end of entry -->
10903         
10904                 
10905           <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
10906             <td class="entry_name
10907              " rowspan="1">
10908               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
10909             </td>
10910             <td class="entry_type">
10911                 <span class="entry_type_name">byte</span>
10912
10913               <span class="entry_type_visibility"> [hidden as string]</span>
10914
10915
10916               <span class="entry_type_hwlevel">[legacy] </span>
10917
10918
10919
10920
10921             </td> <!-- entry_type -->
10922
10923             <td class="entry_description">
10924               <p>32 characters describing GPS algorithm to
10925 include in EXIF.<wbr/></p>
10926             </td>
10927
10928             <td class="entry_units">
10929               UTF-8 null-terminated string
10930             </td>
10931
10932             <td class="entry_range">
10933             </td>
10934
10935             <td class="entry_tags">
10936               <ul class="entry_tags">
10937                   <li><a href="#tag_BC">BC</a></li>
10938               </ul>
10939             </td>
10940
10941           </tr>
10942
10943
10944           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10945            <!-- end of entry -->
10946         
10947                 
10948           <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
10949             <td class="entry_name
10950              " rowspan="1">
10951               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
10952             </td>
10953             <td class="entry_type">
10954                 <span class="entry_type_name">int64</span>
10955
10956               <span class="entry_type_visibility"> [hidden]</span>
10957
10958
10959               <span class="entry_type_hwlevel">[legacy] </span>
10960
10961
10962
10963
10964             </td> <!-- entry_type -->
10965
10966             <td class="entry_description">
10967               <p>Time GPS fix was made to include in
10968 EXIF.<wbr/></p>
10969             </td>
10970
10971             <td class="entry_units">
10972               UTC in seconds since January 1,<wbr/> 1970
10973             </td>
10974
10975             <td class="entry_range">
10976             </td>
10977
10978             <td class="entry_tags">
10979               <ul class="entry_tags">
10980                   <li><a href="#tag_BC">BC</a></li>
10981               </ul>
10982             </td>
10983
10984           </tr>
10985
10986
10987           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10988            <!-- end of entry -->
10989         
10990                 
10991           <tr class="entry" id="dynamic_android.jpeg.orientation">
10992             <td class="entry_name
10993              " rowspan="3">
10994               android.<wbr/>jpeg.<wbr/>orientation
10995             </td>
10996             <td class="entry_type">
10997                 <span class="entry_type_name">int32</span>
10998
10999               <span class="entry_type_visibility"> [public]</span>
11000
11001
11002               <span class="entry_type_hwlevel">[legacy] </span>
11003
11004
11005
11006
11007             </td> <!-- entry_type -->
11008
11009             <td class="entry_description">
11010               <p>The orientation for a JPEG image.<wbr/></p>
11011             </td>
11012
11013             <td class="entry_units">
11014               Degrees in multiples of 90
11015             </td>
11016
11017             <td class="entry_range">
11018               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11019             </td>
11020
11021             <td class="entry_tags">
11022               <ul class="entry_tags">
11023                   <li><a href="#tag_BC">BC</a></li>
11024               </ul>
11025             </td>
11026
11027           </tr>
11028           <tr class="entries_header">
11029             <th class="th_details" colspan="5">Details</th>
11030           </tr>
11031           <tr class="entry_cont">
11032             <td class="entry_details" colspan="5">
11033               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11034 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11035 upright.<wbr/></p>
11036 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11037 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11038 the thumbnail data will also be rotated.<wbr/></p>
11039 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11040 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11041 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
11042 sample code may be used:</p>
11043 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11044     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11045     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11046
11047     //<wbr/> Round device orientation to a multiple of 90
11048     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11049
11050     //<wbr/> Reverse device orientation for front-facing cameras
11051     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11052     if (facingFront) deviceOrientation = -deviceOrientation;
11053
11054     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11055     //<wbr/> the image upright relative to the device orientation
11056     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11057
11058     return jpegOrientation;
11059 }
11060 </code></pre>
11061             </td>
11062           </tr>
11063
11064
11065           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11066            <!-- end of entry -->
11067         
11068                 
11069           <tr class="entry" id="dynamic_android.jpeg.quality">
11070             <td class="entry_name
11071              " rowspan="3">
11072               android.<wbr/>jpeg.<wbr/>quality
11073             </td>
11074             <td class="entry_type">
11075                 <span class="entry_type_name">byte</span>
11076
11077               <span class="entry_type_visibility"> [public]</span>
11078
11079
11080               <span class="entry_type_hwlevel">[legacy] </span>
11081
11082
11083
11084
11085             </td> <!-- entry_type -->
11086
11087             <td class="entry_description">
11088               <p>Compression quality of the final JPEG
11089 image.<wbr/></p>
11090             </td>
11091
11092             <td class="entry_units">
11093             </td>
11094
11095             <td class="entry_range">
11096               <p>1-100; larger is higher quality</p>
11097             </td>
11098
11099             <td class="entry_tags">
11100               <ul class="entry_tags">
11101                   <li><a href="#tag_BC">BC</a></li>
11102               </ul>
11103             </td>
11104
11105           </tr>
11106           <tr class="entries_header">
11107             <th class="th_details" colspan="5">Details</th>
11108           </tr>
11109           <tr class="entry_cont">
11110             <td class="entry_details" colspan="5">
11111               <p>85-95 is typical usage range.<wbr/></p>
11112             </td>
11113           </tr>
11114
11115
11116           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11117            <!-- end of entry -->
11118         
11119                 
11120           <tr class="entry" id="dynamic_android.jpeg.size">
11121             <td class="entry_name
11122              " rowspan="3">
11123               android.<wbr/>jpeg.<wbr/>size
11124             </td>
11125             <td class="entry_type">
11126                 <span class="entry_type_name">int32</span>
11127
11128               <span class="entry_type_visibility"> [system]</span>
11129
11130
11131
11132
11133
11134
11135             </td> <!-- entry_type -->
11136
11137             <td class="entry_description">
11138               <p>The size of the compressed JPEG image,<wbr/> in
11139 bytes</p>
11140             </td>
11141
11142             <td class="entry_units">
11143             </td>
11144
11145             <td class="entry_range">
11146               <p>&gt;= 0</p>
11147             </td>
11148
11149             <td class="entry_tags">
11150               <ul class="entry_tags">
11151                   <li><a href="#tag_FUTURE">FUTURE</a></li>
11152               </ul>
11153             </td>
11154
11155           </tr>
11156           <tr class="entries_header">
11157             <th class="th_details" colspan="5">Details</th>
11158           </tr>
11159           <tr class="entry_cont">
11160             <td class="entry_details" colspan="5">
11161               <p>If no JPEG output is produced for the request,<wbr/>
11162 this must be 0.<wbr/></p>
11163 <p>Otherwise,<wbr/> this describes the real size of the compressed
11164 JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
11165 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
11166 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
11167 the JPEG stream will be 1000000 bytes,<wbr/> of which the first
11168 500000 make up the real data.<wbr/></p>
11169             </td>
11170           </tr>
11171
11172
11173           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11174            <!-- end of entry -->
11175         
11176                 
11177           <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
11178             <td class="entry_name
11179              " rowspan="1">
11180               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11181             </td>
11182             <td class="entry_type">
11183                 <span class="entry_type_name">byte</span>
11184
11185               <span class="entry_type_visibility"> [public]</span>
11186
11187
11188               <span class="entry_type_hwlevel">[legacy] </span>
11189
11190
11191
11192
11193             </td> <!-- entry_type -->
11194
11195             <td class="entry_description">
11196               <p>Compression quality of JPEG
11197 thumbnail.<wbr/></p>
11198             </td>
11199
11200             <td class="entry_units">
11201             </td>
11202
11203             <td class="entry_range">
11204               <p>1-100; larger is higher quality</p>
11205             </td>
11206
11207             <td class="entry_tags">
11208               <ul class="entry_tags">
11209                   <li><a href="#tag_BC">BC</a></li>
11210               </ul>
11211             </td>
11212
11213           </tr>
11214
11215
11216           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11217            <!-- end of entry -->
11218         
11219                 
11220           <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
11221             <td class="entry_name
11222              " rowspan="5">
11223               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11224             </td>
11225             <td class="entry_type">
11226                 <span class="entry_type_name">int32</span>
11227                 <span class="entry_type_container">x</span>
11228
11229                 <span class="entry_type_array">
11230                   2
11231                 </span>
11232               <span class="entry_type_visibility"> [public as size]</span>
11233
11234
11235               <span class="entry_type_hwlevel">[legacy] </span>
11236
11237
11238
11239
11240             </td> <!-- entry_type -->
11241
11242             <td class="entry_description">
11243               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11244             </td>
11245
11246             <td class="entry_units">
11247             </td>
11248
11249             <td class="entry_range">
11250               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11251             </td>
11252
11253             <td class="entry_tags">
11254               <ul class="entry_tags">
11255                   <li><a href="#tag_BC">BC</a></li>
11256               </ul>
11257             </td>
11258
11259           </tr>
11260           <tr class="entries_header">
11261             <th class="th_details" colspan="5">Details</th>
11262           </tr>
11263           <tr class="entry_cont">
11264             <td class="entry_details" colspan="5">
11265               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11266 but the captured JPEG will still be a valid image.<wbr/></p>
11267 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11268 should have the same aspect ratio as the main JPEG output.<wbr/></p>
11269 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11270 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11271 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
11272 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11273 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11274 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11275 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11276 the camera device will handle thumbnail rotation in one of the following ways:</p>
11277 <ul>
11278 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11279   and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11280 <li>Rotate the jpeg and thumbnail image data and not set
11281   <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11282   case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11283   capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11284   orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11285   size.<wbr/></li>
11286 </ul>
11287             </td>
11288           </tr>
11289
11290           <tr class="entries_header">
11291             <th class="th_details" colspan="5">HAL Implementation Details</th>
11292           </tr>
11293           <tr class="entry_cont">
11294             <td class="entry_details" colspan="5">
11295               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11296 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11297 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11298 thumbnail image cropping.<wbr/></p>
11299             </td>
11300           </tr>
11301
11302           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11303            <!-- end of entry -->
11304         
11305         
11306
11307       <!-- end of kind -->
11308       </tbody>
11309
11310   <!-- end of section -->
11311   <tr><td colspan="6" id="section_lens" class="section">lens</td></tr>
11312
11313
11314       <tr><td colspan="6" class="kind">controls</td></tr>
11315
11316       <thead class="entries_header">
11317         <tr>
11318           <th class="th_name">Property Name</th>
11319           <th class="th_type">Type</th>
11320           <th class="th_description">Description</th>
11321           <th class="th_units">Units</th>
11322           <th class="th_range">Range</th>
11323           <th class="th_tags">Tags</th>
11324         </tr>
11325       </thead>
11326
11327       <tbody>
11328
11329         
11330
11331         
11332
11333         
11334
11335         
11336
11337                 
11338           <tr class="entry" id="controls_android.lens.aperture">
11339             <td class="entry_name
11340              " rowspan="3">
11341               android.<wbr/>lens.<wbr/>aperture
11342             </td>
11343             <td class="entry_type">
11344                 <span class="entry_type_name">float</span>
11345
11346               <span class="entry_type_visibility"> [public]</span>
11347
11348
11349               <span class="entry_type_hwlevel">[full] </span>
11350
11351
11352
11353
11354             </td> <!-- entry_type -->
11355
11356             <td class="entry_description">
11357               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
11358 effective aperture diameter.<wbr/></p>
11359             </td>
11360
11361             <td class="entry_units">
11362               The f-number (f/<wbr/>N)
11363             </td>
11364
11365             <td class="entry_range">
11366               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
11367             </td>
11368
11369             <td class="entry_tags">
11370               <ul class="entry_tags">
11371                   <li><a href="#tag_V1">V1</a></li>
11372               </ul>
11373             </td>
11374
11375           </tr>
11376           <tr class="entries_header">
11377             <th class="th_details" colspan="5">Details</th>
11378           </tr>
11379           <tr class="entry_cont">
11380             <td class="entry_details" colspan="5">
11381               <p>Setting this value is only supported on the camera devices that have a variable
11382 aperture lens.<wbr/></p>
11383 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
11384 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
11385 <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>
11386 to achieve manual exposure control.<wbr/></p>
11387 <p>The requested aperture value may take several frames to reach the
11388 requested value; the camera device will report the current (intermediate)
11389 aperture size in capture result metadata while the aperture is changing.<wbr/>
11390 While 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>
11391 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
11392 the ON modes,<wbr/> this will be overridden by the camera device
11393 auto-exposure algorithm,<wbr/> the overridden values are then provided
11394 back to the user in the corresponding result.<wbr/></p>
11395             </td>
11396           </tr>
11397
11398
11399           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11400            <!-- end of entry -->
11401         
11402                 
11403           <tr class="entry" id="controls_android.lens.filterDensity">
11404             <td class="entry_name
11405              " rowspan="3">
11406               android.<wbr/>lens.<wbr/>filter<wbr/>Density
11407             </td>
11408             <td class="entry_type">
11409                 <span class="entry_type_name">float</span>
11410
11411               <span class="entry_type_visibility"> [public]</span>
11412
11413
11414               <span class="entry_type_hwlevel">[full] </span>
11415
11416
11417
11418
11419             </td> <!-- entry_type -->
11420
11421             <td class="entry_description">
11422               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
11423             </td>
11424
11425             <td class="entry_units">
11426               Exposure Value (EV)
11427             </td>
11428
11429             <td class="entry_range">
11430               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
11431             </td>
11432
11433             <td class="entry_tags">
11434               <ul class="entry_tags">
11435                   <li><a href="#tag_V1">V1</a></li>
11436               </ul>
11437             </td>
11438
11439           </tr>
11440           <tr class="entries_header">
11441             <th class="th_details" colspan="5">Details</th>
11442           </tr>
11443           <tr class="entry_cont">
11444             <td class="entry_details" colspan="5">
11445               <p>This control will not be supported on most camera devices.<wbr/></p>
11446 <p>Lens filters are typically used to lower the amount of light the
11447 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
11448 step is the standard logarithmic representation,<wbr/> which are
11449 non-negative,<wbr/> and inversely proportional to the amount of light
11450 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
11451 in no reduction of the incoming light,<wbr/> and setting this to 2 would
11452 mean that the filter is set to reduce incoming light by two stops
11453 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
11454 <p>It may take several frames before the lens filter density changes
11455 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
11456 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11457             </td>
11458           </tr>
11459
11460
11461           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11462            <!-- end of entry -->
11463         
11464                 
11465           <tr class="entry" id="controls_android.lens.focalLength">
11466             <td class="entry_name
11467              " rowspan="3">
11468               android.<wbr/>lens.<wbr/>focal<wbr/>Length
11469             </td>
11470             <td class="entry_type">
11471                 <span class="entry_type_name">float</span>
11472
11473               <span class="entry_type_visibility"> [public]</span>
11474
11475
11476               <span class="entry_type_hwlevel">[legacy] </span>
11477
11478
11479
11480
11481             </td> <!-- entry_type -->
11482
11483             <td class="entry_description">
11484               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
11485             </td>
11486
11487             <td class="entry_units">
11488               Millimeters
11489             </td>
11490
11491             <td class="entry_range">
11492               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
11493             </td>
11494
11495             <td class="entry_tags">
11496               <ul class="entry_tags">
11497                   <li><a href="#tag_V1">V1</a></li>
11498               </ul>
11499             </td>
11500
11501           </tr>
11502           <tr class="entries_header">
11503             <th class="th_details" colspan="5">Details</th>
11504           </tr>
11505           <tr class="entry_cont">
11506             <td class="entry_details" colspan="5">
11507               <p>This setting controls the physical focal length of the camera
11508 device's lens.<wbr/> Changing the focal length changes the field of
11509 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
11510 <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
11511 setting won't be applied instantaneously,<wbr/> and it may take several
11512 frames before the lens can change to the requested focal length.<wbr/>
11513 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
11514 be set to MOVING.<wbr/></p>
11515 <p>Optical zoom will not be supported on most devices.<wbr/></p>
11516             </td>
11517           </tr>
11518
11519
11520           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11521            <!-- end of entry -->
11522         
11523                 
11524           <tr class="entry" id="controls_android.lens.focusDistance">
11525             <td class="entry_name
11526              " rowspan="3">
11527               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
11528             </td>
11529             <td class="entry_type">
11530                 <span class="entry_type_name">float</span>
11531
11532               <span class="entry_type_visibility"> [public]</span>
11533
11534
11535               <span class="entry_type_hwlevel">[full] </span>
11536
11537
11538
11539
11540             </td> <!-- entry_type -->
11541
11542             <td class="entry_description">
11543               <p>Desired distance to plane of sharpest focus,<wbr/>
11544 measured from frontmost surface of the lens.<wbr/></p>
11545             </td>
11546
11547             <td class="entry_units">
11548               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11549             </td>
11550
11551             <td class="entry_range">
11552               <p>&gt;= 0</p>
11553             </td>
11554
11555             <td class="entry_tags">
11556               <ul class="entry_tags">
11557                   <li><a href="#tag_BC">BC</a></li>
11558                   <li><a href="#tag_V1">V1</a></li>
11559               </ul>
11560             </td>
11561
11562           </tr>
11563           <tr class="entries_header">
11564             <th class="th_details" colspan="5">Details</th>
11565           </tr>
11566           <tr class="entry_cont">
11567             <td class="entry_details" colspan="5">
11568               <p>This control can be used for setting manual focus,<wbr/> on devices that support
11569 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
11570 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
11571 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
11572 <code>[0.<wbr/>0f,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code>.<wbr/></p>
11573 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
11574 instantaneously,<wbr/> and it may take several frames before the lens
11575 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
11576 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11577 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
11578 for infinity focus.<wbr/></p>
11579             </td>
11580           </tr>
11581
11582
11583           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11584            <!-- end of entry -->
11585         
11586                 
11587           <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
11588             <td class="entry_name
11589              " rowspan="3">
11590               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
11591             </td>
11592             <td class="entry_type">
11593                 <span class="entry_type_name entry_type_name_enum">byte</span>
11594
11595               <span class="entry_type_visibility"> [public]</span>
11596
11597
11598               <span class="entry_type_hwlevel">[limited] </span>
11599
11600
11601
11602                 <ul class="entry_type_enum">
11603                   <li>
11604                     <span class="entry_type_enum_name">OFF</span>
11605                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
11606                   </li>
11607                   <li>
11608                     <span class="entry_type_enum_name">ON</span>
11609                     <span class="entry_type_enum_optional">[optional]</span>
11610                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
11611                   </li>
11612                 </ul>
11613
11614             </td> <!-- entry_type -->
11615
11616             <td class="entry_description">
11617               <p>Sets whether the camera device uses optical image stabilization (OIS)
11618 when capturing images.<wbr/></p>
11619             </td>
11620
11621             <td class="entry_units">
11622             </td>
11623
11624             <td class="entry_range">
11625               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
11626             </td>
11627
11628             <td class="entry_tags">
11629               <ul class="entry_tags">
11630                   <li><a href="#tag_V1">V1</a></li>
11631               </ul>
11632             </td>
11633
11634           </tr>
11635           <tr class="entries_header">
11636             <th class="th_details" colspan="5">Details</th>
11637           </tr>
11638           <tr class="entry_cont">
11639             <td class="entry_details" colspan="5">
11640               <p>OIS is used to compensate for motion blur due to small
11641 movements of the camera during capture.<wbr/> Unlike digital image
11642 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
11643 makes use of mechanical elements to stabilize the camera
11644 sensor,<wbr/> and thus allows for longer exposure times before
11645 camera shake becomes apparent.<wbr/></p>
11646 <p>Switching between different optical stabilization modes may take several
11647 frames to initialize,<wbr/> the camera device will report the current mode in
11648 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
11649 optical stabilization modes in the first several capture results may still
11650 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
11651 <p>If a camera device supports both OIS and digital image stabilization
11652 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
11653 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
11654 <p>Not all devices will support OIS; see
11655 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
11656 available controls.<wbr/></p>
11657             </td>
11658           </tr>
11659
11660
11661           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11662            <!-- end of entry -->
11663         
11664         
11665
11666       <!-- end of kind -->
11667       </tbody>
11668       <tr><td colspan="6" class="kind">static</td></tr>
11669
11670       <thead class="entries_header">
11671         <tr>
11672           <th class="th_name">Property Name</th>
11673           <th class="th_type">Type</th>
11674           <th class="th_description">Description</th>
11675           <th class="th_units">Units</th>
11676           <th class="th_range">Range</th>
11677           <th class="th_tags">Tags</th>
11678         </tr>
11679       </thead>
11680
11681       <tbody>
11682
11683         
11684
11685         
11686
11687         
11688
11689         
11690                 
11691             
11692
11693                 
11694           <tr class="entry" id="static_android.lens.info.availableApertures">
11695             <td class="entry_name
11696              " rowspan="3">
11697               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
11698             </td>
11699             <td class="entry_type">
11700                 <span class="entry_type_name">float</span>
11701                 <span class="entry_type_container">x</span>
11702
11703                 <span class="entry_type_array">
11704                   n
11705                 </span>
11706               <span class="entry_type_visibility"> [public]</span>
11707
11708
11709               <span class="entry_type_hwlevel">[full] </span>
11710
11711
11712
11713
11714             </td> <!-- entry_type -->
11715
11716             <td class="entry_description">
11717               <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
11718 supported by this camera device.<wbr/></p>
11719             </td>
11720
11721             <td class="entry_units">
11722               The aperture f-number
11723             </td>
11724
11725             <td class="entry_range">
11726             </td>
11727
11728             <td class="entry_tags">
11729               <ul class="entry_tags">
11730                   <li><a href="#tag_V1">V1</a></li>
11731               </ul>
11732             </td>
11733
11734           </tr>
11735           <tr class="entries_header">
11736             <th class="th_details" colspan="5">Details</th>
11737           </tr>
11738           <tr class="entry_cont">
11739             <td class="entry_details" colspan="5">
11740               <p>If the camera device doesn't support a variable lens aperture,<wbr/>
11741 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
11742 <p>If the camera device supports a variable aperture,<wbr/> the aperture values
11743 in this list will be sorted in ascending order.<wbr/></p>
11744             </td>
11745           </tr>
11746
11747
11748           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11749            <!-- end of entry -->
11750         
11751                 
11752           <tr class="entry" id="static_android.lens.info.availableFilterDensities">
11753             <td class="entry_name
11754              " rowspan="3">
11755               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
11756             </td>
11757             <td class="entry_type">
11758                 <span class="entry_type_name">float</span>
11759                 <span class="entry_type_container">x</span>
11760
11761                 <span class="entry_type_array">
11762                   n
11763                 </span>
11764               <span class="entry_type_visibility"> [public]</span>
11765
11766
11767               <span class="entry_type_hwlevel">[full] </span>
11768
11769
11770
11771
11772             </td> <!-- entry_type -->
11773
11774             <td class="entry_description">
11775               <p>List of neutral density filter values for
11776 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
11777             </td>
11778
11779             <td class="entry_units">
11780               Exposure value (EV)
11781             </td>
11782
11783             <td class="entry_range">
11784               <p>Values are &gt;= 0</p>
11785             </td>
11786
11787             <td class="entry_tags">
11788               <ul class="entry_tags">
11789                   <li><a href="#tag_V1">V1</a></li>
11790               </ul>
11791             </td>
11792
11793           </tr>
11794           <tr class="entries_header">
11795             <th class="th_details" colspan="5">Details</th>
11796           </tr>
11797           <tr class="entry_cont">
11798             <td class="entry_details" colspan="5">
11799               <p>If a neutral density filter is not supported by this camera device,<wbr/>
11800 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
11801 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
11802             </td>
11803           </tr>
11804
11805
11806           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11807            <!-- end of entry -->
11808         
11809                 
11810           <tr class="entry" id="static_android.lens.info.availableFocalLengths">
11811             <td class="entry_name
11812              " rowspan="3">
11813               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
11814             </td>
11815             <td class="entry_type">
11816                 <span class="entry_type_name">float</span>
11817                 <span class="entry_type_container">x</span>
11818
11819                 <span class="entry_type_array">
11820                   n
11821                 </span>
11822               <span class="entry_type_visibility"> [public]</span>
11823
11824
11825               <span class="entry_type_hwlevel">[legacy] </span>
11826
11827
11828                 <div class="entry_type_notes">The list of available focal lengths</div>
11829
11830
11831             </td> <!-- entry_type -->
11832
11833             <td class="entry_description">
11834               <p>List of focal lengths for <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a> that are supported by this camera
11835 device.<wbr/></p>
11836             </td>
11837
11838             <td class="entry_units">
11839               Millimeters
11840             </td>
11841
11842             <td class="entry_range">
11843               <p>Values are &gt; 0</p>
11844             </td>
11845
11846             <td class="entry_tags">
11847               <ul class="entry_tags">
11848                   <li><a href="#tag_BC">BC</a></li>
11849                   <li><a href="#tag_V1">V1</a></li>
11850               </ul>
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>If optical zoom is not supported,<wbr/> this list will only contain
11860 a single value corresponding to the fixed focal length of the
11861 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
11862 by the camera device,<wbr/> in ascending order.<wbr/></p>
11863             </td>
11864           </tr>
11865
11866
11867           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11868            <!-- end of entry -->
11869         
11870                 
11871           <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
11872             <td class="entry_name
11873              " rowspan="3">
11874               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
11875             </td>
11876             <td class="entry_type">
11877                 <span class="entry_type_name">byte</span>
11878                 <span class="entry_type_container">x</span>
11879
11880                 <span class="entry_type_array">
11881                   n
11882                 </span>
11883               <span class="entry_type_visibility"> [public as enumList]</span>
11884
11885
11886               <span class="entry_type_hwlevel">[limited] </span>
11887
11888
11889                 <div class="entry_type_notes">list of enums</div>
11890
11891
11892             </td> <!-- entry_type -->
11893
11894             <td class="entry_description">
11895               <p>List of optical image stabilization (OIS) modes for
11896 <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> that are supported by this camera device.<wbr/></p>
11897             </td>
11898
11899             <td class="entry_units">
11900             </td>
11901
11902             <td class="entry_range">
11903               <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
11904             </td>
11905
11906             <td class="entry_tags">
11907               <ul class="entry_tags">
11908                   <li><a href="#tag_V1">V1</a></li>
11909               </ul>
11910             </td>
11911
11912           </tr>
11913           <tr class="entries_header">
11914             <th class="th_details" colspan="5">Details</th>
11915           </tr>
11916           <tr class="entry_cont">
11917             <td class="entry_details" colspan="5">
11918               <p>If OIS is not supported by a given camera device,<wbr/> this list will
11919 contain only OFF.<wbr/></p>
11920             </td>
11921           </tr>
11922
11923
11924           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11925            <!-- end of entry -->
11926         
11927                 
11928           <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
11929             <td class="entry_name
11930              " rowspan="3">
11931               android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
11932             </td>
11933             <td class="entry_type">
11934                 <span class="entry_type_name">float</span>
11935
11936               <span class="entry_type_visibility"> [public]</span>
11937
11938
11939               <span class="entry_type_hwlevel">[limited] </span>
11940
11941
11942
11943
11944             </td> <!-- entry_type -->
11945
11946             <td class="entry_description">
11947               <p>Hyperfocal distance for this lens.<wbr/></p>
11948             </td>
11949
11950             <td class="entry_units">
11951               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11952             </td>
11953
11954             <td class="entry_range">
11955               <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
11956 within <code>(0.<wbr/>0f,<wbr/> <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>]</code></p>
11957             </td>
11958
11959             <td class="entry_tags">
11960             </td>
11961
11962           </tr>
11963           <tr class="entries_header">
11964             <th class="th_details" colspan="5">Details</th>
11965           </tr>
11966           <tr class="entry_cont">
11967             <td class="entry_details" colspan="5">
11968               <p>If the lens is not fixed focus,<wbr/> the camera device will report this
11969 field 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>
11970             </td>
11971           </tr>
11972
11973
11974           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11975            <!-- end of entry -->
11976         
11977                 
11978           <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
11979             <td class="entry_name
11980              " rowspan="5">
11981               android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
11982             </td>
11983             <td class="entry_type">
11984                 <span class="entry_type_name">float</span>
11985
11986               <span class="entry_type_visibility"> [public]</span>
11987
11988
11989               <span class="entry_type_hwlevel">[limited] </span>
11990
11991
11992
11993
11994             </td> <!-- entry_type -->
11995
11996             <td class="entry_description">
11997               <p>Shortest distance from frontmost surface
11998 of the lens that can be brought into sharp focus.<wbr/></p>
11999             </td>
12000
12001             <td class="entry_units">
12002               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12003             </td>
12004
12005             <td class="entry_range">
12006               <p>&gt;= 0</p>
12007             </td>
12008
12009             <td class="entry_tags">
12010               <ul class="entry_tags">
12011                   <li><a href="#tag_V1">V1</a></li>
12012               </ul>
12013             </td>
12014
12015           </tr>
12016           <tr class="entries_header">
12017             <th class="th_details" colspan="5">Details</th>
12018           </tr>
12019           <tr class="entry_cont">
12020             <td class="entry_details" colspan="5">
12021               <p>If the lens is fixed-focus,<wbr/> this will be
12022 0.<wbr/></p>
12023             </td>
12024           </tr>
12025
12026           <tr class="entries_header">
12027             <th class="th_details" colspan="5">HAL Implementation Details</th>
12028           </tr>
12029           <tr class="entry_cont">
12030             <td class="entry_details" colspan="5">
12031               <p>Mandatory for FULL devices; LIMITED devices
12032 must always set this value to 0 for fixed-focus; and may omit
12033 the minimum focus distance otherwise.<wbr/></p>
12034 <p>This field is also mandatory for all devices advertising
12035 the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
12036             </td>
12037           </tr>
12038
12039           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12040            <!-- end of entry -->
12041         
12042                 
12043           <tr class="entry" id="static_android.lens.info.shadingMapSize">
12044             <td class="entry_name
12045              " rowspan="3">
12046               android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
12047             </td>
12048             <td class="entry_type">
12049                 <span class="entry_type_name">int32</span>
12050                 <span class="entry_type_container">x</span>
12051
12052                 <span class="entry_type_array">
12053                   2
12054                 </span>
12055               <span class="entry_type_visibility"> [hidden as size]</span>
12056
12057
12058               <span class="entry_type_hwlevel">[full] </span>
12059
12060
12061                 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
12062
12063
12064             </td> <!-- entry_type -->
12065
12066             <td class="entry_description">
12067               <p>Dimensions of lens shading map.<wbr/></p>
12068             </td>
12069
12070             <td class="entry_units">
12071             </td>
12072
12073             <td class="entry_range">
12074               <p>Both values &gt;= 1</p>
12075             </td>
12076
12077             <td class="entry_tags">
12078               <ul class="entry_tags">
12079                   <li><a href="#tag_V1">V1</a></li>
12080               </ul>
12081             </td>
12082
12083           </tr>
12084           <tr class="entries_header">
12085             <th class="th_details" colspan="5">Details</th>
12086           </tr>
12087           <tr class="entry_cont">
12088             <td class="entry_details" colspan="5">
12089               <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
12090 must be smaller than 64x64.<wbr/></p>
12091             </td>
12092           </tr>
12093
12094
12095           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12096            <!-- end of entry -->
12097         
12098                 
12099           <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
12100             <td class="entry_name
12101              " rowspan="5">
12102               android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
12103             </td>
12104             <td class="entry_type">
12105                 <span class="entry_type_name entry_type_name_enum">byte</span>
12106
12107               <span class="entry_type_visibility"> [public]</span>
12108
12109
12110               <span class="entry_type_hwlevel">[limited] </span>
12111
12112
12113
12114                 <ul class="entry_type_enum">
12115                   <li>
12116                     <span class="entry_type_enum_name">UNCALIBRATED</span>
12117                     <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
12118 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
12119 <p>Setting the lens to the same focus distance on separate occasions may
12120 result in a different real focus distance,<wbr/> depending on factors such
12121 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
12122 and the device temperature.<wbr/> The focus distance value will still be
12123 in 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
12124 represents the farthest focus.<wbr/></p></span>
12125                   </li>
12126                   <li>
12127                     <span class="entry_type_enum_name">APPROXIMATE</span>
12128                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
12129 <p>However,<wbr/> setting the lens to the same focus distance
12130 on separate occasions may result in a different real
12131 focus distance,<wbr/> depending on factors such as the
12132 orientation of the device,<wbr/> the age of the focusing
12133 mechanism,<wbr/> and the device temperature.<wbr/></p></span>
12134                   </li>
12135                   <li>
12136                     <span class="entry_type_enum_name">CALIBRATED</span>
12137                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
12138 is calibrated.<wbr/></p>
12139 <p>The lens mechanism is calibrated so that setting the
12140 same focus distance is repeatable on multiple
12141 occasions with good accuracy,<wbr/> and the focus distance
12142 corresponds to the real physical distance to the plane
12143 of best focus.<wbr/></p></span>
12144                   </li>
12145                 </ul>
12146
12147             </td> <!-- entry_type -->
12148
12149             <td class="entry_description">
12150               <p>The lens focus distance calibration quality.<wbr/></p>
12151             </td>
12152
12153             <td class="entry_units">
12154             </td>
12155
12156             <td class="entry_range">
12157             </td>
12158
12159             <td class="entry_tags">
12160               <ul class="entry_tags">
12161                   <li><a href="#tag_V1">V1</a></li>
12162               </ul>
12163             </td>
12164
12165           </tr>
12166           <tr class="entries_header">
12167             <th class="th_details" colspan="5">Details</th>
12168           </tr>
12169           <tr class="entry_cont">
12170             <td class="entry_details" colspan="5">
12171               <p>The lens focus distance calibration quality determines the reliability of
12172 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
12173 <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
12174 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
12175 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in
12176 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
12177 and increasing positive numbers represent focusing closer and closer
12178 to the camera device.<wbr/> The focus distance control also uses diopters
12179 on these devices.<wbr/></p>
12180 <p>UNCALIBRATED devices do not use units that are directly comparable
12181 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
12182 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
12183 nearest focus the device can achieve.<wbr/></p>
12184             </td>
12185           </tr>
12186
12187           <tr class="entries_header">
12188             <th class="th_details" colspan="5">HAL Implementation Details</th>
12189           </tr>
12190           <tr class="entry_cont">
12191             <td class="entry_details" colspan="5">
12192               <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
12193 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
12194 and the lens focus distance is set to 0 diopters
12195 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
12196 and is stably focused at infinity even if the device tilts.<wbr/> It may take the
12197 lens some time to move; during the move the lens state should be MOVING and
12198 the output diopter value should be changing toward 0.<wbr/></p>
12199             </td>
12200           </tr>
12201
12202           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12203            <!-- end of entry -->
12204         
12205         
12206         
12207
12208                 
12209           <tr class="entry" id="static_android.lens.facing">
12210             <td class="entry_name
12211              " rowspan="1">
12212               android.<wbr/>lens.<wbr/>facing
12213             </td>
12214             <td class="entry_type">
12215                 <span class="entry_type_name entry_type_name_enum">byte</span>
12216
12217               <span class="entry_type_visibility"> [public]</span>
12218
12219
12220               <span class="entry_type_hwlevel">[legacy] </span>
12221
12222
12223
12224                 <ul class="entry_type_enum">
12225                   <li>
12226                     <span class="entry_type_enum_name">FRONT</span>
12227                     <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
12228                   </li>
12229                   <li>
12230                     <span class="entry_type_enum_name">BACK</span>
12231                     <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
12232                   </li>
12233                   <li>
12234                     <span class="entry_type_enum_name">EXTERNAL</span>
12235                     <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
12236 device's screen.<wbr/></p></span>
12237                   </li>
12238                 </ul>
12239
12240             </td> <!-- entry_type -->
12241
12242             <td class="entry_description">
12243               <p>Direction the camera faces relative to
12244 device screen.<wbr/></p>
12245             </td>
12246
12247             <td class="entry_units">
12248             </td>
12249
12250             <td class="entry_range">
12251             </td>
12252
12253             <td class="entry_tags">
12254             </td>
12255
12256           </tr>
12257
12258
12259           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12260            <!-- end of entry -->
12261         
12262                 
12263           <tr class="entry" id="static_android.lens.poseRotation">
12264             <td class="entry_name
12265              " rowspan="3">
12266               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
12267             </td>
12268             <td class="entry_type">
12269                 <span class="entry_type_name">float</span>
12270                 <span class="entry_type_container">x</span>
12271
12272                 <span class="entry_type_array">
12273                   4
12274                 </span>
12275               <span class="entry_type_visibility"> [public]</span>
12276
12277
12278
12279
12280
12281
12282             </td> <!-- entry_type -->
12283
12284             <td class="entry_description">
12285               <p>The orientation of the camera relative to the sensor
12286 coordinate system.<wbr/></p>
12287             </td>
12288
12289             <td class="entry_units">
12290               
12291             Quarternion coefficients
12292           
12293             </td>
12294
12295             <td class="entry_range">
12296             </td>
12297
12298             <td class="entry_tags">
12299               <ul class="entry_tags">
12300                   <li><a href="#tag_DEPTH">DEPTH</a></li>
12301               </ul>
12302             </td>
12303
12304           </tr>
12305           <tr class="entries_header">
12306             <th class="th_details" colspan="5">Details</th>
12307           </tr>
12308           <tr class="entry_cont">
12309             <td class="entry_details" colspan="5">
12310               <p>The four coefficients that describe the quarternion
12311 rotation from the Android sensor coordinate system to a
12312 camera-aligned coordinate system where the X-axis is
12313 aligned with the long side of the image sensor,<wbr/> the Y-axis
12314 is aligned with the short side of the image sensor,<wbr/> and
12315 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
12316 <p>To convert from the quarternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
12317 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
12318 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
12319 <pre><code> theta = 2 * acos(w)
12320 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
12321 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
12322 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
12323 </code></pre>
12324 <p>To create a 3x3 rotation matrix that applies the rotation
12325 defined by this quarternion,<wbr/> the following matrix can be
12326 used:</p>
12327 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
12328            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
12329            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
12330 </code></pre>
12331 <p>This matrix can then be used to apply the rotation to a
12332  column vector point with</p>
12333 <p><code>p' = Rp</code></p>
12334 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
12335  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
12336             </td>
12337           </tr>
12338
12339
12340           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12341            <!-- end of entry -->
12342         
12343                 
12344           <tr class="entry" id="static_android.lens.poseTranslation">
12345             <td class="entry_name
12346              " rowspan="3">
12347               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
12348             </td>
12349             <td class="entry_type">
12350                 <span class="entry_type_name">float</span>
12351                 <span class="entry_type_container">x</span>
12352
12353                 <span class="entry_type_array">
12354                   3
12355                 </span>
12356               <span class="entry_type_visibility"> [public]</span>
12357
12358
12359
12360
12361
12362
12363             </td> <!-- entry_type -->
12364
12365             <td class="entry_description">
12366               <p>Position of the camera optical center.<wbr/></p>
12367             </td>
12368
12369             <td class="entry_units">
12370               Meters
12371             </td>
12372
12373             <td class="entry_range">
12374             </td>
12375
12376             <td class="entry_tags">
12377               <ul class="entry_tags">
12378                   <li><a href="#tag_DEPTH">DEPTH</a></li>
12379               </ul>
12380             </td>
12381
12382           </tr>
12383           <tr class="entries_header">
12384             <th class="th_details" colspan="5">Details</th>
12385           </tr>
12386           <tr class="entry_cont">
12387             <td class="entry_details" colspan="5">
12388               <p>The position of the camera device's lens optical center,<wbr/>
12389 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
12390 optical center of the largest camera device facing in the
12391 same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
12392 axes</a>.<wbr/> Note that only the axis definitions are shared with
12393 the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
12394 <p>If this device is the largest or only camera device with a
12395 given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
12396 camera device with a lens optical center located 3 cm from
12397 the main sensor along the +X axis (to the right from the
12398 user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
12399 <p>To transform a pixel coordinates between two cameras
12400 facing the same direction,<wbr/> first the source camera
12401 <a href="#dynamic_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
12402 the source camera <a href="#dynamic_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
12403 to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
12404 of the source camera,<wbr/> the translation of the source camera
12405 relative to the destination camera,<wbr/> the
12406 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
12407 finally the inverse of <a href="#dynamic_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
12408 of the destination camera.<wbr/> This obtains a
12409 radial-distortion-free coordinate in the destination
12410 camera pixel coordinates.<wbr/></p>
12411 <p>To compare this against a real image from the destination
12412 camera,<wbr/> the destination camera image then needs to be
12413 corrected for radial distortion before comparison or
12414 sampling.<wbr/></p>
12415             </td>
12416           </tr>
12417
12418
12419           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12420            <!-- end of entry -->
12421         
12422                 
12423           <tr class="entry" id="static_android.lens.intrinsicCalibration">
12424             <td class="entry_name
12425              " rowspan="3">
12426               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
12427             </td>
12428             <td class="entry_type">
12429                 <span class="entry_type_name">float</span>
12430                 <span class="entry_type_container">x</span>
12431
12432                 <span class="entry_type_array">
12433                   5
12434                 </span>
12435               <span class="entry_type_visibility"> [public]</span>
12436
12437
12438
12439
12440
12441
12442             </td> <!-- entry_type -->
12443
12444             <td class="entry_description">
12445               <p>The parameters for this camera device's intrinsic
12446 calibration.<wbr/></p>
12447             </td>
12448
12449             <td class="entry_units">
12450               
12451             Pixels in the
12452             android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
12453             coordinate system.<wbr/>
12454           
12455             </td>
12456
12457             <td class="entry_range">
12458             </td>
12459
12460             <td class="entry_tags">
12461               <ul class="entry_tags">
12462                   <li><a href="#tag_DEPTH">DEPTH</a></li>
12463               </ul>
12464             </td>
12465
12466           </tr>
12467           <tr class="entries_header">
12468             <th class="th_details" colspan="5">Details</th>
12469           </tr>
12470           <tr class="entry_cont">
12471             <td class="entry_details" colspan="5">
12472               <p>The five calibration parameters that describe the
12473 transform from camera-centric 3D coordinates to sensor
12474 pixel coordinates:</p>
12475 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
12476 </code></pre>
12477 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
12478 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
12479 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
12480 being aligned with the lens plane.<wbr/></p>
12481 <p>These are typically used within a transformation matrix K:</p>
12482 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
12483        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
12484        0    0,<wbr/>   1 ]
12485 </code></pre>
12486 <p>which can then be combined with the camera pose rotation
12487 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
12488 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
12489 complete transform from world coordinates to pixel
12490 coordinates:</p>
12491 <pre><code>P = [ K 0   * [ R t
12492      0 1 ]     0 1 ]
12493 </code></pre>
12494 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
12495 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
12496 coordinate system,<wbr/> and with the mapping including the
12497 homogeneous division by z:</p>
12498 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
12499 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
12500 </code></pre>
12501 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
12502 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
12503 (depth) in pixel coordinates.<wbr/></p>
12504 <p>Note that the coordinate system for this transform is the
12505 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> system,<wbr/>
12506 where <code>(0,<wbr/>0)</code> is the top-left of the
12507 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
12508 intrinsic calibration transforms have been applied to a
12509 world point,<wbr/> then the <a href="#dynamic_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
12510 transform needs to be applied,<wbr/> and the result adjusted to
12511 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
12512 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
12513 activeArraySize rectangle),<wbr/> to determine the final pixel
12514 coordinate of the world point for processed (non-RAW)
12515 output buffers.<wbr/></p>
12516             </td>
12517           </tr>
12518
12519
12520           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12521            <!-- end of entry -->
12522         
12523                 
12524           <tr class="entry" id="static_android.lens.radialDistortion">
12525             <td class="entry_name
12526              " rowspan="3">
12527               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
12528             </td>
12529             <td class="entry_type">
12530                 <span class="entry_type_name">float</span>
12531                 <span class="entry_type_container">x</span>
12532
12533                 <span class="entry_type_array">
12534                   6
12535                 </span>
12536               <span class="entry_type_visibility"> [public]</span>
12537
12538
12539
12540
12541
12542
12543             </td> <!-- entry_type -->
12544
12545             <td class="entry_description">
12546               <p>The correction coefficients to correct for this camera device's
12547 radial and tangential lens distortion.<wbr/></p>
12548             </td>
12549
12550             <td class="entry_units">
12551               
12552             Unitless coefficients.<wbr/>
12553           
12554             </td>
12555
12556             <td class="entry_range">
12557             </td>
12558
12559             <td class="entry_tags">
12560               <ul class="entry_tags">
12561                   <li><a href="#tag_DEPTH">DEPTH</a></li>
12562               </ul>
12563             </td>
12564
12565           </tr>
12566           <tr class="entries_header">
12567             <th class="th_details" colspan="5">Details</th>
12568           </tr>
12569           <tr class="entry_cont">
12570             <td class="entry_details" colspan="5">
12571               <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
12572 kappa_<wbr/>3]</code> and two tangential distortion coefficients
12573 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
12574 lens's geometric distortion with the mapping equations:</p>
12575 <pre><code> x_<wbr/>c = x_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
12576        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
12577  y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
12578        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
12579 </code></pre>
12580 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
12581 input image that correspond to the pixel values in the
12582 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
12583 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
12584 </code></pre>
12585 <p>The pixel coordinates are defined in a normalized
12586 coordinate system related to the
12587 <a href="#dynamic_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
12588 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> have <code>(0,<wbr/>0)</code> at the
12589 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
12590 of both x and y coordinates are normalized to be 1 at the
12591 edge further from the optical center,<wbr/> so the range
12592 for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
12593 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
12594 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
12595 is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
12596 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
12597             </td>
12598           </tr>
12599
12600
12601           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12602            <!-- end of entry -->
12603         
12604         
12605
12606       <!-- end of kind -->
12607       </tbody>
12608       <tr><td colspan="6" class="kind">dynamic</td></tr>
12609
12610       <thead class="entries_header">
12611         <tr>
12612           <th class="th_name">Property Name</th>
12613           <th class="th_type">Type</th>
12614           <th class="th_description">Description</th>
12615           <th class="th_units">Units</th>
12616           <th class="th_range">Range</th>
12617           <th class="th_tags">Tags</th>
12618         </tr>
12619       </thead>
12620
12621       <tbody>
12622
12623         
12624
12625         
12626
12627         
12628
12629         
12630
12631                 
12632           <tr class="entry" id="dynamic_android.lens.aperture">
12633             <td class="entry_name
12634              " rowspan="3">
12635               android.<wbr/>lens.<wbr/>aperture
12636             </td>
12637             <td class="entry_type">
12638                 <span class="entry_type_name">float</span>
12639
12640               <span class="entry_type_visibility"> [public]</span>
12641
12642
12643               <span class="entry_type_hwlevel">[full] </span>
12644
12645
12646
12647
12648             </td> <!-- entry_type -->
12649
12650             <td class="entry_description">
12651               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12652 effective aperture diameter.<wbr/></p>
12653             </td>
12654
12655             <td class="entry_units">
12656               The f-number (f/<wbr/>N)
12657             </td>
12658
12659             <td class="entry_range">
12660               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12661             </td>
12662
12663             <td class="entry_tags">
12664               <ul class="entry_tags">
12665                   <li><a href="#tag_V1">V1</a></li>
12666               </ul>
12667             </td>
12668
12669           </tr>
12670           <tr class="entries_header">
12671             <th class="th_details" colspan="5">Details</th>
12672           </tr>
12673           <tr class="entry_cont">
12674             <td class="entry_details" colspan="5">
12675               <p>Setting this value is only supported on the camera devices that have a variable
12676 aperture lens.<wbr/></p>
12677 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12678 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12679 <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>
12680 to achieve manual exposure control.<wbr/></p>
12681 <p>The requested aperture value may take several frames to reach the
12682 requested value; the camera device will report the current (intermediate)
12683 aperture size in capture result metadata while the aperture is changing.<wbr/>
12684 While 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>
12685 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12686 the ON modes,<wbr/> this will be overridden by the camera device
12687 auto-exposure algorithm,<wbr/> the overridden values are then provided
12688 back to the user in the corresponding result.<wbr/></p>
12689             </td>
12690           </tr>
12691
12692
12693           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12694            <!-- end of entry -->
12695         
12696                 
12697           <tr class="entry" id="dynamic_android.lens.filterDensity">
12698             <td class="entry_name
12699              " rowspan="3">
12700               android.<wbr/>lens.<wbr/>filter<wbr/>Density
12701             </td>
12702             <td class="entry_type">
12703                 <span class="entry_type_name">float</span>
12704
12705               <span class="entry_type_visibility"> [public]</span>
12706
12707
12708               <span class="entry_type_hwlevel">[full] </span>
12709
12710
12711
12712
12713             </td> <!-- entry_type -->
12714
12715             <td class="entry_description">
12716               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12717             </td>
12718
12719             <td class="entry_units">
12720               Exposure Value (EV)
12721             </td>
12722
12723             <td class="entry_range">
12724               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12725             </td>
12726
12727             <td class="entry_tags">
12728               <ul class="entry_tags">
12729                   <li><a href="#tag_V1">V1</a></li>
12730               </ul>
12731             </td>
12732
12733           </tr>
12734           <tr class="entries_header">
12735             <th class="th_details" colspan="5">Details</th>
12736           </tr>
12737           <tr class="entry_cont">
12738             <td class="entry_details" colspan="5">
12739               <p>This control will not be supported on most camera devices.<wbr/></p>
12740 <p>Lens filters are typically used to lower the amount of light the
12741 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12742 step is the standard logarithmic representation,<wbr/> which are
12743 non-negative,<wbr/> and inversely proportional to the amount of light
12744 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
12745 in no reduction of the incoming light,<wbr/> and setting this to 2 would
12746 mean that the filter is set to reduce incoming light by two stops
12747 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12748 <p>It may take several frames before the lens filter density changes
12749 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12750 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12751             </td>
12752           </tr>
12753
12754
12755           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12756            <!-- end of entry -->
12757         
12758                 
12759           <tr class="entry" id="dynamic_android.lens.focalLength">
12760             <td class="entry_name
12761              " rowspan="3">
12762               android.<wbr/>lens.<wbr/>focal<wbr/>Length
12763             </td>
12764             <td class="entry_type">
12765                 <span class="entry_type_name">float</span>
12766
12767               <span class="entry_type_visibility"> [public]</span>
12768
12769
12770               <span class="entry_type_hwlevel">[legacy] </span>
12771
12772
12773
12774
12775             </td> <!-- entry_type -->
12776
12777             <td class="entry_description">
12778               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12779             </td>
12780
12781             <td class="entry_units">
12782               Millimeters
12783             </td>
12784
12785             <td class="entry_range">
12786               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12787             </td>
12788
12789             <td class="entry_tags">
12790               <ul class="entry_tags">
12791                   <li><a href="#tag_BC">BC</a></li>
12792               </ul>
12793             </td>
12794
12795           </tr>
12796           <tr class="entries_header">
12797             <th class="th_details" colspan="5">Details</th>
12798           </tr>
12799           <tr class="entry_cont">
12800             <td class="entry_details" colspan="5">
12801               <p>This setting controls the physical focal length of the camera
12802 device's lens.<wbr/> Changing the focal length changes the field of
12803 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12804 <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
12805 setting won't be applied instantaneously,<wbr/> and it may take several
12806 frames before the lens can change to the requested focal length.<wbr/>
12807 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12808 be set to MOVING.<wbr/></p>
12809 <p>Optical zoom will not be supported on most devices.<wbr/></p>
12810             </td>
12811           </tr>
12812
12813
12814           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12815            <!-- end of entry -->
12816         
12817                 
12818           <tr class="entry" id="dynamic_android.lens.focusDistance">
12819             <td class="entry_name
12820              " rowspan="3">
12821               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
12822             </td>
12823             <td class="entry_type">
12824                 <span class="entry_type_name">float</span>
12825
12826               <span class="entry_type_visibility"> [public]</span>
12827
12828
12829               <span class="entry_type_hwlevel">[full] </span>
12830
12831
12832
12833
12834             </td> <!-- entry_type -->
12835
12836             <td class="entry_description">
12837               <p>Desired distance to plane of sharpest focus,<wbr/>
12838 measured from frontmost surface of the lens.<wbr/></p>
12839             </td>
12840
12841             <td class="entry_units">
12842               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12843             </td>
12844
12845             <td class="entry_range">
12846               <p>&gt;= 0</p>
12847             </td>
12848
12849             <td class="entry_tags">
12850               <ul class="entry_tags">
12851                   <li><a href="#tag_BC">BC</a></li>
12852               </ul>
12853             </td>
12854
12855           </tr>
12856           <tr class="entries_header">
12857             <th class="th_details" colspan="5">Details</th>
12858           </tr>
12859           <tr class="entry_cont">
12860             <td class="entry_details" colspan="5">
12861               <p>Should be zero for fixed-focus cameras</p>
12862             </td>
12863           </tr>
12864
12865
12866           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12867            <!-- end of entry -->
12868         
12869                 
12870           <tr class="entry" id="dynamic_android.lens.focusRange">
12871             <td class="entry_name
12872              " rowspan="3">
12873               android.<wbr/>lens.<wbr/>focus<wbr/>Range
12874             </td>
12875             <td class="entry_type">
12876                 <span class="entry_type_name">float</span>
12877                 <span class="entry_type_container">x</span>
12878
12879                 <span class="entry_type_array">
12880                   2
12881                 </span>
12882               <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
12883
12884
12885               <span class="entry_type_hwlevel">[limited] </span>
12886
12887
12888                 <div class="entry_type_notes">Range of scene distances that are in focus</div>
12889
12890
12891             </td> <!-- entry_type -->
12892
12893             <td class="entry_description">
12894               <p>The range of scene distances that are in
12895 sharp focus (depth of field).<wbr/></p>
12896             </td>
12897
12898             <td class="entry_units">
12899               A pair of focus distances in diopters: (near,<wbr/>
12900           far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
12901             </td>
12902
12903             <td class="entry_range">
12904               <p>&gt;=0</p>
12905             </td>
12906
12907             <td class="entry_tags">
12908               <ul class="entry_tags">
12909                   <li><a href="#tag_BC">BC</a></li>
12910               </ul>
12911             </td>
12912
12913           </tr>
12914           <tr class="entries_header">
12915             <th class="th_details" colspan="5">Details</th>
12916           </tr>
12917           <tr class="entry_cont">
12918             <td class="entry_details" colspan="5">
12919               <p>If variable focus not supported,<wbr/> can still report
12920 fixed depth of field range</p>
12921             </td>
12922           </tr>
12923
12924
12925           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12926            <!-- end of entry -->
12927         
12928                 
12929           <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
12930             <td class="entry_name
12931              " rowspan="3">
12932               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12933             </td>
12934             <td class="entry_type">
12935                 <span class="entry_type_name entry_type_name_enum">byte</span>
12936
12937               <span class="entry_type_visibility"> [public]</span>
12938
12939
12940               <span class="entry_type_hwlevel">[limited] </span>
12941
12942
12943
12944                 <ul class="entry_type_enum">
12945                   <li>
12946                     <span class="entry_type_enum_name">OFF</span>
12947                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12948                   </li>
12949                   <li>
12950                     <span class="entry_type_enum_name">ON</span>
12951                     <span class="entry_type_enum_optional">[optional]</span>
12952                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12953                   </li>
12954                 </ul>
12955
12956             </td> <!-- entry_type -->
12957
12958             <td class="entry_description">
12959               <p>Sets whether the camera device uses optical image stabilization (OIS)
12960 when capturing images.<wbr/></p>
12961             </td>
12962
12963             <td class="entry_units">
12964             </td>
12965
12966             <td class="entry_range">
12967               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12968             </td>
12969
12970             <td class="entry_tags">
12971               <ul class="entry_tags">
12972                   <li><a href="#tag_V1">V1</a></li>
12973               </ul>
12974             </td>
12975
12976           </tr>
12977           <tr class="entries_header">
12978             <th class="th_details" colspan="5">Details</th>
12979           </tr>
12980           <tr class="entry_cont">
12981             <td class="entry_details" colspan="5">
12982               <p>OIS is used to compensate for motion blur due to small
12983 movements of the camera during capture.<wbr/> Unlike digital image
12984 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12985 makes use of mechanical elements to stabilize the camera
12986 sensor,<wbr/> and thus allows for longer exposure times before
12987 camera shake becomes apparent.<wbr/></p>
12988 <p>Switching between different optical stabilization modes may take several
12989 frames to initialize,<wbr/> the camera device will report the current mode in
12990 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12991 optical stabilization modes in the first several capture results may still
12992 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12993 <p>If a camera device supports both OIS and digital image stabilization
12994 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12995 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12996 <p>Not all devices will support OIS; see
12997 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12998 available controls.<wbr/></p>
12999             </td>
13000           </tr>
13001
13002
13003           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13004            <!-- end of entry -->
13005         
13006                 
13007           <tr class="entry" id="dynamic_android.lens.state">
13008             <td class="entry_name
13009              " rowspan="3">
13010               android.<wbr/>lens.<wbr/>state
13011             </td>
13012             <td class="entry_type">
13013                 <span class="entry_type_name entry_type_name_enum">byte</span>
13014
13015               <span class="entry_type_visibility"> [public]</span>
13016
13017
13018               <span class="entry_type_hwlevel">[limited] </span>
13019
13020
13021
13022                 <ul class="entry_type_enum">
13023                   <li>
13024                     <span class="entry_type_enum_name">STATIONARY</span>
13025                     <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/>
13026 <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>
13027                   </li>
13028                   <li>
13029                     <span class="entry_type_enum_name">MOVING</span>
13030                     <span class="entry_type_enum_notes"><p>One or several of the lens parameters
13031 (<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/>
13032 <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
13033 currently changing.<wbr/></p></span>
13034                   </li>
13035                 </ul>
13036
13037             </td> <!-- entry_type -->
13038
13039             <td class="entry_description">
13040               <p>Current lens status.<wbr/></p>
13041             </td>
13042
13043             <td class="entry_units">
13044             </td>
13045
13046             <td class="entry_range">
13047             </td>
13048
13049             <td class="entry_tags">
13050               <ul class="entry_tags">
13051                   <li><a href="#tag_V1">V1</a></li>
13052               </ul>
13053             </td>
13054
13055           </tr>
13056           <tr class="entries_header">
13057             <th class="th_details" colspan="5">Details</th>
13058           </tr>
13059           <tr class="entry_cont">
13060             <td class="entry_details" colspan="5">
13061               <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/>
13062 <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/>
13063 they may take several frames to reach the requested values.<wbr/> This state indicates
13064 the current status of the lens parameters.<wbr/></p>
13065 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
13066 either because the parameters are all fixed,<wbr/> or because the lens has had enough
13067 time to reach the most recently-requested values.<wbr/>
13068 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
13069 <ul>
13070 <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
13071 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
13072 <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/>
13073 which means the optical zoom is not supported.<wbr/></li>
13074 <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>
13075 <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>
13076 </ul>
13077 <p>Then this state will always be STATIONARY.<wbr/></p>
13078 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
13079 is changing.<wbr/></p>
13080             </td>
13081           </tr>
13082
13083
13084           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13085            <!-- end of entry -->
13086         
13087                 
13088           <tr class="entry" id="dynamic_android.lens.poseRotation">
13089             <td class="entry_name
13090              " rowspan="3">
13091               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13092             </td>
13093             <td class="entry_type">
13094                 <span class="entry_type_name">float</span>
13095                 <span class="entry_type_container">x</span>
13096
13097                 <span class="entry_type_array">
13098                   4
13099                 </span>
13100               <span class="entry_type_visibility"> [public]</span>
13101
13102
13103
13104
13105
13106
13107             </td> <!-- entry_type -->
13108
13109             <td class="entry_description">
13110               <p>The orientation of the camera relative to the sensor
13111 coordinate system.<wbr/></p>
13112             </td>
13113
13114             <td class="entry_units">
13115               
13116             Quarternion coefficients
13117           
13118             </td>
13119
13120             <td class="entry_range">
13121             </td>
13122
13123             <td class="entry_tags">
13124               <ul class="entry_tags">
13125                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13126               </ul>
13127             </td>
13128
13129           </tr>
13130           <tr class="entries_header">
13131             <th class="th_details" colspan="5">Details</th>
13132           </tr>
13133           <tr class="entry_cont">
13134             <td class="entry_details" colspan="5">
13135               <p>The four coefficients that describe the quarternion
13136 rotation from the Android sensor coordinate system to a
13137 camera-aligned coordinate system where the X-axis is
13138 aligned with the long side of the image sensor,<wbr/> the Y-axis
13139 is aligned with the short side of the image sensor,<wbr/> and
13140 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13141 <p>To convert from the quarternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13142 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13143 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13144 <pre><code> theta = 2 * acos(w)
13145 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13146 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13147 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13148 </code></pre>
13149 <p>To create a 3x3 rotation matrix that applies the rotation
13150 defined by this quarternion,<wbr/> the following matrix can be
13151 used:</p>
13152 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
13153            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
13154            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13155 </code></pre>
13156 <p>This matrix can then be used to apply the rotation to a
13157  column vector point with</p>
13158 <p><code>p' = Rp</code></p>
13159 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13160  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13161             </td>
13162           </tr>
13163
13164
13165           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13166            <!-- end of entry -->
13167         
13168                 
13169           <tr class="entry" id="dynamic_android.lens.poseTranslation">
13170             <td class="entry_name
13171              " rowspan="3">
13172               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13173             </td>
13174             <td class="entry_type">
13175                 <span class="entry_type_name">float</span>
13176                 <span class="entry_type_container">x</span>
13177
13178                 <span class="entry_type_array">
13179                   3
13180                 </span>
13181               <span class="entry_type_visibility"> [public]</span>
13182
13183
13184
13185
13186
13187
13188             </td> <!-- entry_type -->
13189
13190             <td class="entry_description">
13191               <p>Position of the camera optical center.<wbr/></p>
13192             </td>
13193
13194             <td class="entry_units">
13195               Meters
13196             </td>
13197
13198             <td class="entry_range">
13199             </td>
13200
13201             <td class="entry_tags">
13202               <ul class="entry_tags">
13203                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13204               </ul>
13205             </td>
13206
13207           </tr>
13208           <tr class="entries_header">
13209             <th class="th_details" colspan="5">Details</th>
13210           </tr>
13211           <tr class="entry_cont">
13212             <td class="entry_details" colspan="5">
13213               <p>The position of the camera device's lens optical center,<wbr/>
13214 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>,<wbr/> relative to the
13215 optical center of the largest camera device facing in the
13216 same direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor coordinate
13217 axes</a>.<wbr/> Note that only the axis definitions are shared with
13218 the sensor coordinate system,<wbr/> but not the origin.<wbr/></p>
13219 <p>If this device is the largest or only camera device with a
13220 given facing,<wbr/> then this position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a
13221 camera device with a lens optical center located 3 cm from
13222 the main sensor along the +X axis (to the right from the
13223 user's perspective) will report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13224 <p>To transform a pixel coordinates between two cameras
13225 facing the same direction,<wbr/> first the source camera
13226 <a href="#dynamic_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then
13227 the source camera <a href="#dynamic_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs
13228 to be applied,<wbr/> followed by the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>
13229 of the source camera,<wbr/> the translation of the source camera
13230 relative to the destination camera,<wbr/> the
13231 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination camera,<wbr/> and
13232 finally the inverse of <a href="#dynamic_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a>
13233 of the destination camera.<wbr/> This obtains a
13234 radial-distortion-free coordinate in the destination
13235 camera pixel coordinates.<wbr/></p>
13236 <p>To compare this against a real image from the destination
13237 camera,<wbr/> the destination camera image then needs to be
13238 corrected for radial distortion before comparison or
13239 sampling.<wbr/></p>
13240             </td>
13241           </tr>
13242
13243
13244           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13245            <!-- end of entry -->
13246         
13247                 
13248           <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
13249             <td class="entry_name
13250              " rowspan="3">
13251               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13252             </td>
13253             <td class="entry_type">
13254                 <span class="entry_type_name">float</span>
13255                 <span class="entry_type_container">x</span>
13256
13257                 <span class="entry_type_array">
13258                   5
13259                 </span>
13260               <span class="entry_type_visibility"> [public]</span>
13261
13262
13263
13264
13265
13266
13267             </td> <!-- entry_type -->
13268
13269             <td class="entry_description">
13270               <p>The parameters for this camera device's intrinsic
13271 calibration.<wbr/></p>
13272             </td>
13273
13274             <td class="entry_units">
13275               
13276             Pixels in the
13277             android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13278             coordinate system.<wbr/>
13279           
13280             </td>
13281
13282             <td class="entry_range">
13283             </td>
13284
13285             <td class="entry_tags">
13286               <ul class="entry_tags">
13287                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13288               </ul>
13289             </td>
13290
13291           </tr>
13292           <tr class="entries_header">
13293             <th class="th_details" colspan="5">Details</th>
13294           </tr>
13295           <tr class="entry_cont">
13296             <td class="entry_details" colspan="5">
13297               <p>The five calibration parameters that describe the
13298 transform from camera-centric 3D coordinates to sensor
13299 pixel coordinates:</p>
13300 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13301 </code></pre>
13302 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13303 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13304 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13305 being aligned with the lens plane.<wbr/></p>
13306 <p>These are typically used within a transformation matrix K:</p>
13307 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
13308        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13309        0    0,<wbr/>   1 ]
13310 </code></pre>
13311 <p>which can then be combined with the camera pose rotation
13312 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13313 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13314 complete transform from world coordinates to pixel
13315 coordinates:</p>
13316 <pre><code>P = [ K 0   * [ R t
13317      0 1 ]     0 1 ]
13318 </code></pre>
13319 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13320 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13321 coordinate system,<wbr/> and with the mapping including the
13322 homogeneous division by z:</p>
13323 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13324 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13325 </code></pre>
13326 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13327 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13328 (depth) in pixel coordinates.<wbr/></p>
13329 <p>Note that the coordinate system for this transform is the
13330 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> system,<wbr/>
13331 where <code>(0,<wbr/>0)</code> is the top-left of the
13332 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13333 intrinsic calibration transforms have been applied to a
13334 world point,<wbr/> then the <a href="#dynamic_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
13335 transform needs to be applied,<wbr/> and the result adjusted to
13336 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13337 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13338 activeArraySize rectangle),<wbr/> to determine the final pixel
13339 coordinate of the world point for processed (non-RAW)
13340 output buffers.<wbr/></p>
13341             </td>
13342           </tr>
13343
13344
13345           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13346            <!-- end of entry -->
13347         
13348                 
13349           <tr class="entry" id="dynamic_android.lens.radialDistortion">
13350             <td class="entry_name
13351              " rowspan="3">
13352               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13353             </td>
13354             <td class="entry_type">
13355                 <span class="entry_type_name">float</span>
13356                 <span class="entry_type_container">x</span>
13357
13358                 <span class="entry_type_array">
13359                   6
13360                 </span>
13361               <span class="entry_type_visibility"> [public]</span>
13362
13363
13364
13365
13366
13367
13368             </td> <!-- entry_type -->
13369
13370             <td class="entry_description">
13371               <p>The correction coefficients to correct for this camera device's
13372 radial and tangential lens distortion.<wbr/></p>
13373             </td>
13374
13375             <td class="entry_units">
13376               
13377             Unitless coefficients.<wbr/>
13378           
13379             </td>
13380
13381             <td class="entry_range">
13382             </td>
13383
13384             <td class="entry_tags">
13385               <ul class="entry_tags">
13386                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13387               </ul>
13388             </td>
13389
13390           </tr>
13391           <tr class="entries_header">
13392             <th class="th_details" colspan="5">Details</th>
13393           </tr>
13394           <tr class="entry_cont">
13395             <td class="entry_details" colspan="5">
13396               <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13397 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13398 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13399 lens's geometric distortion with the mapping equations:</p>
13400 <pre><code> x_<wbr/>c = x_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13401        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13402  y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13403        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13404 </code></pre>
13405 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13406 input image that correspond to the pixel values in the
13407 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13408 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13409 </code></pre>
13410 <p>The pixel coordinates are defined in a normalized
13411 coordinate system related to the
13412 <a href="#dynamic_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13413 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> have <code>(0,<wbr/>0)</code> at the
13414 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13415 of both x and y coordinates are normalized to be 1 at the
13416 edge further from the optical center,<wbr/> so the range
13417 for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
13418 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13419 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13420 is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
13421 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13422             </td>
13423           </tr>
13424
13425
13426           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13427            <!-- end of entry -->
13428         
13429         
13430
13431       <!-- end of kind -->
13432       </tbody>
13433
13434   <!-- end of section -->
13435   <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr>
13436
13437
13438       <tr><td colspan="6" class="kind">controls</td></tr>
13439
13440       <thead class="entries_header">
13441         <tr>
13442           <th class="th_name">Property Name</th>
13443           <th class="th_type">Type</th>
13444           <th class="th_description">Description</th>
13445           <th class="th_units">Units</th>
13446           <th class="th_range">Range</th>
13447           <th class="th_tags">Tags</th>
13448         </tr>
13449       </thead>
13450
13451       <tbody>
13452
13453         
13454
13455         
13456
13457         
13458
13459         
13460
13461                 
13462           <tr class="entry" id="controls_android.noiseReduction.mode">
13463             <td class="entry_name
13464              " rowspan="5">
13465               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
13466             </td>
13467             <td class="entry_type">
13468                 <span class="entry_type_name entry_type_name_enum">byte</span>
13469
13470               <span class="entry_type_visibility"> [public]</span>
13471
13472
13473               <span class="entry_type_hwlevel">[full] </span>
13474
13475
13476
13477                 <ul class="entry_type_enum">
13478                   <li>
13479                     <span class="entry_type_enum_name">OFF</span>
13480                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
13481                   </li>
13482                   <li>
13483                     <span class="entry_type_enum_name">FAST</span>
13484                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
13485 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
13486 relative to sensor.<wbr/></p></span>
13487                   </li>
13488                   <li>
13489                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
13490                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
13491 rate relative to sensor output.<wbr/></p></span>
13492                   </li>
13493                   <li>
13494                     <span class="entry_type_enum_name">MINIMAL</span>
13495                     <span class="entry_type_enum_optional">[optional]</span>
13496                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
13497 sensor output.<wbr/> </p></span>
13498                   </li>
13499                   <li>
13500                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
13501                     <span class="entry_type_enum_optional">[optional]</span>
13502                     <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
13503 based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have noise
13504 reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
13505 noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
13506 for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
13507 is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
13508 quality may improve from FAST).<wbr/></p>
13509 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
13510 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
13511 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
13512 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
13513 high-resolution buffers must not have noise reduction applied to maximize efficiency of
13514 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
13515 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
13516 applied for reasonable preview quality.<wbr/></p>
13517 <p>This mode is guaranteed to be supported by devices that support either the
13518 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
13519 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
13520 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
13521                   </li>
13522                 </ul>
13523
13524             </td> <!-- entry_type -->
13525
13526             <td class="entry_description">
13527               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
13528             </td>
13529
13530             <td class="entry_units">
13531             </td>
13532
13533             <td class="entry_range">
13534               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
13535             </td>
13536
13537             <td class="entry_tags">
13538               <ul class="entry_tags">
13539                   <li><a href="#tag_V1">V1</a></li>
13540                   <li><a href="#tag_REPROC">REPROC</a></li>
13541               </ul>
13542             </td>
13543
13544           </tr>
13545           <tr class="entries_header">
13546             <th class="th_details" colspan="5">Details</th>
13547           </tr>
13548           <tr class="entry_cont">
13549             <td class="entry_details" colspan="5">
13550               <p>The noise reduction algorithm attempts to improve image quality by removing
13551 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
13552 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
13553 YUV domain.<wbr/></p>
13554 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
13555 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
13556 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
13557 <a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> before using it.<wbr/></p>
13558 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
13559 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
13560 will use the highest-quality noise filtering algorithms,<wbr/>
13561 even if it slows down capture rate.<wbr/> FAST means the camera device will not
13562 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
13563 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
13564 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
13565 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
13566 buffer of high-resolution images during preview and reprocess image(s) from that buffer
13567 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
13568 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
13569 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
13570 those will be reprocessed later if necessary.<wbr/></p>
13571 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
13572 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
13573 may adjust the noise reduction parameters for best image quality based on the
13574 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
13575             </td>
13576           </tr>
13577
13578           <tr class="entries_header">
13579             <th class="th_details" colspan="5">HAL Implementation Details</th>
13580           </tr>
13581           <tr class="entry_cont">
13582             <td class="entry_details" colspan="5">
13583               <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
13584 adjust the internal noise reduction parameters appropriately to get the best quality
13585 images.<wbr/></p>
13586             </td>
13587           </tr>
13588
13589           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13590            <!-- end of entry -->
13591         
13592                 
13593           <tr class="entry" id="controls_android.noiseReduction.strength">
13594             <td class="entry_name
13595              " rowspan="1">
13596               android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
13597             </td>
13598             <td class="entry_type">
13599                 <span class="entry_type_name">byte</span>
13600
13601               <span class="entry_type_visibility"> [system]</span>
13602
13603
13604
13605
13606
13607
13608             </td> <!-- entry_type -->
13609
13610             <td class="entry_description">
13611               <p>Control the amount of noise reduction
13612 applied to the images</p>
13613             </td>
13614
13615             <td class="entry_units">
13616               1-10; 10 is max noise reduction
13617             </td>
13618
13619             <td class="entry_range">
13620               <p>1 - 10</p>
13621             </td>
13622
13623             <td class="entry_tags">
13624               <ul class="entry_tags">
13625                   <li><a href="#tag_FUTURE">FUTURE</a></li>
13626               </ul>
13627             </td>
13628
13629           </tr>
13630
13631
13632           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13633            <!-- end of entry -->
13634         
13635         
13636
13637       <!-- end of kind -->
13638       </tbody>
13639       <tr><td colspan="6" class="kind">static</td></tr>
13640
13641       <thead class="entries_header">
13642         <tr>
13643           <th class="th_name">Property Name</th>
13644           <th class="th_type">Type</th>
13645           <th class="th_description">Description</th>
13646           <th class="th_units">Units</th>
13647           <th class="th_range">Range</th>
13648           <th class="th_tags">Tags</th>
13649         </tr>
13650       </thead>
13651
13652       <tbody>
13653
13654         
13655
13656         
13657
13658         
13659
13660         
13661
13662                 
13663           <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
13664             <td class="entry_name
13665              " rowspan="5">
13666               android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
13667             </td>
13668             <td class="entry_type">
13669                 <span class="entry_type_name">byte</span>
13670                 <span class="entry_type_container">x</span>
13671
13672                 <span class="entry_type_array">
13673                   n
13674                 </span>
13675               <span class="entry_type_visibility"> [public as enumList]</span>
13676
13677
13678               <span class="entry_type_hwlevel">[limited] </span>
13679
13680
13681                 <div class="entry_type_notes">list of enums</div>
13682
13683
13684             </td> <!-- entry_type -->
13685
13686             <td class="entry_description">
13687               <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
13688 by this camera device.<wbr/></p>
13689             </td>
13690
13691             <td class="entry_units">
13692             </td>
13693
13694             <td class="entry_range">
13695               <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
13696             </td>
13697
13698             <td class="entry_tags">
13699               <ul class="entry_tags">
13700                   <li><a href="#tag_V1">V1</a></li>
13701                   <li><a href="#tag_REPROC">REPROC</a></li>
13702               </ul>
13703             </td>
13704
13705           </tr>
13706           <tr class="entries_header">
13707             <th class="th_details" colspan="5">Details</th>
13708           </tr>
13709           <tr class="entry_cont">
13710             <td class="entry_details" colspan="5">
13711               <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
13712 <p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
13713 ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
13714 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
13715             </td>
13716           </tr>
13717
13718           <tr class="entries_header">
13719             <th class="th_details" colspan="5">HAL Implementation Details</th>
13720           </tr>
13721           <tr class="entry_cont">
13722             <td class="entry_details" colspan="5">
13723               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
13724 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
13725 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
13726 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
13727             </td>
13728           </tr>
13729
13730           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13731            <!-- end of entry -->
13732         
13733         
13734
13735       <!-- end of kind -->
13736       </tbody>
13737       <tr><td colspan="6" class="kind">dynamic</td></tr>
13738
13739       <thead class="entries_header">
13740         <tr>
13741           <th class="th_name">Property Name</th>
13742           <th class="th_type">Type</th>
13743           <th class="th_description">Description</th>
13744           <th class="th_units">Units</th>
13745           <th class="th_range">Range</th>
13746           <th class="th_tags">Tags</th>
13747         </tr>
13748       </thead>
13749
13750       <tbody>
13751
13752         
13753
13754         
13755
13756         
13757
13758         
13759
13760                 
13761           <tr class="entry" id="dynamic_android.noiseReduction.mode">
13762             <td class="entry_name
13763              " rowspan="5">
13764               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
13765             </td>
13766             <td class="entry_type">
13767                 <span class="entry_type_name entry_type_name_enum">byte</span>
13768
13769               <span class="entry_type_visibility"> [public]</span>
13770
13771
13772               <span class="entry_type_hwlevel">[full] </span>
13773
13774
13775
13776                 <ul class="entry_type_enum">
13777                   <li>
13778                     <span class="entry_type_enum_name">OFF</span>
13779                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
13780                   </li>
13781                   <li>
13782                     <span class="entry_type_enum_name">FAST</span>
13783                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
13784 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
13785 relative to sensor.<wbr/></p></span>
13786                   </li>
13787                   <li>
13788                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
13789                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
13790 rate relative to sensor output.<wbr/></p></span>
13791                   </li>
13792                   <li>
13793                     <span class="entry_type_enum_name">MINIMAL</span>
13794                     <span class="entry_type_enum_optional">[optional]</span>
13795                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
13796 sensor output.<wbr/> </p></span>
13797                   </li>
13798                   <li>
13799                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
13800                     <span class="entry_type_enum_optional">[optional]</span>
13801                     <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
13802 based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) or below have noise
13803 reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if supported) or no
13804 noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of noise reduction
13805 for low-resolution streams is tuned so that frame rate is not impacted,<wbr/> and the quality
13806 is equal to or better than FAST (since it is only applied to lower-resolution outputs,<wbr/>
13807 quality may improve from FAST).<wbr/></p>
13808 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
13809 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
13810 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
13811 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
13812 high-resolution buffers must not have noise reduction applied to maximize efficiency of
13813 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
13814 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
13815 applied for reasonable preview quality.<wbr/></p>
13816 <p>This mode is guaranteed to be supported by devices that support either the
13817 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
13818 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
13819 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
13820                   </li>
13821                 </ul>
13822
13823             </td> <!-- entry_type -->
13824
13825             <td class="entry_description">
13826               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
13827             </td>
13828
13829             <td class="entry_units">
13830             </td>
13831
13832             <td class="entry_range">
13833               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
13834             </td>
13835
13836             <td class="entry_tags">
13837               <ul class="entry_tags">
13838                   <li><a href="#tag_V1">V1</a></li>
13839                   <li><a href="#tag_REPROC">REPROC</a></li>
13840               </ul>
13841             </td>
13842
13843           </tr>
13844           <tr class="entries_header">
13845             <th class="th_details" colspan="5">Details</th>
13846           </tr>
13847           <tr class="entry_cont">
13848             <td class="entry_details" colspan="5">
13849               <p>The noise reduction algorithm attempts to improve image quality by removing
13850 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
13851 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
13852 YUV domain.<wbr/></p>
13853 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
13854 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
13855 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
13856 <a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> before using it.<wbr/></p>
13857 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
13858 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
13859 will use the highest-quality noise filtering algorithms,<wbr/>
13860 even if it slows down capture rate.<wbr/> FAST means the camera device will not
13861 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
13862 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
13863 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
13864 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
13865 buffer of high-resolution images during preview and reprocess image(s) from that buffer
13866 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
13867 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
13868 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
13869 those will be reprocessed later if necessary.<wbr/></p>
13870 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
13871 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
13872 may adjust the noise reduction parameters for best image quality based on the
13873 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
13874             </td>
13875           </tr>
13876
13877           <tr class="entries_header">
13878             <th class="th_details" colspan="5">HAL Implementation Details</th>
13879           </tr>
13880           <tr class="entry_cont">
13881             <td class="entry_details" colspan="5">
13882               <p>For YUV_<wbr/>REPROCESSING The HAL can use <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> to
13883 adjust the internal noise reduction parameters appropriately to get the best quality
13884 images.<wbr/></p>
13885             </td>
13886           </tr>
13887
13888           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13889            <!-- end of entry -->
13890         
13891         
13892
13893       <!-- end of kind -->
13894       </tbody>
13895
13896   <!-- end of section -->
13897   <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr>
13898
13899
13900       <tr><td colspan="6" class="kind">static</td></tr>
13901
13902       <thead class="entries_header">
13903         <tr>
13904           <th class="th_name">Property Name</th>
13905           <th class="th_type">Type</th>
13906           <th class="th_description">Description</th>
13907           <th class="th_units">Units</th>
13908           <th class="th_range">Range</th>
13909           <th class="th_tags">Tags</th>
13910         </tr>
13911       </thead>
13912
13913       <tbody>
13914
13915         
13916
13917         
13918
13919         
13920
13921         
13922
13923                 
13924           <tr class="entry" id="static_android.quirks.meteringCropRegion">
13925             <td class="entry_name
13926                 entry_name_deprecated
13927              " rowspan="3">
13928               android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
13929             </td>
13930             <td class="entry_type">
13931                 <span class="entry_type_name">byte</span>
13932
13933               <span class="entry_type_visibility"> [system]</span>
13934
13935
13936
13937               <span class="entry_type_deprecated">[deprecated] </span>
13938
13939
13940
13941             </td> <!-- entry_type -->
13942
13943             <td class="entry_description">
13944               <p>If set to 1,<wbr/> the camera service does not
13945 scale 'normalized' coordinates with respect to the crop
13946 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
13947 and output (face rectangles).<wbr/></p>
13948             </td>
13949
13950             <td class="entry_units">
13951             </td>
13952
13953             <td class="entry_range">
13954               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13955             </td>
13956
13957             <td class="entry_tags">
13958             </td>
13959
13960           </tr>
13961           <tr class="entries_header">
13962             <th class="th_details" colspan="5">Details</th>
13963           </tr>
13964           <tr class="entry_cont">
13965             <td class="entry_details" colspan="5">
13966               <p>Normalized coordinates refer to those in the
13967 (-1000,<wbr/>1000) range mentioned in the
13968 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
13969 <p>HAL implementations should instead always use and emit
13970 sensor array-relative coordinates for all region data.<wbr/> Does
13971 not need to be listed in static metadata.<wbr/> Support will be
13972 removed in future versions of camera service.<wbr/></p>
13973             </td>
13974           </tr>
13975
13976
13977           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13978            <!-- end of entry -->
13979         
13980                 
13981           <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
13982             <td class="entry_name
13983                 entry_name_deprecated
13984              " rowspan="3">
13985               android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
13986             </td>
13987             <td class="entry_type">
13988                 <span class="entry_type_name">byte</span>
13989
13990               <span class="entry_type_visibility"> [system]</span>
13991
13992
13993
13994               <span class="entry_type_deprecated">[deprecated] </span>
13995
13996
13997
13998             </td> <!-- entry_type -->
13999
14000             <td class="entry_description">
14001               <p>If set to 1,<wbr/> then the camera service always
14002 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
14003 trigger.<wbr/></p>
14004             </td>
14005
14006             <td class="entry_units">
14007             </td>
14008
14009             <td class="entry_range">
14010               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14011             </td>
14012
14013             <td class="entry_tags">
14014             </td>
14015
14016           </tr>
14017           <tr class="entries_header">
14018             <th class="th_details" colspan="5">Details</th>
14019           </tr>
14020           <tr class="entry_cont">
14021             <td class="entry_details" colspan="5">
14022               <p>HAL implementations should implement AF trigger
14023 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
14024 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
14025 not need to be listed in static metadata.<wbr/> Support will be
14026 removed in future versions of camera service</p>
14027             </td>
14028           </tr>
14029
14030
14031           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14032            <!-- end of entry -->
14033         
14034                 
14035           <tr class="entry" id="static_android.quirks.useZslFormat">
14036             <td class="entry_name
14037                 entry_name_deprecated
14038              " rowspan="3">
14039               android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
14040             </td>
14041             <td class="entry_type">
14042                 <span class="entry_type_name">byte</span>
14043
14044               <span class="entry_type_visibility"> [system]</span>
14045
14046
14047
14048               <span class="entry_type_deprecated">[deprecated] </span>
14049
14050
14051
14052             </td> <!-- entry_type -->
14053
14054             <td class="entry_description">
14055               <p>If set to 1,<wbr/> the camera service uses
14056 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
14057 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
14058 shutter lag stream</p>
14059             </td>
14060
14061             <td class="entry_units">
14062             </td>
14063
14064             <td class="entry_range">
14065               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14066             </td>
14067
14068             <td class="entry_tags">
14069             </td>
14070
14071           </tr>
14072           <tr class="entries_header">
14073             <th class="th_details" colspan="5">Details</th>
14074           </tr>
14075           <tr class="entry_cont">
14076             <td class="entry_details" colspan="5">
14077               <p>HAL implementations should use gralloc usage flags
14078 to determine that a stream will be used for
14079 zero-shutter-lag,<wbr/> instead of relying on an explicit
14080 format setting.<wbr/> Does not need to be listed in static
14081 metadata.<wbr/> Support will be removed in future versions of
14082 camera service.<wbr/></p>
14083             </td>
14084           </tr>
14085
14086
14087           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14088            <!-- end of entry -->
14089         
14090                 
14091           <tr class="entry" id="static_android.quirks.usePartialResult">
14092             <td class="entry_name
14093                 entry_name_deprecated
14094              " rowspan="5">
14095               android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
14096             </td>
14097             <td class="entry_type">
14098                 <span class="entry_type_name">byte</span>
14099
14100               <span class="entry_type_visibility"> [hidden]</span>
14101
14102
14103
14104               <span class="entry_type_deprecated">[deprecated] </span>
14105
14106
14107
14108             </td> <!-- entry_type -->
14109
14110             <td class="entry_description">
14111               <p>If set to 1,<wbr/> the HAL will always split result
14112 metadata for a single capture into multiple buffers,<wbr/>
14113 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
14114             </td>
14115
14116             <td class="entry_units">
14117             </td>
14118
14119             <td class="entry_range">
14120               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14121             </td>
14122
14123             <td class="entry_tags">
14124             </td>
14125
14126           </tr>
14127           <tr class="entries_header">
14128             <th class="th_details" colspan="5">Details</th>
14129           </tr>
14130           <tr class="entry_cont">
14131             <td class="entry_details" colspan="5">
14132               <p>Does not need to be listed in static
14133 metadata.<wbr/> Support for partial results will be reworked in
14134 future versions of camera service.<wbr/> This quirk will stop
14135 working at that point; DO NOT USE without careful
14136 consideration of future support.<wbr/></p>
14137             </td>
14138           </tr>
14139
14140           <tr class="entries_header">
14141             <th class="th_details" colspan="5">HAL Implementation Details</th>
14142           </tr>
14143           <tr class="entry_cont">
14144             <td class="entry_details" colspan="5">
14145               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
14146 for information on how to implement partial results.<wbr/></p>
14147             </td>
14148           </tr>
14149
14150           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14151            <!-- end of entry -->
14152         
14153         
14154
14155       <!-- end of kind -->
14156       </tbody>
14157       <tr><td colspan="6" class="kind">dynamic</td></tr>
14158
14159       <thead class="entries_header">
14160         <tr>
14161           <th class="th_name">Property Name</th>
14162           <th class="th_type">Type</th>
14163           <th class="th_description">Description</th>
14164           <th class="th_units">Units</th>
14165           <th class="th_range">Range</th>
14166           <th class="th_tags">Tags</th>
14167         </tr>
14168       </thead>
14169
14170       <tbody>
14171
14172         
14173
14174         
14175
14176         
14177
14178         
14179
14180                 
14181           <tr class="entry" id="dynamic_android.quirks.partialResult">
14182             <td class="entry_name
14183                 entry_name_deprecated
14184              " rowspan="5">
14185               android.<wbr/>quirks.<wbr/>partial<wbr/>Result
14186             </td>
14187             <td class="entry_type">
14188                 <span class="entry_type_name entry_type_name_enum">byte</span>
14189
14190               <span class="entry_type_visibility"> [hidden as boolean]</span>
14191
14192
14193
14194               <span class="entry_type_deprecated">[deprecated] </span>
14195
14196
14197                 <ul class="entry_type_enum">
14198                   <li>
14199                     <span class="entry_type_enum_name">FINAL</span>
14200                     <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
14201 for this capture.<wbr/></p></span>
14202                   </li>
14203                   <li>
14204                     <span class="entry_type_enum_name">PARTIAL</span>
14205                     <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
14206 capture.<wbr/> More result buffers for this capture will be sent
14207 by the camera device,<wbr/> the last of which will be marked
14208 FINAL.<wbr/></p></span>
14209                   </li>
14210                 </ul>
14211
14212             </td> <!-- entry_type -->
14213
14214             <td class="entry_description">
14215               <p>Whether a result given to the framework is the
14216 final one for the capture,<wbr/> or only a partial that contains a
14217 subset of the full set of dynamic metadata
14218 values.<wbr/></p>
14219             </td>
14220
14221             <td class="entry_units">
14222             </td>
14223
14224             <td class="entry_range">
14225               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14226               <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
14227             </td>
14228
14229             <td class="entry_tags">
14230             </td>
14231
14232           </tr>
14233           <tr class="entries_header">
14234             <th class="th_details" colspan="5">Details</th>
14235           </tr>
14236           <tr class="entry_cont">
14237             <td class="entry_details" colspan="5">
14238               <p>The entries in the result metadata buffers for a
14239 single capture may not overlap,<wbr/> except for this entry.<wbr/> The
14240 FINAL buffers must retain FIFO ordering relative to the
14241 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
14242 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
14243 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
14244 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
14245 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
14246 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
14247             </td>
14248           </tr>
14249
14250           <tr class="entries_header">
14251             <th class="th_details" colspan="5">HAL Implementation Details</th>
14252           </tr>
14253           <tr class="entry_cont">
14254             <td class="entry_details" colspan="5">
14255               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
14256 for information on how to implement partial results.<wbr/></p>
14257             </td>
14258           </tr>
14259
14260           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14261            <!-- end of entry -->
14262         
14263         
14264
14265       <!-- end of kind -->
14266       </tbody>
14267
14268   <!-- end of section -->
14269   <tr><td colspan="6" id="section_request" class="section">request</td></tr>
14270
14271
14272       <tr><td colspan="6" class="kind">controls</td></tr>
14273
14274       <thead class="entries_header">
14275         <tr>
14276           <th class="th_name">Property Name</th>
14277           <th class="th_type">Type</th>
14278           <th class="th_description">Description</th>
14279           <th class="th_units">Units</th>
14280           <th class="th_range">Range</th>
14281           <th class="th_tags">Tags</th>
14282         </tr>
14283       </thead>
14284
14285       <tbody>
14286
14287         
14288
14289         
14290
14291         
14292
14293         
14294
14295                 
14296           <tr class="entry" id="controls_android.request.frameCount">
14297             <td class="entry_name
14298                 entry_name_deprecated
14299              " rowspan="1">
14300               android.<wbr/>request.<wbr/>frame<wbr/>Count
14301             </td>
14302             <td class="entry_type">
14303                 <span class="entry_type_name">int32</span>
14304
14305               <span class="entry_type_visibility"> [system]</span>
14306
14307
14308
14309               <span class="entry_type_deprecated">[deprecated] </span>
14310
14311
14312
14313             </td> <!-- entry_type -->
14314
14315             <td class="entry_description">
14316               <p>A frame counter set by the framework.<wbr/> Must
14317 be maintained unchanged in output frame.<wbr/> This value monotonically
14318 increases with every new result (that is,<wbr/> each new result has a unique
14319 frameCount value).<wbr/></p>
14320             </td>
14321
14322             <td class="entry_units">
14323               incrementing integer
14324             </td>
14325
14326             <td class="entry_range">
14327               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14328               <p>Any int.<wbr/></p>
14329             </td>
14330
14331             <td class="entry_tags">
14332             </td>
14333
14334           </tr>
14335
14336
14337           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14338            <!-- end of entry -->
14339         
14340                 
14341           <tr class="entry" id="controls_android.request.id">
14342             <td class="entry_name
14343              " rowspan="1">
14344               android.<wbr/>request.<wbr/>id
14345             </td>
14346             <td class="entry_type">
14347                 <span class="entry_type_name">int32</span>
14348
14349               <span class="entry_type_visibility"> [hidden]</span>
14350
14351
14352
14353
14354
14355
14356             </td> <!-- entry_type -->
14357
14358             <td class="entry_description">
14359               <p>An application-specified ID for the current
14360 request.<wbr/> Must be maintained unchanged in output
14361 frame</p>
14362             </td>
14363
14364             <td class="entry_units">
14365               arbitrary integer assigned by application
14366             </td>
14367
14368             <td class="entry_range">
14369               <p>Any int</p>
14370             </td>
14371
14372             <td class="entry_tags">
14373               <ul class="entry_tags">
14374                   <li><a href="#tag_V1">V1</a></li>
14375               </ul>
14376             </td>
14377
14378           </tr>
14379
14380
14381           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14382            <!-- end of entry -->
14383         
14384                 
14385           <tr class="entry" id="controls_android.request.inputStreams">
14386             <td class="entry_name
14387                 entry_name_deprecated
14388              " rowspan="3">
14389               android.<wbr/>request.<wbr/>input<wbr/>Streams
14390             </td>
14391             <td class="entry_type">
14392                 <span class="entry_type_name">int32</span>
14393                 <span class="entry_type_container">x</span>
14394
14395                 <span class="entry_type_array">
14396                   n
14397                 </span>
14398               <span class="entry_type_visibility"> [system]</span>
14399
14400
14401
14402               <span class="entry_type_deprecated">[deprecated] </span>
14403
14404
14405
14406             </td> <!-- entry_type -->
14407
14408             <td class="entry_description">
14409               <p>List which camera reprocess stream is used
14410 for the source of reprocessing data.<wbr/></p>
14411             </td>
14412
14413             <td class="entry_units">
14414               List of camera reprocess stream IDs
14415             </td>
14416
14417             <td class="entry_range">
14418               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14419               <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
14420             </td>
14421
14422             <td class="entry_tags">
14423               <ul class="entry_tags">
14424                   <li><a href="#tag_HAL2">HAL2</a></li>
14425               </ul>
14426             </td>
14427
14428           </tr>
14429           <tr class="entries_header">
14430             <th class="th_details" colspan="5">Details</th>
14431           </tr>
14432           <tr class="entry_cont">
14433             <td class="entry_details" colspan="5">
14434               <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
14435 REPROCESS.<wbr/> Ignored otherwise</p>
14436             </td>
14437           </tr>
14438
14439
14440           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14441            <!-- end of entry -->
14442         
14443                 
14444           <tr class="entry" id="controls_android.request.metadataMode">
14445             <td class="entry_name
14446              " rowspan="1">
14447               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
14448             </td>
14449             <td class="entry_type">
14450                 <span class="entry_type_name entry_type_name_enum">byte</span>
14451
14452               <span class="entry_type_visibility"> [system]</span>
14453
14454
14455
14456
14457
14458                 <ul class="entry_type_enum">
14459                   <li>
14460                     <span class="entry_type_enum_name">NONE</span>
14461                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
14462 for application-bound buffer data.<wbr/> If no
14463 application-bound streams exist,<wbr/> no frame should be
14464 placed in the output frame queue.<wbr/> If such streams
14465 exist,<wbr/> a frame should be placed on the output queue
14466 with null metadata but with the necessary output buffer
14467 information.<wbr/> Timestamp information should still be
14468 included with any output stream buffers</p></span>
14469                   </li>
14470                   <li>
14471                     <span class="entry_type_enum_name">FULL</span>
14472                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
14473 only be produced if they are separately
14474 enabled</p></span>
14475                   </li>
14476                 </ul>
14477
14478             </td> <!-- entry_type -->
14479
14480             <td class="entry_description">
14481               <p>How much metadata to produce on
14482 output</p>
14483             </td>
14484
14485             <td class="entry_units">
14486             </td>
14487
14488             <td class="entry_range">
14489             </td>
14490
14491             <td class="entry_tags">
14492               <ul class="entry_tags">
14493                   <li><a href="#tag_FUTURE">FUTURE</a></li>
14494               </ul>
14495             </td>
14496
14497           </tr>
14498
14499
14500           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14501            <!-- end of entry -->
14502         
14503                 
14504           <tr class="entry" id="controls_android.request.outputStreams">
14505             <td class="entry_name
14506                 entry_name_deprecated
14507              " rowspan="3">
14508               android.<wbr/>request.<wbr/>output<wbr/>Streams
14509             </td>
14510             <td class="entry_type">
14511                 <span class="entry_type_name">int32</span>
14512                 <span class="entry_type_container">x</span>
14513
14514                 <span class="entry_type_array">
14515                   n
14516                 </span>
14517               <span class="entry_type_visibility"> [system]</span>
14518
14519
14520
14521               <span class="entry_type_deprecated">[deprecated] </span>
14522
14523
14524
14525             </td> <!-- entry_type -->
14526
14527             <td class="entry_description">
14528               <p>Lists which camera output streams image data
14529 from this capture must be sent to</p>
14530             </td>
14531
14532             <td class="entry_units">
14533               List of camera stream IDs
14534             </td>
14535
14536             <td class="entry_range">
14537               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14538               <p>List must only include streams that have been
14539 created</p>
14540             </td>
14541
14542             <td class="entry_tags">
14543               <ul class="entry_tags">
14544                   <li><a href="#tag_HAL2">HAL2</a></li>
14545               </ul>
14546             </td>
14547
14548           </tr>
14549           <tr class="entries_header">
14550             <th class="th_details" colspan="5">Details</th>
14551           </tr>
14552           <tr class="entry_cont">
14553             <td class="entry_details" colspan="5">
14554               <p>If no output streams are listed,<wbr/> then the image
14555 data should simply be discarded.<wbr/> The image data must
14556 still be captured for metadata and statistics production,<wbr/>
14557 and the lens and flash must operate as requested.<wbr/></p>
14558             </td>
14559           </tr>
14560
14561
14562           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14563            <!-- end of entry -->
14564         
14565                 
14566           <tr class="entry" id="controls_android.request.type">
14567             <td class="entry_name
14568                 entry_name_deprecated
14569              " rowspan="1">
14570               android.<wbr/>request.<wbr/>type
14571             </td>
14572             <td class="entry_type">
14573                 <span class="entry_type_name entry_type_name_enum">byte</span>
14574
14575               <span class="entry_type_visibility"> [system]</span>
14576
14577
14578
14579               <span class="entry_type_deprecated">[deprecated] </span>
14580
14581
14582                 <ul class="entry_type_enum">
14583                   <li>
14584                     <span class="entry_type_enum_name">CAPTURE</span>
14585                     <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
14586 and process it according to the
14587 settings</p></span>
14588                   </li>
14589                   <li>
14590                     <span class="entry_type_enum_name">REPROCESS</span>
14591                     <span class="entry_type_enum_notes"><p>Process previously captured data; the
14592 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
14593 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
14594 needed for reprocessing with [RP]</p></span>
14595                   </li>
14596                 </ul>
14597
14598             </td> <!-- entry_type -->
14599
14600             <td class="entry_description">
14601               <p>The type of the request; either CAPTURE or
14602 REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p>
14603             </td>
14604
14605             <td class="entry_units">
14606             </td>
14607
14608             <td class="entry_range">
14609               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14610             </td>
14611
14612             <td class="entry_tags">
14613               <ul class="entry_tags">
14614                   <li><a href="#tag_HAL2">HAL2</a></li>
14615               </ul>
14616             </td>
14617
14618           </tr>
14619
14620
14621           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14622            <!-- end of entry -->
14623         
14624         
14625
14626       <!-- end of kind -->
14627       </tbody>
14628       <tr><td colspan="6" class="kind">static</td></tr>
14629
14630       <thead class="entries_header">
14631         <tr>
14632           <th class="th_name">Property Name</th>
14633           <th class="th_type">Type</th>
14634           <th class="th_description">Description</th>
14635           <th class="th_units">Units</th>
14636           <th class="th_range">Range</th>
14637           <th class="th_tags">Tags</th>
14638         </tr>
14639       </thead>
14640
14641       <tbody>
14642
14643         
14644
14645         
14646
14647         
14648
14649         
14650
14651                 
14652           <tr class="entry" id="static_android.request.maxNumOutputStreams">
14653             <td class="entry_name
14654              " rowspan="3">
14655               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
14656             </td>
14657             <td class="entry_type">
14658                 <span class="entry_type_name">int32</span>
14659                 <span class="entry_type_container">x</span>
14660
14661                 <span class="entry_type_array">
14662                   3
14663                 </span>
14664               <span class="entry_type_visibility"> [hidden]</span>
14665
14666
14667               <span class="entry_type_hwlevel">[legacy] </span>
14668
14669
14670
14671
14672             </td> <!-- entry_type -->
14673
14674             <td class="entry_description">
14675               <p>The maximum numbers of different types of output streams
14676 that can be configured and used simultaneously by a camera device.<wbr/></p>
14677             </td>
14678
14679             <td class="entry_units">
14680             </td>
14681
14682             <td class="entry_range">
14683               <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
14684 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
14685 <p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
14686 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
14687 &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>
14688             </td>
14689
14690             <td class="entry_tags">
14691               <ul class="entry_tags">
14692                   <li><a href="#tag_BC">BC</a></li>
14693               </ul>
14694             </td>
14695
14696           </tr>
14697           <tr class="entries_header">
14698             <th class="th_details" colspan="5">Details</th>
14699           </tr>
14700           <tr class="entry_cont">
14701             <td class="entry_details" colspan="5">
14702               <p>This is a 3 element tuple that contains the max number of output simultaneous
14703 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
14704 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
14705 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
14706 number 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>
14707 <p>This lists the upper bound of the number of output streams supported by
14708 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14709 CPU resources that will consume more power.<wbr/> The image format for an output stream can
14710 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
14711 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
14712 into the 3 stream types as below:</p>
14713 <ul>
14714 <li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
14715   Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
14716 <li>Raw formats: <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a>,<wbr/> or <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
14717 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>
14718   Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
14719   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or
14720   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li>
14721 </ul>
14722             </td>
14723           </tr>
14724
14725
14726           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14727            <!-- end of entry -->
14728         
14729                 
14730           <tr class="entry" id="static_android.request.maxNumOutputRaw">
14731             <td class="entry_name
14732              " rowspan="3">
14733               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
14734             </td>
14735             <td class="entry_type">
14736                 <span class="entry_type_name">int32</span>
14737
14738               <span class="entry_type_visibility"> [public]</span>
14739
14740               <span class="entry_type_synthetic">[synthetic] </span>
14741
14742               <span class="entry_type_hwlevel">[legacy] </span>
14743
14744
14745
14746
14747             </td> <!-- entry_type -->
14748
14749             <td class="entry_description">
14750               <p>The maximum numbers of different types of output streams
14751 that can be configured and used simultaneously by a camera device
14752 for any <code>RAW</code> formats.<wbr/></p>
14753             </td>
14754
14755             <td class="entry_units">
14756             </td>
14757
14758             <td class="entry_range">
14759               <p>&gt;= 0</p>
14760             </td>
14761
14762             <td class="entry_tags">
14763             </td>
14764
14765           </tr>
14766           <tr class="entries_header">
14767             <th class="th_details" colspan="5">Details</th>
14768           </tr>
14769           <tr class="entry_cont">
14770             <td class="entry_details" colspan="5">
14771               <p>This value contains the max number of output simultaneous
14772 streams from the raw sensor.<wbr/></p>
14773 <p>This lists the upper bound of the number of output streams supported by
14774 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14775 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
14776 be 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>
14777 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
14778 <ul>
14779 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
14780 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
14781 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
14782 </ul>
14783 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
14784 never support raw streams.<wbr/></p>
14785             </td>
14786           </tr>
14787
14788
14789           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14790            <!-- end of entry -->
14791         
14792                 
14793           <tr class="entry" id="static_android.request.maxNumOutputProc">
14794             <td class="entry_name
14795              " rowspan="3">
14796               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
14797             </td>
14798             <td class="entry_type">
14799                 <span class="entry_type_name">int32</span>
14800
14801               <span class="entry_type_visibility"> [public]</span>
14802
14803               <span class="entry_type_synthetic">[synthetic] </span>
14804
14805               <span class="entry_type_hwlevel">[legacy] </span>
14806
14807
14808
14809
14810             </td> <!-- entry_type -->
14811
14812             <td class="entry_description">
14813               <p>The maximum numbers of different types of output streams
14814 that can be configured and used simultaneously by a camera device
14815 for any processed (but not-stalling) formats.<wbr/></p>
14816             </td>
14817
14818             <td class="entry_units">
14819             </td>
14820
14821             <td class="entry_range">
14822               <p>&gt;= 3
14823 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
14824 &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>
14825             </td>
14826
14827             <td class="entry_tags">
14828             </td>
14829
14830           </tr>
14831           <tr class="entries_header">
14832             <th class="th_details" colspan="5">Details</th>
14833           </tr>
14834           <tr class="entry_cont">
14835             <td class="entry_details" colspan="5">
14836               <p>This value contains the max number of output simultaneous
14837 streams for any processed (but not-stalling) formats.<wbr/></p>
14838 <p>This lists the upper bound of the number of output streams supported by
14839 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14840 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
14841 be 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>
14842 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
14843 Typically:</p>
14844 <ul>
14845 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
14846 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
14847 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
14848 <li>Implementation-defined formats,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#isOutputSupportedFor(Class)">StreamConfigurationMap#isOutputSupportedFor(Class)</a></li>
14849 </ul>
14850 <p>For full guarantees,<wbr/> query <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> with a
14851 processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
14852 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
14853             </td>
14854           </tr>
14855
14856
14857           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14858            <!-- end of entry -->
14859         
14860                 
14861           <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
14862             <td class="entry_name
14863              " rowspan="3">
14864               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
14865             </td>
14866             <td class="entry_type">
14867                 <span class="entry_type_name">int32</span>
14868
14869               <span class="entry_type_visibility"> [public]</span>
14870
14871               <span class="entry_type_synthetic">[synthetic] </span>
14872
14873               <span class="entry_type_hwlevel">[legacy] </span>
14874
14875
14876
14877
14878             </td> <!-- entry_type -->
14879
14880             <td class="entry_description">
14881               <p>The maximum numbers of different types of output streams
14882 that can be configured and used simultaneously by a camera device
14883 for any processed (and stalling) formats.<wbr/></p>
14884             </td>
14885
14886             <td class="entry_units">
14887             </td>
14888
14889             <td class="entry_range">
14890               <p>&gt;= 1</p>
14891             </td>
14892
14893             <td class="entry_tags">
14894             </td>
14895
14896           </tr>
14897           <tr class="entries_header">
14898             <th class="th_details" colspan="5">Details</th>
14899           </tr>
14900           <tr class="entry_cont">
14901             <td class="entry_details" colspan="5">
14902               <p>This value contains the max number of output simultaneous
14903 streams for any processed (but not-stalling) formats.<wbr/></p>
14904 <p>This lists the upper bound of the number of output streams supported by
14905 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14906 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
14907 be 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>
14908 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations
14909 &gt; 0.<wbr/>  Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a
14910 stalling format.<wbr/></p>
14911 <p>For full guarantees,<wbr/> query <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> with a
14912 processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
14913 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
14914             </td>
14915           </tr>
14916
14917
14918           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14919            <!-- end of entry -->
14920         
14921                 
14922           <tr class="entry" id="static_android.request.maxNumReprocessStreams">
14923             <td class="entry_name
14924                 entry_name_deprecated
14925              " rowspan="3">
14926               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
14927             </td>
14928             <td class="entry_type">
14929                 <span class="entry_type_name">int32</span>
14930                 <span class="entry_type_container">x</span>
14931
14932                 <span class="entry_type_array">
14933                   1
14934                 </span>
14935               <span class="entry_type_visibility"> [system]</span>
14936
14937
14938
14939               <span class="entry_type_deprecated">[deprecated] </span>
14940
14941
14942
14943             </td> <!-- entry_type -->
14944
14945             <td class="entry_description">
14946               <p>How many reprocessing streams of any type
14947 can be allocated at the same time.<wbr/></p>
14948             </td>
14949
14950             <td class="entry_units">
14951             </td>
14952
14953             <td class="entry_range">
14954               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14955               <p>&gt;= 0</p>
14956             </td>
14957
14958             <td class="entry_tags">
14959               <ul class="entry_tags">
14960                   <li><a href="#tag_HAL2">HAL2</a></li>
14961               </ul>
14962             </td>
14963
14964           </tr>
14965           <tr class="entries_header">
14966             <th class="th_details" colspan="5">Details</th>
14967           </tr>
14968           <tr class="entry_cont">
14969             <td class="entry_details" colspan="5">
14970               <p>Only used by HAL2.<wbr/>x.<wbr/></p>
14971 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
14972             </td>
14973           </tr>
14974
14975
14976           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14977            <!-- end of entry -->
14978         
14979                 
14980           <tr class="entry" id="static_android.request.maxNumInputStreams">
14981             <td class="entry_name
14982              " rowspan="5">
14983               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
14984             </td>
14985             <td class="entry_type">
14986                 <span class="entry_type_name">int32</span>
14987
14988               <span class="entry_type_visibility"> [public]</span>
14989
14990
14991               <span class="entry_type_hwlevel">[full] </span>
14992
14993
14994
14995
14996             </td> <!-- entry_type -->
14997
14998             <td class="entry_description">
14999               <p>The maximum numbers of any type of input streams
15000 that can be configured and used simultaneously by a camera device.<wbr/></p>
15001             </td>
15002
15003             <td class="entry_units">
15004             </td>
15005
15006             <td class="entry_range">
15007               <p>0 or 1.<wbr/></p>
15008             </td>
15009
15010             <td class="entry_tags">
15011               <ul class="entry_tags">
15012                   <li><a href="#tag_REPROC">REPROC</a></li>
15013               </ul>
15014             </td>
15015
15016           </tr>
15017           <tr class="entries_header">
15018             <th class="th_details" colspan="5">Details</th>
15019           </tr>
15020           <tr class="entry_cont">
15021             <td class="entry_details" colspan="5">
15022               <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
15023 <p>The image format for a input stream can be any supported format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/> When using an
15024 input stream,<wbr/> there must be at least one output stream configured to to receive the
15025 reprocessed images.<wbr/></p>
15026 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
15027 only the input buffer will be used to produce these output stream buffers,<wbr/> and a
15028 new sensor image will not be captured.<wbr/></p>
15029 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
15030 stream image format will be PRIVATE,<wbr/> the associated output stream image format
15031 should be JPEG.<wbr/></p>
15032             </td>
15033           </tr>
15034
15035           <tr class="entries_header">
15036             <th class="th_details" colspan="5">HAL Implementation Details</th>
15037           </tr>
15038           <tr class="entry_cont">
15039             <td class="entry_details" colspan="5">
15040               <p>For the reprocessing flow and controls,<wbr/> see
15041 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
15042             </td>
15043           </tr>
15044
15045           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15046            <!-- end of entry -->
15047         
15048                 
15049           <tr class="entry" id="static_android.request.pipelineMaxDepth">
15050             <td class="entry_name
15051              " rowspan="5">
15052               android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
15053             </td>
15054             <td class="entry_type">
15055                 <span class="entry_type_name">byte</span>
15056
15057               <span class="entry_type_visibility"> [public]</span>
15058
15059
15060               <span class="entry_type_hwlevel">[legacy] </span>
15061
15062
15063
15064
15065             </td> <!-- entry_type -->
15066
15067             <td class="entry_description">
15068               <p>Specifies the number of maximum pipeline stages a frame
15069 has to go through from when it's exposed to when it's available
15070 to the framework.<wbr/></p>
15071             </td>
15072
15073             <td class="entry_units">
15074             </td>
15075
15076             <td class="entry_range">
15077             </td>
15078
15079             <td class="entry_tags">
15080             </td>
15081
15082           </tr>
15083           <tr class="entries_header">
15084             <th class="th_details" colspan="5">Details</th>
15085           </tr>
15086           <tr class="entry_cont">
15087             <td class="entry_details" colspan="5">
15088               <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
15089 one stage to readout) from the sensor.<wbr/> The ISP then usually adds
15090 its own stages to do custom HW processing.<wbr/> Further stages may be
15091 added by SW processing.<wbr/></p>
15092 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
15093 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
15094 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
15095 the max pipeline depth.<wbr/></p>
15096 <p>A pipeline depth of X stages is equivalent to a pipeline latency of
15097 X frame intervals.<wbr/></p>
15098 <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
15099 the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
15100             </td>
15101           </tr>
15102
15103           <tr class="entries_header">
15104             <th class="th_details" colspan="5">HAL Implementation Details</th>
15105           </tr>
15106           <tr class="entry_cont">
15107             <td class="entry_details" colspan="5">
15108               <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
15109 max batch sizes may be larger than 1.<wbr/></p>
15110             </td>
15111           </tr>
15112
15113           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15114            <!-- end of entry -->
15115         
15116                 
15117           <tr class="entry" id="static_android.request.partialResultCount">
15118             <td class="entry_name
15119              " rowspan="3">
15120               android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
15121             </td>
15122             <td class="entry_type">
15123                 <span class="entry_type_name">int32</span>
15124
15125               <span class="entry_type_visibility"> [public]</span>
15126
15127
15128
15129
15130
15131
15132             </td> <!-- entry_type -->
15133
15134             <td class="entry_description">
15135               <p>Defines how many sub-components
15136 a result will be composed of.<wbr/></p>
15137             </td>
15138
15139             <td class="entry_units">
15140             </td>
15141
15142             <td class="entry_range">
15143               <p>&gt;= 1</p>
15144             </td>
15145
15146             <td class="entry_tags">
15147             </td>
15148
15149           </tr>
15150           <tr class="entries_header">
15151             <th class="th_details" colspan="5">Details</th>
15152           </tr>
15153           <tr class="entry_cont">
15154             <td class="entry_details" colspan="5">
15155               <p>In order to combat the pipeline latency,<wbr/> partial results
15156 may be delivered to the application layer from the camera device as
15157 soon as they are available.<wbr/></p>
15158 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
15159 results are not supported,<wbr/> and only the final TotalCaptureResult will
15160 be produced by the camera device.<wbr/></p>
15161 <p>A typical use case for this might be: after requesting an
15162 auto-focus (AF) lock the new AF state might be available 50%
15163 of the way through the pipeline.<wbr/>  The camera device could
15164 then immediately dispatch this state via a partial result to
15165 the application,<wbr/> and the rest of the metadata via later
15166 partial results.<wbr/></p>
15167             </td>
15168           </tr>
15169
15170
15171           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15172            <!-- end of entry -->
15173         
15174                 
15175           <tr class="entry" id="static_android.request.availableCapabilities">
15176             <td class="entry_name
15177              " rowspan="5">
15178               android.<wbr/>request.<wbr/>available<wbr/>Capabilities
15179             </td>
15180             <td class="entry_type">
15181                 <span class="entry_type_name entry_type_name_enum">byte</span>
15182                 <span class="entry_type_container">x</span>
15183
15184                 <span class="entry_type_array">
15185                   n
15186                 </span>
15187               <span class="entry_type_visibility"> [public]</span>
15188
15189
15190               <span class="entry_type_hwlevel">[legacy] </span>
15191
15192
15193
15194                 <ul class="entry_type_enum">
15195                   <li>
15196                     <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span>
15197                     <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
15198 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
15199 supports.<wbr/></p>
15200 <p>This capability is listed by all normal devices,<wbr/> and
15201 indicates that the camera device has a feature set
15202 that's comparable to the baseline requirements for the
15203 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15204 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
15205 capability,<wbr/> indicating that they support only depth measurement,<wbr/>
15206 not standard color output.<wbr/></p></span>
15207                   </li>
15208                   <li>
15209                     <span class="entry_type_enum_name">MANUAL_SENSOR</span>
15210                     <span class="entry_type_enum_optional">[optional]</span>
15211                     <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
15212 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
15213 The camera device supports basic manual control of the sensor image
15214 acquisition related stages.<wbr/> This means the following controls are
15215 guaranteed to be supported:</p>
15216 <ul>
15217 <li>Manual frame duration control<ul>
15218 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
15219 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
15220 </ul>
15221 </li>
15222 <li>Manual exposure control<ul>
15223 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
15224 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
15225 </ul>
15226 </li>
15227 <li>Manual sensitivity control<ul>
15228 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
15229 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
15230 </ul>
15231 </li>
15232 <li>Manual lens control (if the lens is adjustable)<ul>
15233 <li>android.<wbr/>lens.<wbr/>*</li>
15234 </ul>
15235 </li>
15236 <li>Manual flash control (if a flash unit is present)<ul>
15237 <li>android.<wbr/>flash.<wbr/>*</li>
15238 </ul>
15239 </li>
15240 <li>Manual black level locking<ul>
15241 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
15242 </ul>
15243 </li>
15244 <li>Auto exposure lock<ul>
15245 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
15246 </ul>
15247 </li>
15248 </ul>
15249 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
15250 device will accurately report the values applied by 3A in the
15251 result.<wbr/></p>
15252 <p>A given camera device may also support additional manual sensor controls,<wbr/>
15253 but this capability only covers the above list of controls.<wbr/></p>
15254 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
15255 additionally return a min frame duration that is greater than
15256 zero for each supported size-format combination.<wbr/></p></span>
15257                   </li>
15258                   <li>
15259                     <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span>
15260                     <span class="entry_type_enum_optional">[optional]</span>
15261                     <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
15262 The camera device supports basic manual control of the image post-processing
15263 stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
15264 <ul>
15265 <li>
15266 <p>Manual tonemap control</p>
15267 <ul>
15268 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
15269 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
15270 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
15271 <li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
15272 <li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
15273 </ul>
15274 </li>
15275 <li>
15276 <p>Manual white balance control</p>
15277 <ul>
15278 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
15279 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
15280 </ul>
15281 </li>
15282 <li>Manual lens shading map control<ul>
15283 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
15284 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
15285 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
15286 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
15287 </ul>
15288 </li>
15289 <li>Manual aberration correction control (if aberration correction is supported)<ul>
15290 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
15291 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
15292 </ul>
15293 </li>
15294 <li>Auto white balance lock<ul>
15295 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
15296 </ul>
15297 </li>
15298 </ul>
15299 <p>If auto white balance is enabled,<wbr/> then the camera device
15300 will accurately report the values applied by AWB in the result.<wbr/></p>
15301 <p>A given camera device may also support additional post-processing
15302 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
15303                   </li>
15304                   <li>
15305                     <span class="entry_type_enum_name">RAW</span>
15306                     <span class="entry_type_enum_optional">[optional]</span>
15307                     <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
15308 metadata for interpreting them.<wbr/></p>
15309 <p>Devices supporting the RAW capability allow both for
15310 saving DNG files,<wbr/> and for direct application processing of
15311 raw sensor images.<wbr/></p>
15312 <ul>
15313 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
15314 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams
15315   will match either the value in
15316   <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
15317   <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
15318 <li>All DNG-related optional metadata entries are provided
15319   by the camera device.<wbr/></li>
15320 </ul></span>
15321                   </li>
15322                   <li>
15323                     <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span>
15324                     <span class="entry_type_enum_optional">[optional]</span>
15325                     <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
15326 <ul>
15327 <li>One input stream is supported,<wbr/> that is,<wbr/> <code><a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> == 1</code>.<wbr/></li>
15328 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is supported as an output/<wbr/>input format,<wbr/>
15329   that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
15330   formats returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li>
15331 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
15332   returns non empty int[] for each supported input format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/></li>
15333 <li>Each size returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputSizes">getInputSizes(ImageFormat.<wbr/>PRIVATE)</a> is also included in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">getOutputSizes(ImageFormat.<wbr/>PRIVATE)</a></li>
15334 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
15335   relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
15336 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
15337   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
15338   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
15339 <li>The maximum available resolution for PRIVATE streams
15340   (both input/<wbr/>output) will match the maximum available
15341   resolution of JPEG streams.<wbr/></li>
15342 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
15343 <li>Only below controls are effective for reprocessing requests and
15344   will be present in capture results,<wbr/> other controls in reprocess
15345   requests will be ignored by the camera device.<wbr/><ul>
15346 <li>android.<wbr/>jpeg.<wbr/>*</li>
15347 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
15348 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
15349 </ul>
15350 </li>
15351 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
15352   <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a> will both list ZERO_<wbr/>SHUTTER_<wbr/>LAG as a supported mode.<wbr/></li>
15353 </ul></span>
15354                   </li>
15355                   <li>
15356                     <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span>
15357                     <span class="entry_type_enum_optional">[optional]</span>
15358                     <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
15359 the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
15360 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
15361 <p>The values reported for the following controls are guaranteed to be available
15362 in the CaptureResult,<wbr/> including when 3A is enabled:</p>
15363 <ul>
15364 <li>Exposure control<ul>
15365 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
15366 </ul>
15367 </li>
15368 <li>Sensitivity control<ul>
15369 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
15370 </ul>
15371 </li>
15372 <li>Lens controls (if the lens is adjustable)<ul>
15373 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
15374 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
15375 </ul>
15376 </li>
15377 </ul>
15378 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
15379 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
15380                   </li>
15381                   <li>
15382                     <span class="entry_type_enum_name">BURST_CAPTURE</span>
15383                     <span class="entry_type_enum_optional">[optional]</span>
15384                     <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
15385 second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
15386 to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at &gt;= 10 frames
15387 per second.<wbr/>  Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
15388 resolution of the device,<wbr/> whichever is smaller.<wbr/></p>
15389 <p>More specifically,<wbr/> this means that a size matching the camera device's active array
15390 size is listed as a supported size for the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> format in either <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> or <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighResolutionOutputSizes">StreamConfigurationMap#getHighResolutionOutputSizes</a>,<wbr/>
15391 with a minimum frame duration for that format and size of either &lt;= 1/<wbr/>20 s,<wbr/> or
15392 &lt;= 1/<wbr/>10 s,<wbr/> respectively; and the <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> entry
15393 lists at least one FPS range where the minimum FPS is &gt;= 1 /<wbr/> minimumFrameDuration
15394 for the maximum-size YUV_<wbr/>420_<wbr/>888 format.<wbr/>  If that maximum size is listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighResolutionOutputSizes">StreamConfigurationMap#getHighResolutionOutputSizes</a>,<wbr/>
15395 then the list of resolutions for YUV_<wbr/>420_<wbr/>888 from <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> contains at
15396 least one resolution &gt;= 8 megapixels,<wbr/> with a minimum frame duration of &lt;= 1/<wbr/>20
15397 s.<wbr/></p>
15398 <p>If the device supports the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a>,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a>,<wbr/> then those can also be captured at the same rate
15399 as the maximum-size YUV_<wbr/>420_<wbr/>888 resolution is.<wbr/></p>
15400 <p>If the device supports the PRIVATE_<wbr/>REPROCESSING capability,<wbr/> then the same guarantees
15401 as for the YUV_<wbr/>420_<wbr/>888 format also apply to the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> format.<wbr/></p>
15402 <p>In addition,<wbr/> the <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> field is guaranted to have a value between 0
15403 and 4,<wbr/> inclusive.<wbr/> <a href="#static_android.control.aeLockAvailable">android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available</a> and <a href="#static_android.control.awbLockAvailable">android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available</a>
15404 are also guaranteed to be <code>true</code> so burst capture with these two locks ON yields
15405 consistent image output.<wbr/></p></span>
15406                   </li>
15407                   <li>
15408                     <span class="entry_type_enum_name">YUV_REPROCESSING</span>
15409                     <span class="entry_type_enum_optional">[optional]</span>
15410                     <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
15411 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
15412 following:</p>
15413 <ul>
15414 <li>One input stream is supported,<wbr/> that is,<wbr/> <code><a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> == 1</code>.<wbr/></li>
15415 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> is supported as an output/<wbr/>input format,<wbr/> that is,<wbr/>
15416   YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by
15417   <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and
15418   <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li>
15419 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
15420   returns non-empty int[] for each supported input format returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a>.<wbr/></li>
15421 <li>Each size returned by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputSizes">get<wbr/>Input<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)</a> is also included in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">get<wbr/>Output<wbr/>Sizes(YUV_<wbr/>420_<wbr/>888)</a></li>
15422 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> does not cause a frame rate drop
15423   relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
15424 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> will be reprocessable into both
15425   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
15426 <li>The maximum available resolution for <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> streams (both input/<wbr/>output) will match the
15427   maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
15428 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
15429 <li>Only the below controls are effective for reprocessing requests and will be present
15430   in capture results.<wbr/> The reprocess requests are from the original capture results that
15431   are associated with the intermediate <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a>
15432   output buffers.<wbr/>  All other controls in the reprocess requests will be ignored by the
15433   camera device.<wbr/><ul>
15434 <li>android.<wbr/>jpeg.<wbr/>*</li>
15435 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
15436 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
15437 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
15438 </ul>
15439 </li>
15440 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
15441   <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a> will both list ZERO_<wbr/>SHUTTER_<wbr/>LAG as a supported mode.<wbr/></li>
15442 </ul></span>
15443                   </li>
15444                   <li>
15445                     <span class="entry_type_enum_name">DEPTH_OUTPUT</span>
15446                     <span class="entry_type_enum_optional">[optional]</span>
15447                     <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
15448 <p>This capability requires the camera device to support the following:</p>
15449 <ul>
15450 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as an output format.<wbr/></li>
15451 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH_POINT_CLOUD">Image<wbr/>Format#DEPTH_<wbr/>POINT_<wbr/>CLOUD</a> is optionally supported as an
15452   output format.<wbr/></li>
15453 <li>This camera device,<wbr/> and all camera devices with the same <a href="#static_android.lens.facing">android.<wbr/>lens.<wbr/>facing</a>,<wbr/>
15454   will list the following calibration entries in both
15455   <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> and
15456   <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
15457 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
15458 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
15459 <li><a href="#dynamic_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
15460 <li><a href="#dynamic_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
15461 </ul>
15462 </li>
15463 <li>The <a href="#static_android.depth.depthIsExclusive">android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive</a> entry is listed by this device.<wbr/></li>
15464 <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
15465   normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
15466   format.<wbr/></li>
15467 </ul>
15468 <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
15469 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
15470 should be accounted for (see
15471 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
15472 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
15473 using a repeating burst is recommended,<wbr/> where a depth-output target is only included
15474 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
15475 rate,<wbr/> including depth stall time.<wbr/></p></span>
15476                   </li>
15477                   <li>
15478                     <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO</span>
15479                     <span class="entry_type_enum_optional">[optional]</span>
15480                     <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps)
15481 use case.<wbr/> The camera device will support high speed capture session created by
15482 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which
15483 only accepts high speed request lists created by
15484 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p>
15485 <p>A camera device can still support high speed video streaming by advertising the high speed
15486 FPS ranges in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a>.<wbr/> For this case,<wbr/> all normal
15487 capture request per frame control and synchronization requirements will apply to
15488 the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability describes
15489 the capability of a specialized operating mode with many limitations (see below),<wbr/> which
15490 is only targeted at high speed video recording.<wbr/></p>
15491 <p>The supported high speed video sizes and fps ranges are specified in
15492 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/>
15493 To get desired output frame rates,<wbr/> the application is only allowed to select video size
15494 and FPS range combinations provided by
15495 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/>
15496 The fps range can be controlled via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
15497 <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
15498 ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
15499 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
15500 and post-processing parameters is possible.<wbr/> All other controls operate the
15501 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
15502 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
15503 <ul>
15504 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
15505 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
15506 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
15507 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
15508 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
15509 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
15510 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
15511 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
15512 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
15513 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
15514 </ul>
15515 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
15516 <ul>
15517 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
15518 work since aeMode is ON)</li>
15519 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
15520 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
15521 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
15522 </ul>
15523 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
15524 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
15525 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
15526 the application need check if the video encoder is capable of supporting the
15527 high frame rate for a given video size,<wbr/> or it will end up with lower recording
15528 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
15529 rate will be bounded by the screen refresh rate.<wbr/></p>
15530 <p>The camera device will only support up to 2 high speed simultaneous output surfaces
15531 (preview and recording surfaces)
15532 in this mode.<wbr/> Above controls will be effective only if all of below conditions are true:</p>
15533 <ul>
15534 <li>The application creates a camera capture session with no more than 2 surfaces via
15535 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
15536 targeted surfaces must be preview surface (either from
15537 <a href="https://developer.android.com/reference/android/view/SurfaceView.html">SurfaceView</a> or <a href="https://developer.android.com/reference/android/graphics/SurfaceTexture.html">SurfaceTexture</a>) or
15538 recording surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or
15539 <a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li>
15540 <li>The stream sizes are selected from the sizes reported by
15541 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
15542 <li>The FPS ranges are selected from
15543 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li>
15544 </ul>
15545 <p>When above conditions are NOT satistied,<wbr/>
15546 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
15547 will fail.<wbr/></p>
15548 <p>Switching to a FPS range that has different maximum FPS may trigger some camera device
15549 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
15550 the application avoids unnecessary maximum target FPS changes as much as possible
15551 during high speed streaming.<wbr/></p></span>
15552                   </li>
15553                 </ul>
15554
15555             </td> <!-- entry_type -->
15556
15557             <td class="entry_description">
15558               <p>List of capabilities that this camera device
15559 advertises as fully supporting.<wbr/></p>
15560             </td>
15561
15562             <td class="entry_units">
15563             </td>
15564
15565             <td class="entry_range">
15566             </td>
15567
15568             <td class="entry_tags">
15569             </td>
15570
15571           </tr>
15572           <tr class="entries_header">
15573             <th class="th_details" colspan="5">Details</th>
15574           </tr>
15575           <tr class="entry_cont">
15576             <td class="entry_details" colspan="5">
15577               <p>A capability is a contract that the camera device makes in order
15578 to be able to satisfy one or more use cases.<wbr/></p>
15579 <p>Listing a capability guarantees that the whole set of features
15580 required to support a common use will all be available.<wbr/></p>
15581 <p>Using a subset of the functionality provided by an unsupported
15582 capability may be possible on a specific camera device implementation;
15583 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
15584 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
15585 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
15586 <p>The following capabilities are guaranteed to be available on
15587 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
15588 <ul>
15589 <li>MANUAL_<wbr/>SENSOR</li>
15590 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
15591 </ul>
15592 <p>Other capabilities may be available on either FULL or LIMITED
15593 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
15594             </td>
15595           </tr>
15596
15597           <tr class="entries_header">
15598             <th class="th_details" colspan="5">HAL Implementation Details</th>
15599           </tr>
15600           <tr class="entry_cont">
15601             <td class="entry_details" colspan="5">
15602               <p>Additional constraint details per-capability will be available
15603 in the Compatibility Test Suite.<wbr/></p>
15604 <p>Minimum baseline requirements required for the
15605 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
15606 Instead refer to "BC" tags and the camera CTS tests in the
15607 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
15608 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
15609 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
15610 request and the result in order to be considered to be
15611 capability-compliant.<wbr/></p>
15612 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
15613 then exposure time must be configurable via the request <em>and</em>
15614 the actual exposure applied must be available via
15615 the result.<wbr/></p>
15616 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
15617 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
15618 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
15619 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
15620 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
15621 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
15622 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
15623 YUV_<wbr/>REPROCESSING capability must support the
15624 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
15625 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
15626 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
15627 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
15628 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
15629 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
15630 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
15631 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
15632 DEPTH).<wbr/></p>
15633             </td>
15634           </tr>
15635
15636           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15637            <!-- end of entry -->
15638         
15639                 
15640           <tr class="entry" id="static_android.request.availableRequestKeys">
15641             <td class="entry_name
15642              " rowspan="5">
15643               android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
15644             </td>
15645             <td class="entry_type">
15646                 <span class="entry_type_name">int32</span>
15647                 <span class="entry_type_container">x</span>
15648
15649                 <span class="entry_type_array">
15650                   n
15651                 </span>
15652               <span class="entry_type_visibility"> [hidden]</span>
15653
15654
15655               <span class="entry_type_hwlevel">[legacy] </span>
15656
15657
15658
15659
15660             </td> <!-- entry_type -->
15661
15662             <td class="entry_description">
15663               <p>A list of all keys that the camera device has available
15664 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
15665             </td>
15666
15667             <td class="entry_units">
15668             </td>
15669
15670             <td class="entry_range">
15671             </td>
15672
15673             <td class="entry_tags">
15674             </td>
15675
15676           </tr>
15677           <tr class="entries_header">
15678             <th class="th_details" colspan="5">Details</th>
15679           </tr>
15680           <tr class="entry_cont">
15681             <td class="entry_details" colspan="5">
15682               <p>Attempting to set a key into a CaptureRequest that is not
15683 listed here will result in an invalid request and will be rejected
15684 by the camera device.<wbr/></p>
15685 <p>This field can be used to query the feature set of a camera device
15686 at a more granular level than capabilities.<wbr/> This is especially
15687 important for optional keys that are not listed under any capability
15688 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
15689             </td>
15690           </tr>
15691
15692           <tr class="entries_header">
15693             <th class="th_details" colspan="5">HAL Implementation Details</th>
15694           </tr>
15695           <tr class="entry_cont">
15696             <td class="entry_details" colspan="5">
15697               <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15698 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15699 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15700 vendor extensions API and not against this field.<wbr/></p>
15701 <p>The HAL must not consume any request tags that are not listed either
15702 here or in the vendor tag list.<wbr/></p>
15703 <p>The public camera2 API will always make the vendor tags visible
15704 via
15705 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
15706             </td>
15707           </tr>
15708
15709           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15710            <!-- end of entry -->
15711         
15712                 
15713           <tr class="entry" id="static_android.request.availableResultKeys">
15714             <td class="entry_name
15715              " rowspan="5">
15716               android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
15717             </td>
15718             <td class="entry_type">
15719                 <span class="entry_type_name">int32</span>
15720                 <span class="entry_type_container">x</span>
15721
15722                 <span class="entry_type_array">
15723                   n
15724                 </span>
15725               <span class="entry_type_visibility"> [hidden]</span>
15726
15727
15728               <span class="entry_type_hwlevel">[legacy] </span>
15729
15730
15731
15732
15733             </td> <!-- entry_type -->
15734
15735             <td class="entry_description">
15736               <p>A list of all keys that the camera device has available
15737 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p>
15738             </td>
15739
15740             <td class="entry_units">
15741             </td>
15742
15743             <td class="entry_range">
15744             </td>
15745
15746             <td class="entry_tags">
15747             </td>
15748
15749           </tr>
15750           <tr class="entries_header">
15751             <th class="th_details" colspan="5">Details</th>
15752           </tr>
15753           <tr class="entry_cont">
15754             <td class="entry_details" colspan="5">
15755               <p>Attempting to get a key from a CaptureResult that is not
15756 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
15757 a CaptureResult that is listed here will generally never return a <code>null</code>
15758 value.<wbr/></p>
15759 <p>The following keys may return <code>null</code> unless they are enabled:</p>
15760 <ul>
15761 <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>
15762 </ul>
15763 <p>(Those sometimes-null keys will nevertheless be listed here
15764 if they are available.<wbr/>)</p>
15765 <p>This field can be used to query the feature set of a camera device
15766 at a more granular level than capabilities.<wbr/> This is especially
15767 important for optional keys that are not listed under any capability
15768 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
15769             </td>
15770           </tr>
15771
15772           <tr class="entries_header">
15773             <th class="th_details" colspan="5">HAL Implementation Details</th>
15774           </tr>
15775           <tr class="entry_cont">
15776             <td class="entry_details" colspan="5">
15777               <p>Tags listed here must always have an entry in the result metadata,<wbr/>
15778 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
15779 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
15780 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15781 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15782 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15783 vendor extensions API and not against this field.<wbr/></p>
15784 <p>The HAL must not produce any result tags that are not listed either
15785 here or in the vendor tag list.<wbr/></p>
15786 <p>The public camera2 API will always make the vendor tags visible via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
15787             </td>
15788           </tr>
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.request.availableCharacteristicsKeys">
15795             <td class="entry_name
15796              " rowspan="5">
15797               android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
15798             </td>
15799             <td class="entry_type">
15800                 <span class="entry_type_name">int32</span>
15801                 <span class="entry_type_container">x</span>
15802
15803                 <span class="entry_type_array">
15804                   n
15805                 </span>
15806               <span class="entry_type_visibility"> [hidden]</span>
15807
15808
15809               <span class="entry_type_hwlevel">[legacy] </span>
15810
15811
15812
15813
15814             </td> <!-- entry_type -->
15815
15816             <td class="entry_description">
15817               <p>A list of all keys that the camera device has available
15818 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<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             </td>
15829
15830           </tr>
15831           <tr class="entries_header">
15832             <th class="th_details" colspan="5">Details</th>
15833           </tr>
15834           <tr class="entry_cont">
15835             <td class="entry_details" colspan="5">
15836               <p>This entry follows the same rules as
15837 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
15838 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
15839 details.<wbr/></p>
15840             </td>
15841           </tr>
15842
15843           <tr class="entries_header">
15844             <th class="th_details" colspan="5">HAL Implementation Details</th>
15845           </tr>
15846           <tr class="entry_cont">
15847             <td class="entry_details" colspan="5">
15848               <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
15849 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
15850 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
15851 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15852 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15853 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15854 vendor extensions API and not against this field.<wbr/></p>
15855 <p>The HAL must not have any tags in its static info that are not listed
15856 either here or in the vendor tag list.<wbr/></p>
15857 <p>The public camera2 API will always make the vendor tags visible
15858 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
15859             </td>
15860           </tr>
15861
15862           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15863            <!-- end of entry -->
15864         
15865         
15866
15867       <!-- end of kind -->
15868       </tbody>
15869       <tr><td colspan="6" class="kind">dynamic</td></tr>
15870
15871       <thead class="entries_header">
15872         <tr>
15873           <th class="th_name">Property Name</th>
15874           <th class="th_type">Type</th>
15875           <th class="th_description">Description</th>
15876           <th class="th_units">Units</th>
15877           <th class="th_range">Range</th>
15878           <th class="th_tags">Tags</th>
15879         </tr>
15880       </thead>
15881
15882       <tbody>
15883
15884         
15885
15886         
15887
15888         
15889
15890         
15891
15892                 
15893           <tr class="entry" id="dynamic_android.request.frameCount">
15894             <td class="entry_name
15895                 entry_name_deprecated
15896              " rowspan="3">
15897               android.<wbr/>request.<wbr/>frame<wbr/>Count
15898             </td>
15899             <td class="entry_type">
15900                 <span class="entry_type_name">int32</span>
15901
15902               <span class="entry_type_visibility"> [hidden]</span>
15903
15904
15905
15906               <span class="entry_type_deprecated">[deprecated] </span>
15907
15908
15909
15910             </td> <!-- entry_type -->
15911
15912             <td class="entry_description">
15913               <p>A frame counter set by the framework.<wbr/> This value monotonically
15914 increases with every new result (that is,<wbr/> each new result has a unique
15915 frameCount value).<wbr/></p>
15916             </td>
15917
15918             <td class="entry_units">
15919               count of frames
15920             </td>
15921
15922             <td class="entry_range">
15923               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15924               <p>&gt; 0</p>
15925             </td>
15926
15927             <td class="entry_tags">
15928             </td>
15929
15930           </tr>
15931           <tr class="entries_header">
15932             <th class="th_details" colspan="5">Details</th>
15933           </tr>
15934           <tr class="entry_cont">
15935             <td class="entry_details" colspan="5">
15936               <p>Reset on release()</p>
15937             </td>
15938           </tr>
15939
15940
15941           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15942            <!-- end of entry -->
15943         
15944                 
15945           <tr class="entry" id="dynamic_android.request.id">
15946             <td class="entry_name
15947              " rowspan="1">
15948               android.<wbr/>request.<wbr/>id
15949             </td>
15950             <td class="entry_type">
15951                 <span class="entry_type_name">int32</span>
15952
15953               <span class="entry_type_visibility"> [hidden]</span>
15954
15955
15956
15957
15958
15959
15960             </td> <!-- entry_type -->
15961
15962             <td class="entry_description">
15963               <p>An application-specified ID for the current
15964 request.<wbr/> Must be maintained unchanged in output
15965 frame</p>
15966             </td>
15967
15968             <td class="entry_units">
15969               arbitrary integer assigned by application
15970             </td>
15971
15972             <td class="entry_range">
15973               <p>Any int</p>
15974             </td>
15975
15976             <td class="entry_tags">
15977               <ul class="entry_tags">
15978                   <li><a href="#tag_V1">V1</a></li>
15979               </ul>
15980             </td>
15981
15982           </tr>
15983
15984
15985           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15986            <!-- end of entry -->
15987         
15988                 
15989           <tr class="entry" id="dynamic_android.request.metadataMode">
15990             <td class="entry_name
15991              " rowspan="1">
15992               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
15993             </td>
15994             <td class="entry_type">
15995                 <span class="entry_type_name entry_type_name_enum">byte</span>
15996
15997               <span class="entry_type_visibility"> [system]</span>
15998
15999
16000
16001
16002
16003                 <ul class="entry_type_enum">
16004                   <li>
16005                     <span class="entry_type_enum_name">NONE</span>
16006                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
16007 for application-bound buffer data.<wbr/> If no
16008 application-bound streams exist,<wbr/> no frame should be
16009 placed in the output frame queue.<wbr/> If such streams
16010 exist,<wbr/> a frame should be placed on the output queue
16011 with null metadata but with the necessary output buffer
16012 information.<wbr/> Timestamp information should still be
16013 included with any output stream buffers</p></span>
16014                   </li>
16015                   <li>
16016                     <span class="entry_type_enum_name">FULL</span>
16017                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
16018 only be produced if they are separately
16019 enabled</p></span>
16020                   </li>
16021                 </ul>
16022
16023             </td> <!-- entry_type -->
16024
16025             <td class="entry_description">
16026               <p>How much metadata to produce on
16027 output</p>
16028             </td>
16029
16030             <td class="entry_units">
16031             </td>
16032
16033             <td class="entry_range">
16034             </td>
16035
16036             <td class="entry_tags">
16037               <ul class="entry_tags">
16038                   <li><a href="#tag_FUTURE">FUTURE</a></li>
16039               </ul>
16040             </td>
16041
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="dynamic_android.request.outputStreams">
16050             <td class="entry_name
16051                 entry_name_deprecated
16052              " rowspan="3">
16053               android.<wbr/>request.<wbr/>output<wbr/>Streams
16054             </td>
16055             <td class="entry_type">
16056                 <span class="entry_type_name">int32</span>
16057                 <span class="entry_type_container">x</span>
16058
16059                 <span class="entry_type_array">
16060                   n
16061                 </span>
16062               <span class="entry_type_visibility"> [system]</span>
16063
16064
16065
16066               <span class="entry_type_deprecated">[deprecated] </span>
16067
16068
16069
16070             </td> <!-- entry_type -->
16071
16072             <td class="entry_description">
16073               <p>Lists which camera output streams image data
16074 from this capture must be sent to</p>
16075             </td>
16076
16077             <td class="entry_units">
16078               List of camera stream IDs
16079             </td>
16080
16081             <td class="entry_range">
16082               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16083               <p>List must only include streams that have been
16084 created</p>
16085             </td>
16086
16087             <td class="entry_tags">
16088               <ul class="entry_tags">
16089                   <li><a href="#tag_HAL2">HAL2</a></li>
16090               </ul>
16091             </td>
16092
16093           </tr>
16094           <tr class="entries_header">
16095             <th class="th_details" colspan="5">Details</th>
16096           </tr>
16097           <tr class="entry_cont">
16098             <td class="entry_details" colspan="5">
16099               <p>If no output streams are listed,<wbr/> then the image
16100 data should simply be discarded.<wbr/> The image data must
16101 still be captured for metadata and statistics production,<wbr/>
16102 and the lens and flash must operate as requested.<wbr/></p>
16103             </td>
16104           </tr>
16105
16106
16107           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16108            <!-- end of entry -->
16109         
16110                 
16111           <tr class="entry" id="dynamic_android.request.pipelineDepth">
16112             <td class="entry_name
16113              " rowspan="5">
16114               android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
16115             </td>
16116             <td class="entry_type">
16117                 <span class="entry_type_name">byte</span>
16118
16119               <span class="entry_type_visibility"> [public]</span>
16120
16121
16122               <span class="entry_type_hwlevel">[legacy] </span>
16123
16124
16125
16126
16127             </td> <!-- entry_type -->
16128
16129             <td class="entry_description">
16130               <p>Specifies the number of pipeline stages the frame went
16131 through from when it was exposed to when the final completed result
16132 was available to the framework.<wbr/></p>
16133             </td>
16134
16135             <td class="entry_units">
16136             </td>
16137
16138             <td class="entry_range">
16139               <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
16140             </td>
16141
16142             <td class="entry_tags">
16143             </td>
16144
16145           </tr>
16146           <tr class="entries_header">
16147             <th class="th_details" colspan="5">Details</th>
16148           </tr>
16149           <tr class="entry_cont">
16150             <td class="entry_details" colspan="5">
16151               <p>Depending on what settings are used in the request,<wbr/> and
16152 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
16153 and some pipeline stages skipped.<wbr/></p>
16154 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
16155             </td>
16156           </tr>
16157
16158           <tr class="entries_header">
16159             <th class="th_details" colspan="5">HAL Implementation Details</th>
16160           </tr>
16161           <tr class="entry_cont">
16162             <td class="entry_details" colspan="5">
16163               <p>This value must always represent the accurate count of how many
16164 pipeline stages were actually used.<wbr/></p>
16165             </td>
16166           </tr>
16167
16168           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16169            <!-- end of entry -->
16170         
16171         
16172
16173       <!-- end of kind -->
16174       </tbody>
16175
16176   <!-- end of section -->
16177   <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr>
16178
16179
16180       <tr><td colspan="6" class="kind">controls</td></tr>
16181
16182       <thead class="entries_header">
16183         <tr>
16184           <th class="th_name">Property Name</th>
16185           <th class="th_type">Type</th>
16186           <th class="th_description">Description</th>
16187           <th class="th_units">Units</th>
16188           <th class="th_range">Range</th>
16189           <th class="th_tags">Tags</th>
16190         </tr>
16191       </thead>
16192
16193       <tbody>
16194
16195         
16196
16197         
16198
16199         
16200
16201         
16202
16203                 
16204           <tr class="entry" id="controls_android.scaler.cropRegion">
16205             <td class="entry_name
16206              " rowspan="5">
16207               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
16208             </td>
16209             <td class="entry_type">
16210                 <span class="entry_type_name">int32</span>
16211                 <span class="entry_type_container">x</span>
16212
16213                 <span class="entry_type_array">
16214                   4
16215                 </span>
16216               <span class="entry_type_visibility"> [public as rectangle]</span>
16217
16218
16219               <span class="entry_type_hwlevel">[legacy] </span>
16220
16221
16222
16223
16224             </td> <!-- entry_type -->
16225
16226             <td class="entry_description">
16227               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
16228             </td>
16229
16230             <td class="entry_units">
16231               Pixel coordinates relative to
16232           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
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_BC">BC</a></li>
16241               </ul>
16242             </td>
16243
16244           </tr>
16245           <tr class="entries_header">
16246             <th class="th_details" colspan="5">Details</th>
16247           </tr>
16248           <tr class="entry_cont">
16249             <td class="entry_details" colspan="5">
16250               <p>This control can be used to implement digital zoom.<wbr/></p>
16251 <p>The crop region coordinate system is based off
16252 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with <code>(0,<wbr/> 0)</code> being the
16253 top-left corner of the sensor active array.<wbr/></p>
16254 <p>Output streams use this rectangle to produce their output,<wbr/>
16255 cropping to a smaller region if necessary to maintain the
16256 stream's aspect ratio,<wbr/> then scaling the sensor input to
16257 match the output's configured resolution.<wbr/></p>
16258 <p>The crop region is applied after the RAW to other color
16259 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
16260 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
16261 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
16262 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
16263 be done to maximize the final pixel area of the stream.<wbr/></p>
16264 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
16265 ratio,<wbr/> then 4:3 streams will use the exact crop
16266 region.<wbr/> 16:9 streams will further crop vertically
16267 (letterbox).<wbr/></p>
16268 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
16269 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
16270 streams will match exactly.<wbr/> These additional crops will
16271 be centered within the crop region.<wbr/></p>
16272 <p>The width and height of the crop region cannot
16273 be set to be smaller than
16274 <code>floor( activeArraySize.<wbr/>width /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code> and
16275 <code>floor( activeArraySize.<wbr/>height /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>,<wbr/> respectively.<wbr/></p>
16276 <p>The camera device may adjust the crop region to account
16277 for rounding and other hardware requirements; the final
16278 crop region used will be included in the output capture
16279 result.<wbr/></p>
16280             </td>
16281           </tr>
16282
16283           <tr class="entries_header">
16284             <th class="th_details" colspan="5">HAL Implementation Details</th>
16285           </tr>
16286           <tr class="entry_cont">
16287             <td class="entry_details" colspan="5">
16288               <p>The output streams must maintain square pixels at all
16289 times,<wbr/> no matter what the relative aspect ratios of the
16290 crop region and the stream are.<wbr/>  Negative values for
16291 corner are allowed for raw output if full pixel array is
16292 larger than active pixel array.<wbr/> Width and height may be
16293 rounded to nearest larger supportable width,<wbr/> especially
16294 for raw output,<wbr/> where only a few fixed scales may be
16295 possible.<wbr/></p>
16296 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
16297 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
16298 <ul>
16299 <li>
16300 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
16301 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
16302 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> to the sensor cropped pixel area size in this way:</p>
16303 <ol>
16304 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
16305 cropped pixel area by (tx,<wbr/> ty),<wbr/>
16306 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
16307 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
16308 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
16309 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
16310 <li>Scale the width and height of requested cropRegion with scaling factor of
16311 sensor<wbr/>Crop.<wbr/>width/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>height
16312 respectively.<wbr/>
16313 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
16314 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
16315 follow the general cropping rule for this new cropRegion and effective active
16316 array size.<wbr/></li>
16317 </ol>
16318 </li>
16319 <li>
16320 <p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>
16321 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
16322 The reported cropRegion may be slightly different with the requested cropRegion since
16323 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
16324 hardware limitations.<wbr/></p>
16325 </li>
16326 </ul>
16327 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
16328             </td>
16329           </tr>
16330
16331           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16332            <!-- end of entry -->
16333         
16334         
16335
16336       <!-- end of kind -->
16337       </tbody>
16338       <tr><td colspan="6" class="kind">static</td></tr>
16339
16340       <thead class="entries_header">
16341         <tr>
16342           <th class="th_name">Property Name</th>
16343           <th class="th_type">Type</th>
16344           <th class="th_description">Description</th>
16345           <th class="th_units">Units</th>
16346           <th class="th_range">Range</th>
16347           <th class="th_tags">Tags</th>
16348         </tr>
16349       </thead>
16350
16351       <tbody>
16352
16353         
16354
16355         
16356
16357         
16358
16359         
16360
16361                 
16362           <tr class="entry" id="static_android.scaler.availableFormats">
16363             <td class="entry_name
16364                 entry_name_deprecated
16365              " rowspan="5">
16366               android.<wbr/>scaler.<wbr/>available<wbr/>Formats
16367             </td>
16368             <td class="entry_type">
16369                 <span class="entry_type_name entry_type_name_enum">int32</span>
16370                 <span class="entry_type_container">x</span>
16371
16372                 <span class="entry_type_array">
16373                   n
16374                 </span>
16375               <span class="entry_type_visibility"> [hidden as imageFormat]</span>
16376
16377
16378
16379               <span class="entry_type_deprecated">[deprecated] </span>
16380
16381
16382                 <ul class="entry_type_enum">
16383                   <li>
16384                     <span class="entry_type_enum_name">RAW16</span>
16385                     <span class="entry_type_enum_optional">[optional]</span>
16386                     <span class="entry_type_enum_value">0x20</span>
16387                     <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
16388 buffers with 16-bit pixels.<wbr/></p>
16389 <p>Buffers of this format are typically expected to have a
16390 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
16391 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
16392 CFAs that are not representable by a format in
16393 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
16394 use this format.<wbr/></p>
16395 <p>Buffers of this format will also follow the constraints given for
16396 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
16397 <p>This format is intended to give users access to the full contents
16398 of the buffers coming directly from the image sensor prior to any
16399 cropping or scaling operations,<wbr/> and all coordinate systems for
16400 metadata used for this format are relative to the size of the
16401 active region of the image sensor before any geometric distortion
16402 correction has been applied (i.<wbr/>e.<wbr/>
16403 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>).<wbr/> Supported
16404 dimensions for this format are limited to the full dimensions of
16405 the sensor (e.<wbr/>g.<wbr/> either <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
16406 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> will be the
16407 only supported output size).<wbr/></p>
16408 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
16409 the full set of performance guarantees.<wbr/></p></span>
16410                   </li>
16411                   <li>
16412                     <span class="entry_type_enum_name">RAW_OPAQUE</span>
16413                     <span class="entry_type_enum_optional">[optional]</span>
16414                     <span class="entry_type_enum_value">0x24</span>
16415                     <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE is a format for raw image buffers coming from an
16416 image sensor.<wbr/></p>
16417 <p>The actual structure of buffers of this format is
16418 platform-specific,<wbr/> but must follow several constraints:</p>
16419 <ol>
16420 <li>No image post-processing operations may have been applied to
16421 buffers of this type.<wbr/> These buffers contain raw image data coming
16422 directly from the image sensor.<wbr/></li>
16423 <li>If a buffer of this format is passed to the camera device for
16424 reprocessing,<wbr/> the resulting images will be identical to the images
16425 produced if the buffer had come directly from the sensor and was
16426 processed with the same settings.<wbr/></li>
16427 </ol>
16428 <p>The intended use for this format is to allow access to the native
16429 raw format buffers coming directly from the camera sensor without
16430 any additional conversions or decrease in framerate.<wbr/></p>
16431 <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
16432 performance guarantees.<wbr/></p></span>
16433                   </li>
16434                   <li>
16435                     <span class="entry_type_enum_name">YV12</span>
16436                     <span class="entry_type_enum_optional">[optional]</span>
16437                     <span class="entry_type_enum_value">0x32315659</span>
16438                     <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
16439                   </li>
16440                   <li>
16441                     <span class="entry_type_enum_name">YCrCb_420_SP</span>
16442                     <span class="entry_type_enum_optional">[optional]</span>
16443                     <span class="entry_type_enum_value">0x11</span>
16444                     <span class="entry_type_enum_notes"><p>NV21</p></span>
16445                   </li>
16446                   <li>
16447                     <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span>
16448                     <span class="entry_type_enum_value">0x22</span>
16449                     <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
16450                   </li>
16451                   <li>
16452                     <span class="entry_type_enum_name">YCbCr_420_888</span>
16453                     <span class="entry_type_enum_value">0x23</span>
16454                     <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
16455                   </li>
16456                   <li>
16457                     <span class="entry_type_enum_name">BLOB</span>
16458                     <span class="entry_type_enum_value">0x21</span>
16459                     <span class="entry_type_enum_notes"><p>JPEG format</p></span>
16460                   </li>
16461                 </ul>
16462
16463             </td> <!-- entry_type -->
16464
16465             <td class="entry_description">
16466               <p>The list of image formats that are supported by this
16467 camera device for output streams.<wbr/></p>
16468             </td>
16469
16470             <td class="entry_units">
16471             </td>
16472
16473             <td class="entry_range">
16474               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16475             </td>
16476
16477             <td class="entry_tags">
16478               <ul class="entry_tags">
16479                   <li><a href="#tag_BC">BC</a></li>
16480               </ul>
16481             </td>
16482
16483           </tr>
16484           <tr class="entries_header">
16485             <th class="th_details" colspan="5">Details</th>
16486           </tr>
16487           <tr class="entry_cont">
16488             <td class="entry_details" colspan="5">
16489               <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
16490 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
16491             </td>
16492           </tr>
16493
16494           <tr class="entries_header">
16495             <th class="th_details" colspan="5">HAL Implementation Details</th>
16496           </tr>
16497           <tr class="entry_cont">
16498             <td class="entry_details" colspan="5">
16499               <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
16500 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
16501 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
16502 gralloc module will select a format based on the usage flags provided
16503 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
16504 usually used by preview and recording streams,<wbr/> where the application doesn't
16505 need access the image data.<wbr/></p>
16506 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
16507 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
16508 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
16509 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
16510 recommended that any information used by the camera device when
16511 processing images is fully expressed by the result metadata
16512 for that image buffer.<wbr/></p>
16513             </td>
16514           </tr>
16515
16516           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16517            <!-- end of entry -->
16518         
16519                 
16520           <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
16521             <td class="entry_name
16522                 entry_name_deprecated
16523              " rowspan="3">
16524               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
16525             </td>
16526             <td class="entry_type">
16527                 <span class="entry_type_name">int64</span>
16528                 <span class="entry_type_container">x</span>
16529
16530                 <span class="entry_type_array">
16531                   n
16532                 </span>
16533               <span class="entry_type_visibility"> [hidden]</span>
16534
16535
16536
16537               <span class="entry_type_deprecated">[deprecated] </span>
16538
16539
16540
16541             </td> <!-- entry_type -->
16542
16543             <td class="entry_description">
16544               <p>The minimum frame duration that is supported
16545 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
16546             </td>
16547
16548             <td class="entry_units">
16549               Nanoseconds
16550             </td>
16551
16552             <td class="entry_range">
16553               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16554               <p>TODO: Remove property.<wbr/></p>
16555             </td>
16556
16557             <td class="entry_tags">
16558               <ul class="entry_tags">
16559                   <li><a href="#tag_BC">BC</a></li>
16560               </ul>
16561             </td>
16562
16563           </tr>
16564           <tr class="entries_header">
16565             <th class="th_details" colspan="5">Details</th>
16566           </tr>
16567           <tr class="entry_cont">
16568             <td class="entry_details" colspan="5">
16569               <p>This corresponds to the minimum steady-state frame duration when only
16570 that JPEG stream is active and captured in a burst,<wbr/> with all
16571 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
16572 <p>When multiple streams are configured,<wbr/> the minimum
16573 frame duration will be &gt;= max(individual stream min
16574 durations)</p>
16575             </td>
16576           </tr>
16577
16578
16579           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16580            <!-- end of entry -->
16581         
16582                 
16583           <tr class="entry" id="static_android.scaler.availableJpegSizes">
16584             <td class="entry_name
16585                 entry_name_deprecated
16586              " rowspan="5">
16587               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
16588             </td>
16589             <td class="entry_type">
16590                 <span class="entry_type_name">int32</span>
16591                 <span class="entry_type_container">x</span>
16592
16593                 <span class="entry_type_array">
16594                   n x 2
16595                 </span>
16596               <span class="entry_type_visibility"> [hidden as size]</span>
16597
16598
16599
16600               <span class="entry_type_deprecated">[deprecated] </span>
16601
16602
16603
16604             </td> <!-- entry_type -->
16605
16606             <td class="entry_description">
16607               <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
16608             </td>
16609
16610             <td class="entry_units">
16611             </td>
16612
16613             <td class="entry_range">
16614               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16615               <p>TODO: Remove property.<wbr/></p>
16616             </td>
16617
16618             <td class="entry_tags">
16619               <ul class="entry_tags">
16620                   <li><a href="#tag_BC">BC</a></li>
16621               </ul>
16622             </td>
16623
16624           </tr>
16625           <tr class="entries_header">
16626             <th class="th_details" colspan="5">Details</th>
16627           </tr>
16628           <tr class="entry_cont">
16629             <td class="entry_details" colspan="5">
16630               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
16631 sensor 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>
16632             </td>
16633           </tr>
16634
16635           <tr class="entries_header">
16636             <th class="th_details" colspan="5">HAL Implementation Details</th>
16637           </tr>
16638           <tr class="entry_cont">
16639             <td class="entry_details" colspan="5">
16640               <p>The HAL must include sensor maximum resolution
16641 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
16642 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
16643             </td>
16644           </tr>
16645
16646           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16647            <!-- end of entry -->
16648         
16649                 
16650           <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
16651             <td class="entry_name
16652              " rowspan="3">
16653               android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
16654             </td>
16655             <td class="entry_type">
16656                 <span class="entry_type_name">float</span>
16657
16658               <span class="entry_type_visibility"> [public]</span>
16659
16660
16661               <span class="entry_type_hwlevel">[legacy] </span>
16662
16663
16664
16665
16666             </td> <!-- entry_type -->
16667
16668             <td class="entry_description">
16669               <p>The maximum ratio between both active area width
16670 and crop region width,<wbr/> and active area height and
16671 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
16672             </td>
16673
16674             <td class="entry_units">
16675               Zoom scale factor
16676             </td>
16677
16678             <td class="entry_range">
16679               <p>&gt;=1</p>
16680             </td>
16681
16682             <td class="entry_tags">
16683               <ul class="entry_tags">
16684                   <li><a href="#tag_BC">BC</a></li>
16685               </ul>
16686             </td>
16687
16688           </tr>
16689           <tr class="entries_header">
16690             <th class="th_details" colspan="5">Details</th>
16691           </tr>
16692           <tr class="entry_cont">
16693             <td class="entry_details" colspan="5">
16694               <p>This represents the maximum amount of zooming possible by
16695 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
16696 window size.<wbr/></p>
16697 <p>Crop regions that have a width or height that is smaller
16698 than this ratio allows will be rounded up to the minimum
16699 allowed size by the camera device.<wbr/></p>
16700             </td>
16701           </tr>
16702
16703
16704           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16705            <!-- end of entry -->
16706         
16707                 
16708           <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
16709             <td class="entry_name
16710                 entry_name_deprecated
16711              " rowspan="3">
16712               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
16713             </td>
16714             <td class="entry_type">
16715                 <span class="entry_type_name">int64</span>
16716                 <span class="entry_type_container">x</span>
16717
16718                 <span class="entry_type_array">
16719                   n
16720                 </span>
16721               <span class="entry_type_visibility"> [hidden]</span>
16722
16723
16724
16725               <span class="entry_type_deprecated">[deprecated] </span>
16726
16727
16728
16729             </td> <!-- entry_type -->
16730
16731             <td class="entry_description">
16732               <p>For each available processed output size (defined in
16733 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
16734 minimum supportable frame duration for that size.<wbr/></p>
16735             </td>
16736
16737             <td class="entry_units">
16738               Nanoseconds
16739             </td>
16740
16741             <td class="entry_range">
16742               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16743             </td>
16744
16745             <td class="entry_tags">
16746               <ul class="entry_tags">
16747                   <li><a href="#tag_BC">BC</a></li>
16748               </ul>
16749             </td>
16750
16751           </tr>
16752           <tr class="entries_header">
16753             <th class="th_details" colspan="5">Details</th>
16754           </tr>
16755           <tr class="entry_cont">
16756             <td class="entry_details" colspan="5">
16757               <p>This should correspond to the frame duration when only that processed
16758 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
16759 set to FAST.<wbr/></p>
16760 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
16761 be &gt;= max(individual stream min durations).<wbr/></p>
16762             </td>
16763           </tr>
16764
16765
16766           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16767            <!-- end of entry -->
16768         
16769                 
16770           <tr class="entry" id="static_android.scaler.availableProcessedSizes">
16771             <td class="entry_name
16772                 entry_name_deprecated
16773              " rowspan="5">
16774               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
16775             </td>
16776             <td class="entry_type">
16777                 <span class="entry_type_name">int32</span>
16778                 <span class="entry_type_container">x</span>
16779
16780                 <span class="entry_type_array">
16781                   n x 2
16782                 </span>
16783               <span class="entry_type_visibility"> [hidden as size]</span>
16784
16785
16786
16787               <span class="entry_type_deprecated">[deprecated] </span>
16788
16789
16790
16791             </td> <!-- entry_type -->
16792
16793             <td class="entry_description">
16794               <p>The resolutions available for use with
16795 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
16796 platform opaque YUV/<wbr/>RGB streams to the GPU or video
16797 encoders.<wbr/></p>
16798             </td>
16799
16800             <td class="entry_units">
16801             </td>
16802
16803             <td class="entry_range">
16804               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16805             </td>
16806
16807             <td class="entry_tags">
16808               <ul class="entry_tags">
16809                   <li><a href="#tag_BC">BC</a></li>
16810               </ul>
16811             </td>
16812
16813           </tr>
16814           <tr class="entries_header">
16815             <th class="th_details" colspan="5">Details</th>
16816           </tr>
16817           <tr class="entry_cont">
16818             <td class="entry_details" colspan="5">
16819               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
16820 <p>For a given use case,<wbr/> the actual maximum supported resolution
16821 may be lower than what is listed here,<wbr/> depending on the destination
16822 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
16823 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
16824 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
16825 can provide.<wbr/></p>
16826 <p>Please reference the documentation for the image data destination to
16827 check if it limits the maximum size for image data.<wbr/></p>
16828             </td>
16829           </tr>
16830
16831           <tr class="entries_header">
16832             <th class="th_details" colspan="5">HAL Implementation Details</th>
16833           </tr>
16834           <tr class="entry_cont">
16835             <td class="entry_details" colspan="5">
16836               <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/>
16837 the HAL must include all JPEG sizes listed in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>
16838 and each below resolution if it is smaller than or equal to the sensor
16839 maximum resolution (if they are not listed in JPEG sizes already):</p>
16840 <ul>
16841 <li>240p (320 x 240)</li>
16842 <li>480p (640 x 480)</li>
16843 <li>720p (1280 x 720)</li>
16844 <li>1080p (1920 x 1080)</li>
16845 </ul>
16846 <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/>
16847 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
16848             </td>
16849           </tr>
16850
16851           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16852            <!-- end of entry -->
16853         
16854                 
16855           <tr class="entry" id="static_android.scaler.availableRawMinDurations">
16856             <td class="entry_name
16857                 entry_name_deprecated
16858              " rowspan="3">
16859               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
16860             </td>
16861             <td class="entry_type">
16862                 <span class="entry_type_name">int64</span>
16863                 <span class="entry_type_container">x</span>
16864
16865                 <span class="entry_type_array">
16866                   n
16867                 </span>
16868               <span class="entry_type_visibility"> [system]</span>
16869
16870
16871
16872               <span class="entry_type_deprecated">[deprecated] </span>
16873
16874
16875
16876             </td> <!-- entry_type -->
16877
16878             <td class="entry_description">
16879               <p>For each available raw output size (defined in
16880 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
16881 supportable frame duration for that size.<wbr/></p>
16882             </td>
16883
16884             <td class="entry_units">
16885               Nanoseconds
16886             </td>
16887
16888             <td class="entry_range">
16889               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16890             </td>
16891
16892             <td class="entry_tags">
16893               <ul class="entry_tags">
16894                   <li><a href="#tag_BC">BC</a></li>
16895               </ul>
16896             </td>
16897
16898           </tr>
16899           <tr class="entries_header">
16900             <th class="th_details" colspan="5">Details</th>
16901           </tr>
16902           <tr class="entry_cont">
16903             <td class="entry_details" colspan="5">
16904               <p>Should correspond to the frame duration when only the raw stream is
16905 active.<wbr/></p>
16906 <p>When multiple streams are configured,<wbr/> the minimum
16907 frame duration will be &gt;= max(individual stream min
16908 durations)</p>
16909             </td>
16910           </tr>
16911
16912
16913           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16914            <!-- end of entry -->
16915         
16916                 
16917           <tr class="entry" id="static_android.scaler.availableRawSizes">
16918             <td class="entry_name
16919                 entry_name_deprecated
16920              " rowspan="1">
16921               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
16922             </td>
16923             <td class="entry_type">
16924                 <span class="entry_type_name">int32</span>
16925                 <span class="entry_type_container">x</span>
16926
16927                 <span class="entry_type_array">
16928                   n x 2
16929                 </span>
16930               <span class="entry_type_visibility"> [system as size]</span>
16931
16932
16933
16934               <span class="entry_type_deprecated">[deprecated] </span>
16935
16936
16937
16938             </td> <!-- entry_type -->
16939
16940             <td class="entry_description">
16941               <p>The resolutions available for use with raw
16942 sensor output streams,<wbr/> listed as width,<wbr/>
16943 height</p>
16944             </td>
16945
16946             <td class="entry_units">
16947             </td>
16948
16949             <td class="entry_range">
16950               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16951             </td>
16952
16953             <td class="entry_tags">
16954             </td>
16955
16956           </tr>
16957
16958
16959           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16960            <!-- end of entry -->
16961         
16962                 
16963           <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
16964             <td class="entry_name
16965              " rowspan="5">
16966               android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
16967             </td>
16968             <td class="entry_type">
16969                 <span class="entry_type_name">int32</span>
16970
16971               <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
16972
16973
16974
16975
16976
16977
16978             </td> <!-- entry_type -->
16979
16980             <td class="entry_description">
16981               <p>The mapping of image formats that are supported by this
16982 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
16983             </td>
16984
16985             <td class="entry_units">
16986             </td>
16987
16988             <td class="entry_range">
16989             </td>
16990
16991             <td class="entry_tags">
16992               <ul class="entry_tags">
16993                   <li><a href="#tag_REPROC">REPROC</a></li>
16994               </ul>
16995             </td>
16996
16997           </tr>
16998           <tr class="entries_header">
16999             <th class="th_details" colspan="5">Details</th>
17000           </tr>
17001           <tr class="entry_cont">
17002             <td class="entry_details" colspan="5">
17003               <p>All camera devices with at least 1
17004 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
17005 available input format.<wbr/></p>
17006 <p>The camera device will support the following map of formats,<wbr/>
17007 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
17008 <table>
17009 <thead>
17010 <tr>
17011 <th align="left">Input Format</th>
17012 <th align="left">Output Format</th>
17013 <th align="left">Capability</th>
17014 </tr>
17015 </thead>
17016 <tbody>
17017 <tr>
17018 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17019 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17020 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
17021 </tr>
17022 <tr>
17023 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17024 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
17025 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
17026 </tr>
17027 <tr>
17028 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
17029 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17030 <td align="left">YUV_<wbr/>REPROCESSING</td>
17031 </tr>
17032 <tr>
17033 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
17034 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
17035 <td align="left">YUV_<wbr/>REPROCESSING</td>
17036 </tr>
17037 </tbody>
17038 </table>
17039 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
17040 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
17041 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
17042 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
17043 or output will never hurt maximum frame rate (i.<wbr/>e.<wbr/>  <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">getOutputStallDuration(ImageFormat.<wbr/>PRIVATE,<wbr/> size)</a> is always 0),<wbr/></p>
17044 <p>Attempting to configure an input stream with output streams not
17045 listed as available in this map is not valid.<wbr/></p>
17046             </td>
17047           </tr>
17048
17049           <tr class="entries_header">
17050             <th class="th_details" colspan="5">HAL Implementation Details</th>
17051           </tr>
17052           <tr class="entry_cont">
17053             <td class="entry_details" colspan="5">
17054               <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
17055 of the image format enumerations.<wbr/> The PRIVATE format refers to the
17056 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
17057 the actual format by using the gralloc usage flags.<wbr/>
17058 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
17059 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
17060 See camera3.<wbr/>h for more details.<wbr/></p>
17061 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
17062 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
17063 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
17064 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
17065 <p>A code sample to read/<wbr/>write this encoding (with a device that
17066 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
17067 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
17068 <pre><code>//<wbr/> reading
17069 int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
17070 for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
17071     int32_<wbr/>t format = contents[i++];
17072     int32_<wbr/>t length = contents[i++];
17073     int32_<wbr/>t output_<wbr/>formats[length];
17074     memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
17075            length * sizeof(int32_<wbr/>t));
17076     i += length;
17077 }
17078
17079 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
17080 int32_<wbr/>t[] contents = {
17081   IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
17082   YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
17083 };
17084 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
17085       sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
17086 </code></pre>
17087 <p>If the HAL claims to support any of the capabilities listed in the
17088 above details,<wbr/> then it must also support all the input-output
17089 combinations listed for that capability.<wbr/> It can optionally support
17090 additional formats if it so chooses.<wbr/></p>
17091             </td>
17092           </tr>
17093
17094           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17095            <!-- end of entry -->
17096         
17097                 
17098           <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
17099             <td class="entry_name
17100              " rowspan="5">
17101               android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
17102             </td>
17103             <td class="entry_type">
17104                 <span class="entry_type_name entry_type_name_enum">int32</span>
17105                 <span class="entry_type_container">x</span>
17106
17107                 <span class="entry_type_array">
17108                   n x 4
17109                 </span>
17110               <span class="entry_type_visibility"> [hidden as streamConfiguration]</span>
17111
17112
17113               <span class="entry_type_hwlevel">[legacy] </span>
17114
17115
17116
17117                 <ul class="entry_type_enum">
17118                   <li>
17119                     <span class="entry_type_enum_name">OUTPUT</span>
17120                   </li>
17121                   <li>
17122                     <span class="entry_type_enum_name">INPUT</span>
17123                   </li>
17124                 </ul>
17125
17126             </td> <!-- entry_type -->
17127
17128             <td class="entry_description">
17129               <p>The available stream configurations that this
17130 camera device supports
17131 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
17132             </td>
17133
17134             <td class="entry_units">
17135             </td>
17136
17137             <td class="entry_range">
17138             </td>
17139
17140             <td class="entry_tags">
17141             </td>
17142
17143           </tr>
17144           <tr class="entries_header">
17145             <th class="th_details" colspan="5">Details</th>
17146           </tr>
17147           <tr class="entry_cont">
17148             <td class="entry_details" colspan="5">
17149               <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
17150 tuples.<wbr/></p>
17151 <p>For a given use case,<wbr/> the actual maximum supported resolution
17152 may be lower than what is listed here,<wbr/> depending on the destination
17153 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17154 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17155 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17156 can provide.<wbr/></p>
17157 <p>Please reference the documentation for the image data destination to
17158 check if it limits the maximum size for image data.<wbr/></p>
17159 <p>Not all output formats may be supported in a configuration with
17160 an input stream of a particular format.<wbr/> For more details,<wbr/> see
17161 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
17162 <p>The following table describes the minimum required output stream
17163 configurations based on the hardware level
17164 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
17165 <table>
17166 <thead>
17167 <tr>
17168 <th align="center">Format</th>
17169 <th align="center">Size</th>
17170 <th align="center">Hardware Level</th>
17171 <th align="center">Notes</th>
17172 </tr>
17173 </thead>
17174 <tbody>
17175 <tr>
17176 <td align="center">JPEG</td>
17177 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
17178 <td align="center">Any</td>
17179 <td align="center"></td>
17180 </tr>
17181 <tr>
17182 <td align="center">JPEG</td>
17183 <td align="center">1920x1080 (1080p)</td>
17184 <td align="center">Any</td>
17185 <td align="center">if 1080p &lt;= activeArraySize</td>
17186 </tr>
17187 <tr>
17188 <td align="center">JPEG</td>
17189 <td align="center">1280x720 (720)</td>
17190 <td align="center">Any</td>
17191 <td align="center">if 720p &lt;= activeArraySize</td>
17192 </tr>
17193 <tr>
17194 <td align="center">JPEG</td>
17195 <td align="center">640x480 (480p)</td>
17196 <td align="center">Any</td>
17197 <td align="center">if 480p &lt;= activeArraySize</td>
17198 </tr>
17199 <tr>
17200 <td align="center">JPEG</td>
17201 <td align="center">320x240 (240p)</td>
17202 <td align="center">Any</td>
17203 <td align="center">if 240p &lt;= activeArraySize</td>
17204 </tr>
17205 <tr>
17206 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
17207 <td align="center">all output sizes available for JPEG</td>
17208 <td align="center">FULL</td>
17209 <td align="center"></td>
17210 </tr>
17211 <tr>
17212 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
17213 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
17214 <td align="center">LIMITED</td>
17215 <td align="center"></td>
17216 </tr>
17217 <tr>
17218 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
17219 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
17220 <td align="center">Any</td>
17221 <td align="center"></td>
17222 </tr>
17223 </tbody>
17224 </table>
17225 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
17226 mandatory stream configurations on a per-capability basis.<wbr/></p>
17227             </td>
17228           </tr>
17229
17230           <tr class="entries_header">
17231             <th class="th_details" colspan="5">HAL Implementation Details</th>
17232           </tr>
17233           <tr class="entry_cont">
17234             <td class="entry_details" colspan="5">
17235               <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
17236 of sensor maximum resolution for JPEG formats (regardless of hardware
17237 level).<wbr/></p>
17238 <p>(The following is a rewording of the above required table):</p>
17239 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
17240 <ul>
17241 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
17242 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
17243 (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/>
17244 it does not have to be included in the supported JPEG sizes.<wbr/></li>
17245 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
17246 the dimensions being a multiple of 16.<wbr/></li>
17247 </ul>
17248 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
17249 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
17250 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
17251 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
17252 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
17253 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
17254 3264x2448.<wbr/></p>
17255 <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/>
17256 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
17257 here as output streams.<wbr/></p>
17258 <p>It must also include each below resolution if it is smaller than or
17259 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
17260 formats),<wbr/> as output streams:</p>
17261 <ul>
17262 <li>240p (320 x 240)</li>
17263 <li>480p (640 x 480)</li>
17264 <li>720p (1280 x 720)</li>
17265 <li>1080p (1920 x 1080)</li>
17266 </ul>
17267 <p>For LIMITED capability devices
17268 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
17269 the HAL only has to list up to the maximum video size
17270 supported by the device.<wbr/></p>
17271 <p>Regardless of hardware level,<wbr/> every output resolution available for
17272 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
17273 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
17274 <ul>
17275 <li>availableFormats</li>
17276 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
17277 </ul>
17278             </td>
17279           </tr>
17280
17281           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17282            <!-- end of entry -->
17283         
17284                 
17285           <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
17286             <td class="entry_name
17287              " rowspan="3">
17288               android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
17289             </td>
17290             <td class="entry_type">
17291                 <span class="entry_type_name">int64</span>
17292                 <span class="entry_type_container">x</span>
17293
17294                 <span class="entry_type_array">
17295                   4 x n
17296                 </span>
17297               <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
17298
17299
17300               <span class="entry_type_hwlevel">[legacy] </span>
17301
17302
17303
17304
17305             </td> <!-- entry_type -->
17306
17307             <td class="entry_description">
17308               <p>This lists the minimum frame duration for each
17309 format/<wbr/>size combination.<wbr/></p>
17310             </td>
17311
17312             <td class="entry_units">
17313               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
17314             </td>
17315
17316             <td class="entry_range">
17317             </td>
17318
17319             <td class="entry_tags">
17320               <ul class="entry_tags">
17321                   <li><a href="#tag_V1">V1</a></li>
17322               </ul>
17323             </td>
17324
17325           </tr>
17326           <tr class="entries_header">
17327             <th class="th_details" colspan="5">Details</th>
17328           </tr>
17329           <tr class="entry_cont">
17330             <td class="entry_details" colspan="5">
17331               <p>This should correspond to the frame duration when only that
17332 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
17333 set to either OFF or FAST.<wbr/></p>
17334 <p>When multiple streams are used in a request,<wbr/> the minimum frame
17335 duration will be max(individual stream min durations).<wbr/></p>
17336 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
17337 is the same regardless of whether the stream is input or output.<wbr/></p>
17338 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
17339 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
17340 calculating the max frame rate.<wbr/></p>
17341 <p>(Keep in sync with
17342 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
17343             </td>
17344           </tr>
17345
17346
17347           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17348            <!-- end of entry -->
17349         
17350                 
17351           <tr class="entry" id="static_android.scaler.availableStallDurations">
17352             <td class="entry_name
17353              " rowspan="5">
17354               android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
17355             </td>
17356             <td class="entry_type">
17357                 <span class="entry_type_name">int64</span>
17358                 <span class="entry_type_container">x</span>
17359
17360                 <span class="entry_type_array">
17361                   4 x n
17362                 </span>
17363               <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
17364
17365
17366               <span class="entry_type_hwlevel">[legacy] </span>
17367
17368
17369
17370
17371             </td> <!-- entry_type -->
17372
17373             <td class="entry_description">
17374               <p>This lists the maximum stall duration for each
17375 output format/<wbr/>size combination.<wbr/></p>
17376             </td>
17377
17378             <td class="entry_units">
17379               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
17380             </td>
17381
17382             <td class="entry_range">
17383             </td>
17384
17385             <td class="entry_tags">
17386               <ul class="entry_tags">
17387                   <li><a href="#tag_V1">V1</a></li>
17388               </ul>
17389             </td>
17390
17391           </tr>
17392           <tr class="entries_header">
17393             <th class="th_details" colspan="5">Details</th>
17394           </tr>
17395           <tr class="entry_cont">
17396             <td class="entry_details" colspan="5">
17397               <p>A stall duration is how much extra time would get added
17398 to the normal minimum frame duration for a repeating request
17399 that has streams with non-zero stall.<wbr/></p>
17400 <p>For example,<wbr/> consider JPEG captures which have the following
17401 characteristics:</p>
17402 <ul>
17403 <li>JPEG streams act like processed YUV streams in requests for which
17404 they are not included; in requests in which they are directly
17405 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
17406 JPEG stream requires the underlying YUV data to always be ready for
17407 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
17408 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
17409 <li>The JPEG processor can run concurrently to the rest of the camera
17410 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
17411 </ul>
17412 <p>In other words,<wbr/> using a repeating YUV request would result
17413 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
17414 JPEG request is submitted periodically,<wbr/> the frame rate will stay
17415 at 30 FPS (as long as we wait for the previous JPEG to return each
17416 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
17417 the frame rate will drop from 30 FPS.<wbr/></p>
17418 <p>In general,<wbr/> submitting a new request with a non-0 stall time
17419 stream will <em>not</em> cause a frame rate drop unless there are still
17420 outstanding buffers for that stream from previous requests.<wbr/></p>
17421 <p>Submitting a repeating request with streams (call this <code>S</code>)
17422 is the same as setting the minimum frame duration from
17423 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
17424 the maximum stall duration for <code>S</code>.<wbr/></p>
17425 <p>If interleaving requests with and without a stall duration,<wbr/>
17426 a request will stall by the maximum of the remaining times
17427 for each can-stall stream with outstanding buffers.<wbr/></p>
17428 <p>This means that a stalling request will not have an exposure start
17429 until the stall has completed.<wbr/></p>
17430 <p>This should correspond to the stall duration when only that stream is
17431 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
17432 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
17433 effectively results in an indeterminate stall duration for all
17434 streams in a request (the regular stall calculation rules are
17435 ignored).<wbr/></p>
17436 <p>The following formats may always have a stall duration:</p>
17437 <ul>
17438 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
17439 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
17440 </ul>
17441 <p>The following formats will never have a stall duration:</p>
17442 <ul>
17443 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></li>
17444 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
17445 </ul>
17446 <p>All other formats may or may not have an allowed stall duration on
17447 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
17448 for more details.<wbr/></p>
17449 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
17450 calculating the max frame rate (absent stalls).<wbr/></p>
17451 <p>(Keep up to date with
17452 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> )</p>
17453             </td>
17454           </tr>
17455
17456           <tr class="entries_header">
17457             <th class="th_details" colspan="5">HAL Implementation Details</th>
17458           </tr>
17459           <tr class="entry_cont">
17460             <td class="entry_details" colspan="5">
17461               <p>If possible,<wbr/> it is recommended that all non-JPEG formats
17462 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
17463 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
17464             </td>
17465           </tr>
17466
17467           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17468            <!-- end of entry -->
17469         
17470                 
17471           <tr class="entry" id="static_android.scaler.streamConfigurationMap">
17472             <td class="entry_name
17473              " rowspan="5">
17474               android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
17475             </td>
17476             <td class="entry_type">
17477                 <span class="entry_type_name">int32</span>
17478
17479               <span class="entry_type_visibility"> [public as streamConfigurationMap]</span>
17480
17481               <span class="entry_type_synthetic">[synthetic] </span>
17482
17483               <span class="entry_type_hwlevel">[legacy] </span>
17484
17485
17486
17487
17488             </td> <!-- entry_type -->
17489
17490             <td class="entry_description">
17491               <p>The available stream configurations that this
17492 camera device supports; also includes the minimum frame durations
17493 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
17494             </td>
17495
17496             <td class="entry_units">
17497             </td>
17498
17499             <td class="entry_range">
17500             </td>
17501
17502             <td class="entry_tags">
17503             </td>
17504
17505           </tr>
17506           <tr class="entries_header">
17507             <th class="th_details" colspan="5">Details</th>
17508           </tr>
17509           <tr class="entry_cont">
17510             <td class="entry_details" colspan="5">
17511               <p>All camera devices will support sensor maximum resolution (defined by
17512 <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>
17513 <p>For a given use case,<wbr/> the actual maximum supported resolution
17514 may be lower than what is listed here,<wbr/> depending on the destination
17515 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
17516 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
17517 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
17518 can provide.<wbr/></p>
17519 <p>Please reference the documentation for the image data destination to
17520 check if it limits the maximum size for image data.<wbr/></p>
17521 <p>The following table describes the minimum required output stream
17522 configurations based on the hardware level
17523 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
17524 <table>
17525 <thead>
17526 <tr>
17527 <th align="center">Format</th>
17528 <th align="center">Size</th>
17529 <th align="center">Hardware Level</th>
17530 <th align="center">Notes</th>
17531 </tr>
17532 </thead>
17533 <tbody>
17534 <tr>
17535 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17536 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
17537 <td align="center">Any</td>
17538 <td align="center"></td>
17539 </tr>
17540 <tr>
17541 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17542 <td align="center">1920x1080 (1080p)</td>
17543 <td align="center">Any</td>
17544 <td align="center">if 1080p &lt;= activeArraySize</td>
17545 </tr>
17546 <tr>
17547 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17548 <td align="center">1280x720 (720p)</td>
17549 <td align="center">Any</td>
17550 <td align="center">if 720p &lt;= activeArraySize</td>
17551 </tr>
17552 <tr>
17553 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17554 <td align="center">640x480 (480p)</td>
17555 <td align="center">Any</td>
17556 <td align="center">if 480p &lt;= activeArraySize</td>
17557 </tr>
17558 <tr>
17559 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
17560 <td align="center">320x240 (240p)</td>
17561 <td align="center">Any</td>
17562 <td align="center">if 240p &lt;= activeArraySize</td>
17563 </tr>
17564 <tr>
17565 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
17566 <td align="center">all output sizes available for JPEG</td>
17567 <td align="center">FULL</td>
17568 <td align="center"></td>
17569 </tr>
17570 <tr>
17571 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a></td>
17572 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
17573 <td align="center">LIMITED</td>
17574 <td align="center"></td>
17575 </tr>
17576 <tr>
17577 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
17578 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
17579 <td align="center">Any</td>
17580 <td align="center"></td>
17581 </tr>
17582 </tbody>
17583 </table>
17584 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a> for additional mandatory
17585 stream configurations on a per-capability basis.<wbr/></p>
17586 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
17587 <ul>
17588 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
17589 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
17590 (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/>
17591 it does not have to be included in the supported JPEG sizes.<wbr/></li>
17592 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
17593 the dimensions being a multiple of 16.<wbr/>
17594 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
17595 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
17596 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
17597 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
17598 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
17599 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
17600 3264x2448.<wbr/></li>
17601 </ul>
17602             </td>
17603           </tr>
17604
17605           <tr class="entries_header">
17606             <th class="th_details" colspan="5">HAL Implementation Details</th>
17607           </tr>
17608           <tr class="entry_cont">
17609             <td class="entry_details" colspan="5">
17610               <p>Do not set this property directly
17611 (it is synthetic and will not be available at the HAL layer);
17612 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
17613 <p>Not all output formats may be supported in a configuration with
17614 an input stream of a particular format.<wbr/> For more details,<wbr/> see
17615 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
17616 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
17617 of sensor maximum resolution for JPEG formats (regardless of hardware
17618 level).<wbr/></p>
17619 <p>(The following is a rewording of the above required table):</p>
17620 <p>The HAL must include sensor maximum resolution (defined by
17621 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
17622 <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/>
17623 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
17624 here as output streams.<wbr/></p>
17625 <p>It must also include each below resolution if it is smaller than or
17626 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
17627 formats),<wbr/> as output streams:</p>
17628 <ul>
17629 <li>240p (320 x 240)</li>
17630 <li>480p (640 x 480)</li>
17631 <li>720p (1280 x 720)</li>
17632 <li>1080p (1920 x 1080)</li>
17633 </ul>
17634 <p>For LIMITED capability devices
17635 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
17636 the HAL only has to list up to the maximum video size
17637 supported by the device.<wbr/></p>
17638 <p>Regardless of hardware level,<wbr/> every output resolution available for
17639 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
17640 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
17641 <ul>
17642 <li>availableFormats</li>
17643 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
17644 </ul>
17645             </td>
17646           </tr>
17647
17648           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17649            <!-- end of entry -->
17650         
17651                 
17652           <tr class="entry" id="static_android.scaler.croppingType">
17653             <td class="entry_name
17654              " rowspan="3">
17655               android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
17656             </td>
17657             <td class="entry_type">
17658                 <span class="entry_type_name entry_type_name_enum">byte</span>
17659
17660               <span class="entry_type_visibility"> [public]</span>
17661
17662
17663               <span class="entry_type_hwlevel">[legacy] </span>
17664
17665
17666
17667                 <ul class="entry_type_enum">
17668                   <li>
17669                     <span class="entry_type_enum_name">CENTER_ONLY</span>
17670                     <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
17671                   </li>
17672                   <li>
17673                     <span class="entry_type_enum_name">FREEFORM</span>
17674                     <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
17675                   </li>
17676                 </ul>
17677
17678             </td> <!-- entry_type -->
17679
17680             <td class="entry_description">
17681               <p>The crop type that this camera device supports.<wbr/></p>
17682             </td>
17683
17684             <td class="entry_units">
17685             </td>
17686
17687             <td class="entry_range">
17688             </td>
17689
17690             <td class="entry_tags">
17691             </td>
17692
17693           </tr>
17694           <tr class="entries_header">
17695             <th class="th_details" colspan="5">Details</th>
17696           </tr>
17697           <tr class="entry_cont">
17698             <td class="entry_details" colspan="5">
17699               <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
17700 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
17701 crop 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>)
17702 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
17703 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
17704 <p>Camera devices that support FREEFORM cropping will support any crop region that
17705 is inside of the active array.<wbr/> The camera device will apply the same crop region and
17706 return 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>
17707 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
17708             </td>
17709           </tr>
17710
17711
17712           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17713            <!-- end of entry -->
17714         
17715         
17716
17717       <!-- end of kind -->
17718       </tbody>
17719       <tr><td colspan="6" class="kind">dynamic</td></tr>
17720
17721       <thead class="entries_header">
17722         <tr>
17723           <th class="th_name">Property Name</th>
17724           <th class="th_type">Type</th>
17725           <th class="th_description">Description</th>
17726           <th class="th_units">Units</th>
17727           <th class="th_range">Range</th>
17728           <th class="th_tags">Tags</th>
17729         </tr>
17730       </thead>
17731
17732       <tbody>
17733
17734         
17735
17736         
17737
17738         
17739
17740         
17741
17742                 
17743           <tr class="entry" id="dynamic_android.scaler.cropRegion">
17744             <td class="entry_name
17745              " rowspan="5">
17746               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
17747             </td>
17748             <td class="entry_type">
17749                 <span class="entry_type_name">int32</span>
17750                 <span class="entry_type_container">x</span>
17751
17752                 <span class="entry_type_array">
17753                   4
17754                 </span>
17755               <span class="entry_type_visibility"> [public as rectangle]</span>
17756
17757
17758               <span class="entry_type_hwlevel">[legacy] </span>
17759
17760
17761
17762
17763             </td> <!-- entry_type -->
17764
17765             <td class="entry_description">
17766               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
17767             </td>
17768
17769             <td class="entry_units">
17770               Pixel coordinates relative to
17771           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
17772             </td>
17773
17774             <td class="entry_range">
17775             </td>
17776
17777             <td class="entry_tags">
17778               <ul class="entry_tags">
17779                   <li><a href="#tag_BC">BC</a></li>
17780               </ul>
17781             </td>
17782
17783           </tr>
17784           <tr class="entries_header">
17785             <th class="th_details" colspan="5">Details</th>
17786           </tr>
17787           <tr class="entry_cont">
17788             <td class="entry_details" colspan="5">
17789               <p>This control can be used to implement digital zoom.<wbr/></p>
17790 <p>The crop region coordinate system is based off
17791 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with <code>(0,<wbr/> 0)</code> being the
17792 top-left corner of the sensor active array.<wbr/></p>
17793 <p>Output streams use this rectangle to produce their output,<wbr/>
17794 cropping to a smaller region if necessary to maintain the
17795 stream's aspect ratio,<wbr/> then scaling the sensor input to
17796 match the output's configured resolution.<wbr/></p>
17797 <p>The crop region is applied after the RAW to other color
17798 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
17799 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
17800 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
17801 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
17802 be done to maximize the final pixel area of the stream.<wbr/></p>
17803 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
17804 ratio,<wbr/> then 4:3 streams will use the exact crop
17805 region.<wbr/> 16:9 streams will further crop vertically
17806 (letterbox).<wbr/></p>
17807 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
17808 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
17809 streams will match exactly.<wbr/> These additional crops will
17810 be centered within the crop region.<wbr/></p>
17811 <p>The width and height of the crop region cannot
17812 be set to be smaller than
17813 <code>floor( activeArraySize.<wbr/>width /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code> and
17814 <code>floor( activeArraySize.<wbr/>height /<wbr/> <a href="#static_android.scaler.availableMaxDigitalZoom">android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom</a> )</code>,<wbr/> respectively.<wbr/></p>
17815 <p>The camera device may adjust the crop region to account
17816 for rounding and other hardware requirements; the final
17817 crop region used will be included in the output capture
17818 result.<wbr/></p>
17819             </td>
17820           </tr>
17821
17822           <tr class="entries_header">
17823             <th class="th_details" colspan="5">HAL Implementation Details</th>
17824           </tr>
17825           <tr class="entry_cont">
17826             <td class="entry_details" colspan="5">
17827               <p>The output streams must maintain square pixels at all
17828 times,<wbr/> no matter what the relative aspect ratios of the
17829 crop region and the stream are.<wbr/>  Negative values for
17830 corner are allowed for raw output if full pixel array is
17831 larger than active pixel array.<wbr/> Width and height may be
17832 rounded to nearest larger supportable width,<wbr/> especially
17833 for raw output,<wbr/> where only a few fixed scales may be
17834 possible.<wbr/></p>
17835 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
17836 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
17837 <ul>
17838 <li>
17839 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
17840 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
17841 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> to the sensor cropped pixel area size in this way:</p>
17842 <ol>
17843 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
17844 cropped pixel area by (tx,<wbr/> ty),<wbr/>
17845 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
17846 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
17847 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
17848 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
17849 <li>Scale the width and height of requested cropRegion with scaling factor of
17850 sensor<wbr/>Crop.<wbr/>width/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>height
17851 respectively.<wbr/>
17852 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
17853 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
17854 follow the general cropping rule for this new cropRegion and effective active
17855 array size.<wbr/></li>
17856 </ol>
17857 </li>
17858 <li>
17859 <p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>
17860 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
17861 The reported cropRegion may be slightly different with the requested cropRegion since
17862 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
17863 hardware limitations.<wbr/></p>
17864 </li>
17865 </ul>
17866 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
17867             </td>
17868           </tr>
17869
17870           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17871            <!-- end of entry -->
17872         
17873         
17874
17875       <!-- end of kind -->
17876       </tbody>
17877
17878   <!-- end of section -->
17879   <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr>
17880
17881
17882       <tr><td colspan="6" class="kind">controls</td></tr>
17883
17884       <thead class="entries_header">
17885         <tr>
17886           <th class="th_name">Property Name</th>
17887           <th class="th_type">Type</th>
17888           <th class="th_description">Description</th>
17889           <th class="th_units">Units</th>
17890           <th class="th_range">Range</th>
17891           <th class="th_tags">Tags</th>
17892         </tr>
17893       </thead>
17894
17895       <tbody>
17896
17897         
17898
17899         
17900
17901         
17902
17903         
17904
17905                 
17906           <tr class="entry" id="controls_android.sensor.exposureTime">
17907             <td class="entry_name
17908              " rowspan="3">
17909               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
17910             </td>
17911             <td class="entry_type">
17912                 <span class="entry_type_name">int64</span>
17913
17914               <span class="entry_type_visibility"> [public]</span>
17915
17916
17917               <span class="entry_type_hwlevel">[full] </span>
17918
17919
17920
17921
17922             </td> <!-- entry_type -->
17923
17924             <td class="entry_description">
17925               <p>Duration each pixel is exposed to
17926 light.<wbr/></p>
17927             </td>
17928
17929             <td class="entry_units">
17930               Nanoseconds
17931             </td>
17932
17933             <td class="entry_range">
17934               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
17935             </td>
17936
17937             <td class="entry_tags">
17938               <ul class="entry_tags">
17939                   <li><a href="#tag_V1">V1</a></li>
17940               </ul>
17941             </td>
17942
17943           </tr>
17944           <tr class="entries_header">
17945             <th class="th_details" colspan="5">Details</th>
17946           </tr>
17947           <tr class="entry_cont">
17948             <td class="entry_details" colspan="5">
17949               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
17950 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
17951 The final exposure time used will be available in the output capture result.<wbr/></p>
17952 <p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
17953 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
17954             </td>
17955           </tr>
17956
17957
17958           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17959            <!-- end of entry -->
17960         
17961                 
17962           <tr class="entry" id="controls_android.sensor.frameDuration">
17963             <td class="entry_name
17964              " rowspan="5">
17965               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
17966             </td>
17967             <td class="entry_type">
17968                 <span class="entry_type_name">int64</span>
17969
17970               <span class="entry_type_visibility"> [public]</span>
17971
17972
17973               <span class="entry_type_hwlevel">[full] </span>
17974
17975
17976
17977
17978             </td> <!-- entry_type -->
17979
17980             <td class="entry_description">
17981               <p>Duration from start of frame exposure to
17982 start of next frame exposure.<wbr/></p>
17983             </td>
17984
17985             <td class="entry_units">
17986               Nanoseconds
17987             </td>
17988
17989             <td class="entry_range">
17990               <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
17991 <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
17992 is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
17993             </td>
17994
17995             <td class="entry_tags">
17996               <ul class="entry_tags">
17997                   <li><a href="#tag_V1">V1</a></li>
17998               </ul>
17999             </td>
18000
18001           </tr>
18002           <tr class="entries_header">
18003             <th class="th_details" colspan="5">Details</th>
18004           </tr>
18005           <tr class="entry_cont">
18006             <td class="entry_details" colspan="5">
18007               <p>The maximum frame rate that can be supported by a camera subsystem is
18008 a function of many factors:</p>
18009 <ul>
18010 <li>Requested resolutions of output image streams</li>
18011 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
18012 <li>The bandwidth of the imager interface</li>
18013 <li>The bandwidth of the various ISP processing blocks</li>
18014 </ul>
18015 <p>Since these factors can vary greatly between different ISPs and
18016 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
18017 restrictions with as simple a model as possible.<wbr/></p>
18018 <p>The model presented has the following characteristics:</p>
18019 <ul>
18020 <li>The image sensor is always configured to output the smallest
18021 resolution possible given the application's requested output stream
18022 sizes.<wbr/>  The smallest resolution is defined as being at least as large
18023 as the largest requested output stream size; the camera pipeline must
18024 never digitally upsample sensor data when the crop region covers the
18025 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
18026 resolutions are configured,<wbr/> the sensor can provide a higher frame
18027 rate.<wbr/></li>
18028 <li>Since any request may use any or all the currently configured
18029 output streams,<wbr/> the sensor and ISP must be configured to support
18030 scaling a single capture to all the streams at the same time.<wbr/>  This
18031 means the camera pipeline must be ready to produce the largest
18032 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
18033 frame rate of a given configured stream set is governed only by the
18034 largest requested stream resolution.<wbr/></li>
18035 <li>Using more than one output stream in a request does not affect the
18036 frame duration.<wbr/></li>
18037 <li>Certain format-streams may need to do additional background processing
18038 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
18039 can run concurrently to the rest of the camera pipeline,<wbr/> but
18040 cannot process more than 1 capture at a time.<wbr/></li>
18041 </ul>
18042 <p>The necessary information for the application,<wbr/> given the model above,<wbr/>
18043 is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
18044 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
18045 These are used to determine the maximum frame rate /<wbr/> minimum frame
18046 duration that is possible for a given stream configuration.<wbr/></p>
18047 <p>Specifically,<wbr/> the application can use the following rules to
18048 determine the minimum frame duration it can request from the camera
18049 device:</p>
18050 <ol>
18051 <li>Let the set of currently configured input/<wbr/>output streams
18052 be called <code>S</code>.<wbr/></li>
18053 <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
18054 it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
18055 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
18056 called <code>F</code>.<wbr/></li>
18057 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
18058 for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
18059 used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
18060 </ol>
18061 <p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>
18062 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
18063 determines the steady state frame rate that the application will get
18064 if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
18065 request be called <code>Rsimple</code>.<wbr/></p>
18066 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
18067 by a single capture of a new request <code>Rstall</code> (which has at least
18068 one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
18069 same minimum frame duration this will not cause a frame rate loss
18070 if all buffers from the previous <code>Rstall</code> have already been
18071 delivered.<wbr/></p>
18072 <p>For more details about stalling,<wbr/> see
18073 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
18074 <p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
18075 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
18076             </td>
18077           </tr>
18078
18079           <tr class="entries_header">
18080             <th class="th_details" colspan="5">HAL Implementation Details</th>
18081           </tr>
18082           <tr class="entry_cont">
18083             <td class="entry_details" colspan="5">
18084               <p>For more details about stalling,<wbr/> see
18085 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
18086             </td>
18087           </tr>
18088
18089           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18090            <!-- end of entry -->
18091         
18092                 
18093           <tr class="entry" id="controls_android.sensor.sensitivity">
18094             <td class="entry_name
18095              " rowspan="5">
18096               android.<wbr/>sensor.<wbr/>sensitivity
18097             </td>
18098             <td class="entry_type">
18099                 <span class="entry_type_name">int32</span>
18100
18101               <span class="entry_type_visibility"> [public]</span>
18102
18103
18104               <span class="entry_type_hwlevel">[full] </span>
18105
18106
18107
18108
18109             </td> <!-- entry_type -->
18110
18111             <td class="entry_description">
18112               <p>The amount of gain applied to sensor data
18113 before processing.<wbr/></p>
18114             </td>
18115
18116             <td class="entry_units">
18117               ISO arithmetic units
18118             </td>
18119
18120             <td class="entry_range">
18121               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
18122             </td>
18123
18124             <td class="entry_tags">
18125               <ul class="entry_tags">
18126                   <li><a href="#tag_V1">V1</a></li>
18127               </ul>
18128             </td>
18129
18130           </tr>
18131           <tr class="entries_header">
18132             <th class="th_details" colspan="5">Details</th>
18133           </tr>
18134           <tr class="entry_cont">
18135             <td class="entry_details" colspan="5">
18136               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
18137 as defined in ISO 12232:2006.<wbr/></p>
18138 <p>The sensitivity must be within <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a>,<wbr/> and
18139 if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
18140 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
18141 <p>If the camera device cannot apply the exact sensitivity
18142 requested,<wbr/> it will reduce the gain to the nearest supported
18143 value.<wbr/> The final sensitivity used will be available in the
18144 output capture result.<wbr/></p>
18145             </td>
18146           </tr>
18147
18148           <tr class="entries_header">
18149             <th class="th_details" colspan="5">HAL Implementation Details</th>
18150           </tr>
18151           <tr class="entry_cont">
18152             <td class="entry_details" colspan="5">
18153               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
18154             </td>
18155           </tr>
18156
18157           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18158            <!-- end of entry -->
18159         
18160                 
18161           <tr class="entry" id="controls_android.sensor.testPatternData">
18162             <td class="entry_name
18163              " rowspan="5">
18164               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
18165             </td>
18166             <td class="entry_type">
18167                 <span class="entry_type_name">int32</span>
18168                 <span class="entry_type_container">x</span>
18169
18170                 <span class="entry_type_array">
18171                   4
18172                 </span>
18173               <span class="entry_type_visibility"> [public]</span>
18174
18175
18176
18177
18178
18179
18180             </td> <!-- entry_type -->
18181
18182             <td class="entry_description">
18183               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
18184 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
18185             </td>
18186
18187             <td class="entry_units">
18188             </td>
18189
18190             <td class="entry_range">
18191             </td>
18192
18193             <td class="entry_tags">
18194             </td>
18195
18196           </tr>
18197           <tr class="entries_header">
18198             <th class="th_details" colspan="5">Details</th>
18199           </tr>
18200           <tr class="entry_cont">
18201             <td class="entry_details" colspan="5">
18202               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
18203 The camera device then uses the most significant X bits
18204 that correspond to how many bits are in its Bayer raw sensor
18205 output.<wbr/></p>
18206 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
18207 10 most significant bits from each color channel.<wbr/></p>
18208             </td>
18209           </tr>
18210
18211           <tr class="entries_header">
18212             <th class="th_details" colspan="5">HAL Implementation Details</th>
18213           </tr>
18214           <tr class="entry_cont">
18215             <td class="entry_details" colspan="5">
18216               
18217             </td>
18218           </tr>
18219
18220           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18221            <!-- end of entry -->
18222         
18223                 
18224           <tr class="entry" id="controls_android.sensor.testPatternMode">
18225             <td class="entry_name
18226              " rowspan="5">
18227               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
18228             </td>
18229             <td class="entry_type">
18230                 <span class="entry_type_name entry_type_name_enum">int32</span>
18231
18232               <span class="entry_type_visibility"> [public]</span>
18233
18234
18235
18236
18237
18238                 <ul class="entry_type_enum">
18239                   <li>
18240                     <span class="entry_type_enum_name">OFF</span>
18241                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
18242 device returns captures from the image sensor.<wbr/></p>
18243 <p>This is the default if the key is not set.<wbr/></p></span>
18244                   </li>
18245                   <li>
18246                     <span class="entry_type_enum_name">SOLID_COLOR</span>
18247                     <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
18248 respective color channel provided in
18249 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
18250 <p>For example:</p>
18251 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
18252 </code></pre>
18253 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
18254 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
18255 </code></pre>
18256 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
18257 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
18258                   </li>
18259                   <li>
18260                     <span class="entry_type_enum_name">COLOR_BARS</span>
18261                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
18262 <p>The vertical bars (left-to-right) are as follows:</p>
18263 <ul>
18264 <li>100% white</li>
18265 <li>yellow</li>
18266 <li>cyan</li>
18267 <li>green</li>
18268 <li>magenta</li>
18269 <li>red</li>
18270 <li>blue</li>
18271 <li>black</li>
18272 </ul>
18273 <p>In general the image would look like the following:</p>
18274 <pre><code>W Y C G M R B K
18275 W Y C G M R B K
18276 W Y C G M R B K
18277 W Y C G M R B K
18278 W Y C G M R B K
18279 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18280 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18281 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
18282
18283 (B = Blue,<wbr/> K = Black)
18284 </code></pre>
18285 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
18286 When this is not possible,<wbr/> the bar size should be rounded
18287 down to the nearest integer and the pattern can repeat
18288 on the right side.<wbr/></p>
18289 <p>Each bar's height must always take up the full sensor
18290 pixel array height.<wbr/></p>
18291 <p>Each pixel in this test pattern must be set to either
18292 0% intensity or 100% intensity.<wbr/></p></span>
18293                   </li>
18294                   <li>
18295                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
18296                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
18297 each bar should start at its specified color at the top,<wbr/>
18298 and fade to gray at the bottom.<wbr/></p>
18299 <p>Furthermore each bar is further subdivided into a left and
18300 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
18301 and the right half should have a quantized gradient.<wbr/></p>
18302 <p>In particular,<wbr/> the right half's should consist of blocks of the
18303 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
18304 <p>The least significant bits in the quantized gradient should
18305 be copied from the most significant bits of the smooth gradient.<wbr/></p>
18306 <p>The height of each bar should always be a multiple of 128.<wbr/>
18307 When this is not the case,<wbr/> the pattern should repeat at the bottom
18308 of the image.<wbr/></p></span>
18309                   </li>
18310                   <li>
18311                     <span class="entry_type_enum_name">PN9</span>
18312                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
18313 generated from a PN9 512-bit sequence (typically implemented
18314 in hardware with a linear feedback shift register).<wbr/></p>
18315 <p>The generator should be reset at the beginning of each frame,<wbr/>
18316 and thus each subsequent raw frame with this test pattern should
18317 be exactly the same as the last.<wbr/></p></span>
18318                   </li>
18319                   <li>
18320                     <span class="entry_type_enum_name">CUSTOM1</span>
18321                     <span class="entry_type_enum_value">256</span>
18322                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
18323 available only on this camera device are at least this numeric
18324 value.<wbr/></p>
18325 <p>All of the custom test patterns will be static
18326 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
18327                   </li>
18328                 </ul>
18329
18330             </td> <!-- entry_type -->
18331
18332             <td class="entry_description">
18333               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
18334 doing a real exposure from the camera.<wbr/></p>
18335             </td>
18336
18337             <td class="entry_units">
18338             </td>
18339
18340             <td class="entry_range">
18341               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
18342             </td>
18343
18344             <td class="entry_tags">
18345             </td>
18346
18347           </tr>
18348           <tr class="entries_header">
18349             <th class="th_details" colspan="5">Details</th>
18350           </tr>
18351           <tr class="entry_cont">
18352             <td class="entry_details" colspan="5">
18353               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
18354 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
18355 work as normal.<wbr/></p>
18356 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
18357 occur (and that the test pattern remain unmodified,<wbr/> since the flash
18358 would not actually affect it).<wbr/></p>
18359 <p>Defaults to OFF.<wbr/></p>
18360             </td>
18361           </tr>
18362
18363           <tr class="entries_header">
18364             <th class="th_details" colspan="5">HAL Implementation Details</th>
18365           </tr>
18366           <tr class="entry_cont">
18367             <td class="entry_details" colspan="5">
18368               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
18369 <p>The HAL may choose to substitute test patterns from the sensor
18370 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
18371 indistinguishable to the ISP whether the data came from the
18372 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
18373             </td>
18374           </tr>
18375
18376           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18377            <!-- end of entry -->
18378         
18379         
18380
18381       <!-- end of kind -->
18382       </tbody>
18383       <tr><td colspan="6" class="kind">static</td></tr>
18384
18385       <thead class="entries_header">
18386         <tr>
18387           <th class="th_name">Property Name</th>
18388           <th class="th_type">Type</th>
18389           <th class="th_description">Description</th>
18390           <th class="th_units">Units</th>
18391           <th class="th_range">Range</th>
18392           <th class="th_tags">Tags</th>
18393         </tr>
18394       </thead>
18395
18396       <tbody>
18397
18398         
18399
18400         
18401
18402         
18403
18404         
18405                 
18406             
18407
18408                 
18409           <tr class="entry" id="static_android.sensor.info.activeArraySize">
18410             <td class="entry_name
18411              " rowspan="5">
18412               android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
18413             </td>
18414             <td class="entry_type">
18415                 <span class="entry_type_name">int32</span>
18416                 <span class="entry_type_container">x</span>
18417
18418                 <span class="entry_type_array">
18419                   4
18420                 </span>
18421               <span class="entry_type_visibility"> [public as rectangle]</span>
18422
18423
18424               <span class="entry_type_hwlevel">[legacy] </span>
18425
18426
18427                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
18428
18429
18430             </td> <!-- entry_type -->
18431
18432             <td class="entry_description">
18433               <p>The area of the image sensor which corresponds to active pixels after any geometric
18434 distortion correction has been applied.<wbr/></p>
18435             </td>
18436
18437             <td class="entry_units">
18438               Pixel coordinates on the image sensor
18439             </td>
18440
18441             <td class="entry_range">
18442             </td>
18443
18444             <td class="entry_tags">
18445               <ul class="entry_tags">
18446                   <li><a href="#tag_RAW">RAW</a></li>
18447               </ul>
18448             </td>
18449
18450           </tr>
18451           <tr class="entries_header">
18452             <th class="th_details" colspan="5">Details</th>
18453           </tr>
18454           <tr class="entry_cont">
18455             <td class="entry_details" colspan="5">
18456               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
18457 the region that actually receives light from the scene) after any geometric correction
18458 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
18459 image output formats aside from the raw formats.<wbr/></p>
18460 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
18461 the full pixel array,<wbr/> and the size of the full pixel array is given by
18462 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
18463 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
18464 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> is defined relative to the active array rectangle given in
18465 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
18466 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
18467 include black calibration pixels or other inactive regions,<wbr/> and geometric correction
18468 resulting in scaling or cropping may have been applied.<wbr/></p>
18469             </td>
18470           </tr>
18471
18472           <tr class="entries_header">
18473             <th class="th_details" colspan="5">HAL Implementation Details</th>
18474           </tr>
18475           <tr class="entry_cont">
18476             <td class="entry_details" colspan="5">
18477               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
18478 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
18479 The <code>(width,<wbr/> height)</code> must be &lt;= <code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p>
18480             </td>
18481           </tr>
18482
18483           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18484            <!-- end of entry -->
18485         
18486                 
18487           <tr class="entry" id="static_android.sensor.info.sensitivityRange">
18488             <td class="entry_name
18489              " rowspan="3">
18490               android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
18491             </td>
18492             <td class="entry_type">
18493                 <span class="entry_type_name">int32</span>
18494                 <span class="entry_type_container">x</span>
18495
18496                 <span class="entry_type_array">
18497                   2
18498                 </span>
18499               <span class="entry_type_visibility"> [public as rangeInt]</span>
18500
18501
18502               <span class="entry_type_hwlevel">[full] </span>
18503
18504
18505                 <div class="entry_type_notes">Range of supported sensitivities</div>
18506
18507
18508             </td> <!-- entry_type -->
18509
18510             <td class="entry_description">
18511               <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
18512 camera device.<wbr/></p>
18513             </td>
18514
18515             <td class="entry_units">
18516             </td>
18517
18518             <td class="entry_range">
18519               <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
18520             </td>
18521
18522             <td class="entry_tags">
18523               <ul class="entry_tags">
18524                   <li><a href="#tag_BC">BC</a></li>
18525                   <li><a href="#tag_V1">V1</a></li>
18526               </ul>
18527             </td>
18528
18529           </tr>
18530           <tr class="entries_header">
18531             <th class="th_details" colspan="5">Details</th>
18532           </tr>
18533           <tr class="entry_cont">
18534             <td class="entry_details" colspan="5">
18535               <p>The values are the standard ISO sensitivity values,<wbr/>
18536 as defined in ISO 12232:2006.<wbr/></p>
18537             </td>
18538           </tr>
18539
18540
18541           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18542            <!-- end of entry -->
18543         
18544                 
18545           <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
18546             <td class="entry_name
18547              " rowspan="1">
18548               android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
18549             </td>
18550             <td class="entry_type">
18551                 <span class="entry_type_name entry_type_name_enum">byte</span>
18552
18553               <span class="entry_type_visibility"> [public]</span>
18554
18555
18556               <span class="entry_type_hwlevel">[full] </span>
18557
18558
18559
18560                 <ul class="entry_type_enum">
18561                   <li>
18562                     <span class="entry_type_enum_name">RGGB</span>
18563                   </li>
18564                   <li>
18565                     <span class="entry_type_enum_name">GRBG</span>
18566                   </li>
18567                   <li>
18568                     <span class="entry_type_enum_name">GBRG</span>
18569                   </li>
18570                   <li>
18571                     <span class="entry_type_enum_name">BGGR</span>
18572                   </li>
18573                   <li>
18574                     <span class="entry_type_enum_name">RGB</span>
18575                     <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
18576 values for each pixel,<wbr/> instead of just 1 16-bit value
18577 per pixel.<wbr/></p></span>
18578                   </li>
18579                 </ul>
18580
18581             </td> <!-- entry_type -->
18582
18583             <td class="entry_description">
18584               <p>The arrangement of color filters on sensor;
18585 represents the colors in the top-left 2x2 section of
18586 the sensor,<wbr/> in reading order.<wbr/></p>
18587             </td>
18588
18589             <td class="entry_units">
18590             </td>
18591
18592             <td class="entry_range">
18593             </td>
18594
18595             <td class="entry_tags">
18596               <ul class="entry_tags">
18597                   <li><a href="#tag_RAW">RAW</a></li>
18598               </ul>
18599             </td>
18600
18601           </tr>
18602
18603
18604           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18605            <!-- end of entry -->
18606         
18607                 
18608           <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
18609             <td class="entry_name
18610              " rowspan="3">
18611               android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
18612             </td>
18613             <td class="entry_type">
18614                 <span class="entry_type_name">int64</span>
18615                 <span class="entry_type_container">x</span>
18616
18617                 <span class="entry_type_array">
18618                   2
18619                 </span>
18620               <span class="entry_type_visibility"> [public as rangeLong]</span>
18621
18622
18623               <span class="entry_type_hwlevel">[full] </span>
18624
18625
18626                 <div class="entry_type_notes">nanoseconds</div>
18627
18628
18629             </td> <!-- entry_type -->
18630
18631             <td class="entry_description">
18632               <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
18633 by this camera device.<wbr/></p>
18634             </td>
18635
18636             <td class="entry_units">
18637               Nanoseconds
18638             </td>
18639
18640             <td class="entry_range">
18641               <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
18642 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18643 the maximum exposure time will be greater than 100ms.<wbr/></p>
18644             </td>
18645
18646             <td class="entry_tags">
18647               <ul class="entry_tags">
18648                   <li><a href="#tag_V1">V1</a></li>
18649               </ul>
18650             </td>
18651
18652           </tr>
18653
18654           <tr class="entries_header">
18655             <th class="th_details" colspan="5">HAL Implementation Details</th>
18656           </tr>
18657           <tr class="entry_cont">
18658             <td class="entry_details" colspan="5">
18659               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18660 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
18661 100ms.<wbr/></p>
18662             </td>
18663           </tr>
18664
18665           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18666            <!-- end of entry -->
18667         
18668                 
18669           <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
18670             <td class="entry_name
18671              " rowspan="5">
18672               android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
18673             </td>
18674             <td class="entry_type">
18675                 <span class="entry_type_name">int64</span>
18676
18677               <span class="entry_type_visibility"> [public]</span>
18678
18679
18680               <span class="entry_type_hwlevel">[full] </span>
18681
18682
18683
18684
18685             </td> <!-- entry_type -->
18686
18687             <td class="entry_description">
18688               <p>The maximum possible frame duration (minimum frame rate) for
18689 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
18690             </td>
18691
18692             <td class="entry_units">
18693               Nanoseconds
18694             </td>
18695
18696             <td class="entry_range">
18697               <p>For FULL capability devices
18698 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
18699             </td>
18700
18701             <td class="entry_tags">
18702               <ul class="entry_tags">
18703                   <li><a href="#tag_V1">V1</a></li>
18704               </ul>
18705             </td>
18706
18707           </tr>
18708           <tr class="entries_header">
18709             <th class="th_details" colspan="5">Details</th>
18710           </tr>
18711           <tr class="entry_cont">
18712             <td class="entry_details" colspan="5">
18713               <p>Attempting to use frame durations beyond the maximum will result in the frame
18714 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
18715 durations.<wbr/></p>
18716 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
18717 for the minimum frame duration values.<wbr/></p>
18718             </td>
18719           </tr>
18720
18721           <tr class="entries_header">
18722             <th class="th_details" colspan="5">HAL Implementation Details</th>
18723           </tr>
18724           <tr class="entry_cont">
18725             <td class="entry_details" colspan="5">
18726               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18727 The maximum of the range SHOULD be at least
18728 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
18729 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
18730 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
18731 value (since exposure time overrides frame duration).<wbr/></p>
18732 <p>Available minimum frame durations for JPEG must be no greater
18733 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
18734 minimum frame durations (for that respective size).<wbr/></p>
18735 <p>Since JPEG processing is considered offline and can take longer than
18736 a single uncompressed capture,<wbr/> refer to
18737 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
18738 for details about encoding this scenario.<wbr/></p>
18739             </td>
18740           </tr>
18741
18742           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18743            <!-- end of entry -->
18744         
18745                 
18746           <tr class="entry" id="static_android.sensor.info.physicalSize">
18747             <td class="entry_name
18748              " rowspan="5">
18749               android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
18750             </td>
18751             <td class="entry_type">
18752                 <span class="entry_type_name">float</span>
18753                 <span class="entry_type_container">x</span>
18754
18755                 <span class="entry_type_array">
18756                   2
18757                 </span>
18758               <span class="entry_type_visibility"> [public as sizeF]</span>
18759
18760
18761               <span class="entry_type_hwlevel">[legacy] </span>
18762
18763
18764                 <div class="entry_type_notes">width x height</div>
18765
18766
18767             </td> <!-- entry_type -->
18768
18769             <td class="entry_description">
18770               <p>The physical dimensions of the full pixel
18771 array.<wbr/></p>
18772             </td>
18773
18774             <td class="entry_units">
18775               Millimeters
18776             </td>
18777
18778             <td class="entry_range">
18779             </td>
18780
18781             <td class="entry_tags">
18782               <ul class="entry_tags">
18783                   <li><a href="#tag_V1">V1</a></li>
18784                   <li><a href="#tag_BC">BC</a></li>
18785               </ul>
18786             </td>
18787
18788           </tr>
18789           <tr class="entries_header">
18790             <th class="th_details" colspan="5">Details</th>
18791           </tr>
18792           <tr class="entry_cont">
18793             <td class="entry_details" colspan="5">
18794               <p>This is the physical size of the sensor pixel
18795 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
18796             </td>
18797           </tr>
18798
18799           <tr class="entries_header">
18800             <th class="th_details" colspan="5">HAL Implementation Details</th>
18801           </tr>
18802           <tr class="entry_cont">
18803             <td class="entry_details" colspan="5">
18804               <p>Needed for FOV calculation for old API</p>
18805             </td>
18806           </tr>
18807
18808           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18809            <!-- end of entry -->
18810         
18811                 
18812           <tr class="entry" id="static_android.sensor.info.pixelArraySize">
18813             <td class="entry_name
18814              " rowspan="3">
18815               android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
18816             </td>
18817             <td class="entry_type">
18818                 <span class="entry_type_name">int32</span>
18819                 <span class="entry_type_container">x</span>
18820
18821                 <span class="entry_type_array">
18822                   2
18823                 </span>
18824               <span class="entry_type_visibility"> [public as size]</span>
18825
18826
18827               <span class="entry_type_hwlevel">[legacy] </span>
18828
18829
18830
18831
18832             </td> <!-- entry_type -->
18833
18834             <td class="entry_description">
18835               <p>Dimensions of the full pixel array,<wbr/> possibly
18836 including black calibration pixels.<wbr/></p>
18837             </td>
18838
18839             <td class="entry_units">
18840               Pixels
18841             </td>
18842
18843             <td class="entry_range">
18844             </td>
18845
18846             <td class="entry_tags">
18847               <ul class="entry_tags">
18848                   <li><a href="#tag_RAW">RAW</a></li>
18849                   <li><a href="#tag_BC">BC</a></li>
18850               </ul>
18851             </td>
18852
18853           </tr>
18854           <tr class="entries_header">
18855             <th class="th_details" colspan="5">Details</th>
18856           </tr>
18857           <tr class="entry_cont">
18858             <td class="entry_details" colspan="5">
18859               <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
18860 <a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a> area.<wbr/>  This represents the full pixel dimensions of
18861 the raw buffers produced by this sensor.<wbr/></p>
18862 <p>If a camera device supports raw sensor formats,<wbr/> either this or
18863 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> is the maximum dimensions for the raw
18864 output formats listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> (this depends on
18865 whether or not the image sensor returns buffers containing pixels that are not
18866 part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
18867 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
18868 or be otherwise inactive.<wbr/>  The <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> key
18869 defines the rectangle of active pixels that will be included in processed image
18870 formats.<wbr/></p>
18871             </td>
18872           </tr>
18873
18874
18875           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18876            <!-- end of entry -->
18877         
18878                 
18879           <tr class="entry" id="static_android.sensor.info.whiteLevel">
18880             <td class="entry_name
18881              " rowspan="5">
18882               android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
18883             </td>
18884             <td class="entry_type">
18885                 <span class="entry_type_name">int32</span>
18886
18887               <span class="entry_type_visibility"> [public]</span>
18888
18889
18890
18891
18892
18893
18894             </td> <!-- entry_type -->
18895
18896             <td class="entry_description">
18897               <p>Maximum raw value output by sensor.<wbr/></p>
18898             </td>
18899
18900             <td class="entry_units">
18901             </td>
18902
18903             <td class="entry_range">
18904               <p>&gt; 255 (8-bit output)</p>
18905             </td>
18906
18907             <td class="entry_tags">
18908               <ul class="entry_tags">
18909                   <li><a href="#tag_RAW">RAW</a></li>
18910               </ul>
18911             </td>
18912
18913           </tr>
18914           <tr class="entries_header">
18915             <th class="th_details" colspan="5">Details</th>
18916           </tr>
18917           <tr class="entry_cont">
18918             <td class="entry_details" colspan="5">
18919               <p>This specifies the fully-saturated encoding level for the raw
18920 sample values from the sensor.<wbr/>  This is typically caused by the
18921 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
18922 each channel is specified by the offset in the
18923 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
18924 <p>The white level is typically determined either by sensor bit depth
18925 (8-14 bits is expected),<wbr/> or by the point where the sensor response
18926 becomes too non-linear to be useful.<wbr/>  The default value for this is
18927 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
18928             </td>
18929           </tr>
18930
18931           <tr class="entries_header">
18932             <th class="th_details" colspan="5">HAL Implementation Details</th>
18933           </tr>
18934           <tr class="entry_cont">
18935             <td class="entry_details" colspan="5">
18936               <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
18937 so the value for linear sensors should not be significantly lower
18938 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
18939             </td>
18940           </tr>
18941
18942           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18943            <!-- end of entry -->
18944         
18945                 
18946           <tr class="entry" id="static_android.sensor.info.timestampSource">
18947             <td class="entry_name
18948              " rowspan="3">
18949               android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
18950             </td>
18951             <td class="entry_type">
18952                 <span class="entry_type_name entry_type_name_enum">byte</span>
18953
18954               <span class="entry_type_visibility"> [public]</span>
18955
18956
18957               <span class="entry_type_hwlevel">[legacy] </span>
18958
18959
18960
18961                 <ul class="entry_type_enum">
18962                   <li>
18963                     <span class="entry_type_enum_name">UNKNOWN</span>
18964                     <span class="entry_type_enum_notes"><p>Timestamps from <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> are in nanoseconds and monotonic,<wbr/>
18965 but can not be compared to timestamps from other subsystems
18966 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
18967 camera devices in the same system.<wbr/> Timestamps between streams and results for
18968 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
18969 and the result metadata generated by a single capture are identical.<wbr/></p></span>
18970                   </li>
18971                   <li>
18972                     <span class="entry_type_enum_name">REALTIME</span>
18973                     <span class="entry_type_enum_notes"><p>Timestamps from <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> are in the same timebase as
18974 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
18975 and they can be compared to other timestamps using that base.<wbr/></p></span>
18976                   </li>
18977                 </ul>
18978
18979             </td> <!-- entry_type -->
18980
18981             <td class="entry_description">
18982               <p>The time base source for sensor capture start timestamps.<wbr/></p>
18983             </td>
18984
18985             <td class="entry_units">
18986             </td>
18987
18988             <td class="entry_range">
18989             </td>
18990
18991             <td class="entry_tags">
18992               <ul class="entry_tags">
18993                   <li><a href="#tag_V1">V1</a></li>
18994               </ul>
18995             </td>
18996
18997           </tr>
18998           <tr class="entries_header">
18999             <th class="th_details" colspan="5">Details</th>
19000           </tr>
19001           <tr class="entry_cont">
19002             <td class="entry_details" colspan="5">
19003               <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
19004 may not based on a time source that can be compared to other system time sources.<wbr/></p>
19005 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
19006 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
19007             </td>
19008           </tr>
19009
19010
19011           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19012            <!-- end of entry -->
19013         
19014                 
19015           <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
19016             <td class="entry_name
19017              " rowspan="3">
19018               android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
19019             </td>
19020             <td class="entry_type">
19021                 <span class="entry_type_name entry_type_name_enum">byte</span>
19022
19023               <span class="entry_type_visibility"> [public as boolean]</span>
19024
19025
19026
19027
19028
19029                 <ul class="entry_type_enum">
19030                   <li>
19031                     <span class="entry_type_enum_name">FALSE</span>
19032                   </li>
19033                   <li>
19034                     <span class="entry_type_enum_name">TRUE</span>
19035                   </li>
19036                 </ul>
19037
19038             </td> <!-- entry_type -->
19039
19040             <td class="entry_description">
19041               <p>Whether the RAW images output from this camera device are subject to
19042 lens shading correction.<wbr/></p>
19043             </td>
19044
19045             <td class="entry_units">
19046             </td>
19047
19048             <td class="entry_range">
19049             </td>
19050
19051             <td class="entry_tags">
19052             </td>
19053
19054           </tr>
19055           <tr class="entries_header">
19056             <th class="th_details" colspan="5">Details</th>
19057           </tr>
19058           <tr class="entry_cont">
19059             <td class="entry_details" colspan="5">
19060               <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
19061 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
19062 not be adjusted for lens shading correction.<wbr/>
19063 See <a href="#static_android.request.maxNumOutputRaw">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw</a> for a list of RAW image formats.<wbr/></p>
19064 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
19065 Devices with RAW capability will always report this information in this key.<wbr/></p>
19066             </td>
19067           </tr>
19068
19069
19070           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19071            <!-- end of entry -->
19072         
19073                 
19074           <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
19075             <td class="entry_name
19076              " rowspan="5">
19077               android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
19078             </td>
19079             <td class="entry_type">
19080                 <span class="entry_type_name">int32</span>
19081                 <span class="entry_type_container">x</span>
19082
19083                 <span class="entry_type_array">
19084                   4
19085                 </span>
19086               <span class="entry_type_visibility"> [public as rectangle]</span>
19087
19088
19089               <span class="entry_type_hwlevel">[legacy] </span>
19090
19091
19092                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
19093
19094
19095             </td> <!-- entry_type -->
19096
19097             <td class="entry_description">
19098               <p>The area of the image sensor which corresponds to active pixels prior to the
19099 application of any geometric distortion correction.<wbr/></p>
19100             </td>
19101
19102             <td class="entry_units">
19103               Pixel coordinates on the image sensor
19104             </td>
19105
19106             <td class="entry_range">
19107             </td>
19108
19109             <td class="entry_tags">
19110               <ul class="entry_tags">
19111                   <li><a href="#tag_RAW">RAW</a></li>
19112               </ul>
19113             </td>
19114
19115           </tr>
19116           <tr class="entries_header">
19117             <th class="th_details" colspan="5">Details</th>
19118           </tr>
19119           <tr class="entry_cont">
19120             <td class="entry_details" colspan="5">
19121               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
19122 the region that actually receives light from the scene) before any geometric correction
19123 has been applied,<wbr/> and should be treated as the active region rectangle for any of the
19124 raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
19125 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
19126 the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
19127 <p>The size of this region determines the maximum field of view and the maximum number of
19128 pixels that an image from this sensor can contain,<wbr/> prior to the application of
19129 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
19130 post-distortion-corrected image is given by the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>
19131 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
19132 can be calculated by applying the geometric distortion correction fields to this
19133 rectangle,<wbr/> and cropping to the rectangle given in <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19134 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
19135 dimensions in <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> given the position of a pixel,<wbr/>
19136 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
19137 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
19138 <ol>
19139 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
19140 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> otherwise this pixel is considered
19141 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
19142 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
19143 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
19144 buffers is defined relative to the top,<wbr/> left of the
19145 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> rectangle.<wbr/></li>
19146 <li>If the resulting corrected pixel coordinate is within the region given in
19147 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> then the position of this pixel in the
19148 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
19149 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
19150 </ol>
19151 <p>Thus,<wbr/> for pixel x',<wbr/>y' = (25,<wbr/> 25) on a sensor where <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>
19152 is (100,<wbr/>100),<wbr/> <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> is (10,<wbr/> 10,<wbr/> 100,<wbr/> 100),<wbr/>
19153 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> is (20,<wbr/> 20,<wbr/> 80,<wbr/> 80),<wbr/> and the geometric distortion
19154 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
19155 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
19156 with dimensions given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>,<wbr/> and would be (5,<wbr/> 5)
19157 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
19158 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19159 <p>The currently supported fields that correct for geometric distortion are:</p>
19160 <ol>
19161 <li><a href="#dynamic_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li>
19162 </ol>
19163 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
19164 as the post-distortion-corrected rectangle given in
19165 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19166 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
19167 the full pixel array,<wbr/> and the size of the full pixel array is given by
19168 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19169 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
19170 full array may include black calibration pixels or other inactive regions.<wbr/></p>
19171             </td>
19172           </tr>
19173
19174           <tr class="entries_header">
19175             <th class="th_details" colspan="5">HAL Implementation Details</th>
19176           </tr>
19177           <tr class="entry_cont">
19178             <td class="entry_details" colspan="5">
19179               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
19180 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
19181 The <code>(width,<wbr/> height)</code> must be &lt;= <code><a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a></code>.<wbr/></p>
19182 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
19183 the same as the post-correction active array region given in
19184 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
19185             </td>
19186           </tr>
19187
19188           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19189            <!-- end of entry -->
19190         
19191         
19192         
19193
19194                 
19195           <tr class="entry" id="static_android.sensor.referenceIlluminant1">
19196             <td class="entry_name
19197              " rowspan="5">
19198               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
19199             </td>
19200             <td class="entry_type">
19201                 <span class="entry_type_name entry_type_name_enum">byte</span>
19202
19203               <span class="entry_type_visibility"> [public]</span>
19204
19205
19206
19207
19208
19209                 <ul class="entry_type_enum">
19210                   <li>
19211                     <span class="entry_type_enum_name">DAYLIGHT</span>
19212                     <span class="entry_type_enum_value">1</span>
19213                   </li>
19214                   <li>
19215                     <span class="entry_type_enum_name">FLUORESCENT</span>
19216                     <span class="entry_type_enum_value">2</span>
19217                   </li>
19218                   <li>
19219                     <span class="entry_type_enum_name">TUNGSTEN</span>
19220                     <span class="entry_type_enum_value">3</span>
19221                     <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
19222                   </li>
19223                   <li>
19224                     <span class="entry_type_enum_name">FLASH</span>
19225                     <span class="entry_type_enum_value">4</span>
19226                   </li>
19227                   <li>
19228                     <span class="entry_type_enum_name">FINE_WEATHER</span>
19229                     <span class="entry_type_enum_value">9</span>
19230                   </li>
19231                   <li>
19232                     <span class="entry_type_enum_name">CLOUDY_WEATHER</span>
19233                     <span class="entry_type_enum_value">10</span>
19234                   </li>
19235                   <li>
19236                     <span class="entry_type_enum_name">SHADE</span>
19237                     <span class="entry_type_enum_value">11</span>
19238                   </li>
19239                   <li>
19240                     <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span>
19241                     <span class="entry_type_enum_value">12</span>
19242                     <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
19243                   </li>
19244                   <li>
19245                     <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span>
19246                     <span class="entry_type_enum_value">13</span>
19247                     <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
19248                   </li>
19249                   <li>
19250                     <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span>
19251                     <span class="entry_type_enum_value">14</span>
19252                     <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
19253                   </li>
19254                   <li>
19255                     <span class="entry_type_enum_name">WHITE_FLUORESCENT</span>
19256                     <span class="entry_type_enum_value">15</span>
19257                     <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
19258                   </li>
19259                   <li>
19260                     <span class="entry_type_enum_name">STANDARD_A</span>
19261                     <span class="entry_type_enum_value">17</span>
19262                   </li>
19263                   <li>
19264                     <span class="entry_type_enum_name">STANDARD_B</span>
19265                     <span class="entry_type_enum_value">18</span>
19266                   </li>
19267                   <li>
19268                     <span class="entry_type_enum_name">STANDARD_C</span>
19269                     <span class="entry_type_enum_value">19</span>
19270                   </li>
19271                   <li>
19272                     <span class="entry_type_enum_name">D55</span>
19273                     <span class="entry_type_enum_value">20</span>
19274                   </li>
19275                   <li>
19276                     <span class="entry_type_enum_name">D65</span>
19277                     <span class="entry_type_enum_value">21</span>
19278                   </li>
19279                   <li>
19280                     <span class="entry_type_enum_name">D75</span>
19281                     <span class="entry_type_enum_value">22</span>
19282                   </li>
19283                   <li>
19284                     <span class="entry_type_enum_name">D50</span>
19285                     <span class="entry_type_enum_value">23</span>
19286                   </li>
19287                   <li>
19288                     <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span>
19289                     <span class="entry_type_enum_value">24</span>
19290                   </li>
19291                 </ul>
19292
19293             </td> <!-- entry_type -->
19294
19295             <td class="entry_description">
19296               <p>The standard reference illuminant used as the scene light source when
19297 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
19298 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
19299 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
19300             </td>
19301
19302             <td class="entry_units">
19303             </td>
19304
19305             <td class="entry_range">
19306             </td>
19307
19308             <td class="entry_tags">
19309               <ul class="entry_tags">
19310                   <li><a href="#tag_RAW">RAW</a></li>
19311               </ul>
19312             </td>
19313
19314           </tr>
19315           <tr class="entries_header">
19316             <th class="th_details" colspan="5">Details</th>
19317           </tr>
19318           <tr class="entry_cont">
19319             <td class="entry_details" colspan="5">
19320               <p>The values in this key correspond to the values defined for the
19321 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
19322 that are often used calibrating camera devices.<wbr/></p>
19323 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
19324 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
19325 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
19326 <p>Some devices may choose to provide a second set of calibration
19327 information for improved quality,<wbr/> including
19328 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
19329             </td>
19330           </tr>
19331
19332           <tr class="entries_header">
19333             <th class="th_details" colspan="5">HAL Implementation Details</th>
19334           </tr>
19335           <tr class="entry_cont">
19336             <td class="entry_details" colspan="5">
19337               <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
19338 and corresponding matrices must be present to support the RAW capability
19339 and DNG output.<wbr/></p>
19340 <p>When producing raw images with a color profile that has only been
19341 calibrated against a single light source,<wbr/> it is valid to omit
19342 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
19343 <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/>
19344 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
19345 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
19346 chosen so that it is representative of typical scene lighting.<wbr/>  In
19347 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
19348 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
19349 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
19350 chosen to represent the typical range of scene lighting conditions.<wbr/>
19351 In general,<wbr/> low color temperature illuminant such as Standard-A will
19352 be chosen for the first reference illuminant and a higher color
19353 temperature illuminant such as D65 will be chosen for the second
19354 reference illuminant.<wbr/></p>
19355             </td>
19356           </tr>
19357
19358           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19359            <!-- end of entry -->
19360         
19361                 
19362           <tr class="entry" id="static_android.sensor.referenceIlluminant2">
19363             <td class="entry_name
19364              " rowspan="3">
19365               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
19366             </td>
19367             <td class="entry_type">
19368                 <span class="entry_type_name">byte</span>
19369
19370               <span class="entry_type_visibility"> [public]</span>
19371
19372
19373
19374
19375
19376
19377             </td> <!-- entry_type -->
19378
19379             <td class="entry_description">
19380               <p>The standard reference illuminant used as the scene light source when
19381 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
19382 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
19383 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
19384             </td>
19385
19386             <td class="entry_units">
19387             </td>
19388
19389             <td class="entry_range">
19390               <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
19391             </td>
19392
19393             <td class="entry_tags">
19394               <ul class="entry_tags">
19395                   <li><a href="#tag_RAW">RAW</a></li>
19396               </ul>
19397             </td>
19398
19399           </tr>
19400           <tr class="entries_header">
19401             <th class="th_details" colspan="5">Details</th>
19402           </tr>
19403           <tr class="entry_cont">
19404             <td class="entry_details" colspan="5">
19405               <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
19406 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
19407 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
19408 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
19409             </td>
19410           </tr>
19411
19412
19413           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19414            <!-- end of entry -->
19415         
19416                 
19417           <tr class="entry" id="static_android.sensor.calibrationTransform1">
19418             <td class="entry_name
19419              " rowspan="3">
19420               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
19421             </td>
19422             <td class="entry_type">
19423                 <span class="entry_type_name">rational</span>
19424                 <span class="entry_type_container">x</span>
19425
19426                 <span class="entry_type_array">
19427                   3 x 3
19428                 </span>
19429               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19430
19431
19432
19433
19434                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19435
19436
19437             </td> <!-- entry_type -->
19438
19439             <td class="entry_description">
19440               <p>A per-device calibration transform matrix that maps from the
19441 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
19442             </td>
19443
19444             <td class="entry_units">
19445             </td>
19446
19447             <td class="entry_range">
19448             </td>
19449
19450             <td class="entry_tags">
19451               <ul class="entry_tags">
19452                   <li><a href="#tag_RAW">RAW</a></li>
19453               </ul>
19454             </td>
19455
19456           </tr>
19457           <tr class="entries_header">
19458             <th class="th_details" colspan="5">Details</th>
19459           </tr>
19460           <tr class="entry_cont">
19461             <td class="entry_details" colspan="5">
19462               <p>This matrix is used to correct for per-device variations in the
19463 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
19464 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19465 contains a per-device calibration transform that maps colors
19466 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
19467 colorspace) into this camera device's native sensor color
19468 space under the first reference illuminant
19469 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
19470             </td>
19471           </tr>
19472
19473
19474           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19475            <!-- end of entry -->
19476         
19477                 
19478           <tr class="entry" id="static_android.sensor.calibrationTransform2">
19479             <td class="entry_name
19480              " rowspan="3">
19481               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
19482             </td>
19483             <td class="entry_type">
19484                 <span class="entry_type_name">rational</span>
19485                 <span class="entry_type_container">x</span>
19486
19487                 <span class="entry_type_array">
19488                   3 x 3
19489                 </span>
19490               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19491
19492
19493
19494
19495                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19496
19497
19498             </td> <!-- entry_type -->
19499
19500             <td class="entry_description">
19501               <p>A per-device calibration transform matrix that maps from the
19502 reference sensor colorspace to the actual device sensor colorspace
19503 (this is the colorspace of the raw buffer data).<wbr/></p>
19504             </td>
19505
19506             <td class="entry_units">
19507             </td>
19508
19509             <td class="entry_range">
19510             </td>
19511
19512             <td class="entry_tags">
19513               <ul class="entry_tags">
19514                   <li><a href="#tag_RAW">RAW</a></li>
19515               </ul>
19516             </td>
19517
19518           </tr>
19519           <tr class="entries_header">
19520             <th class="th_details" colspan="5">Details</th>
19521           </tr>
19522           <tr class="entry_cont">
19523             <td class="entry_details" colspan="5">
19524               <p>This matrix is used to correct for per-device variations in the
19525 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
19526 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19527 contains a per-device calibration transform that maps colors
19528 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
19529 colorspace) into this camera device's native sensor color
19530 space under the second reference illuminant
19531 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
19532 <p>This matrix will only be present if the second reference
19533 illuminant is present.<wbr/></p>
19534             </td>
19535           </tr>
19536
19537
19538           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19539            <!-- end of entry -->
19540         
19541                 
19542           <tr class="entry" id="static_android.sensor.colorTransform1">
19543             <td class="entry_name
19544              " rowspan="3">
19545               android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
19546             </td>
19547             <td class="entry_type">
19548                 <span class="entry_type_name">rational</span>
19549                 <span class="entry_type_container">x</span>
19550
19551                 <span class="entry_type_array">
19552                   3 x 3
19553                 </span>
19554               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19555
19556
19557
19558
19559                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19560
19561
19562             </td> <!-- entry_type -->
19563
19564             <td class="entry_description">
19565               <p>A matrix that transforms color values from CIE XYZ color space to
19566 reference sensor color space.<wbr/></p>
19567             </td>
19568
19569             <td class="entry_units">
19570             </td>
19571
19572             <td class="entry_range">
19573             </td>
19574
19575             <td class="entry_tags">
19576               <ul class="entry_tags">
19577                   <li><a href="#tag_RAW">RAW</a></li>
19578               </ul>
19579             </td>
19580
19581           </tr>
19582           <tr class="entries_header">
19583             <th class="th_details" colspan="5">Details</th>
19584           </tr>
19585           <tr class="entry_cont">
19586             <td class="entry_details" colspan="5">
19587               <p>This matrix is used to convert from the standard CIE XYZ color
19588 space to the reference sensor colorspace,<wbr/> and is used when processing
19589 raw buffer data.<wbr/></p>
19590 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19591 contains a color transform matrix that maps colors from the CIE
19592 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
19593 "golden module" colorspace) under the first reference illuminant
19594 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
19595 <p>The white points chosen in both the reference sensor color space
19596 and the CIE XYZ colorspace when calculating this transform will
19597 match the standard white point for the first reference illuminant
19598 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
19599             </td>
19600           </tr>
19601
19602
19603           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19604            <!-- end of entry -->
19605         
19606                 
19607           <tr class="entry" id="static_android.sensor.colorTransform2">
19608             <td class="entry_name
19609              " rowspan="3">
19610               android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
19611             </td>
19612             <td class="entry_type">
19613                 <span class="entry_type_name">rational</span>
19614                 <span class="entry_type_container">x</span>
19615
19616                 <span class="entry_type_array">
19617                   3 x 3
19618                 </span>
19619               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19620
19621
19622
19623
19624                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19625
19626
19627             </td> <!-- entry_type -->
19628
19629             <td class="entry_description">
19630               <p>A matrix that transforms color values from CIE XYZ color space to
19631 reference sensor color space.<wbr/></p>
19632             </td>
19633
19634             <td class="entry_units">
19635             </td>
19636
19637             <td class="entry_range">
19638             </td>
19639
19640             <td class="entry_tags">
19641               <ul class="entry_tags">
19642                   <li><a href="#tag_RAW">RAW</a></li>
19643               </ul>
19644             </td>
19645
19646           </tr>
19647           <tr class="entries_header">
19648             <th class="th_details" colspan="5">Details</th>
19649           </tr>
19650           <tr class="entry_cont">
19651             <td class="entry_details" colspan="5">
19652               <p>This matrix is used to convert from the standard CIE XYZ color
19653 space to the reference sensor colorspace,<wbr/> and is used when processing
19654 raw buffer data.<wbr/></p>
19655 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
19656 contains a color transform matrix that maps colors from the CIE
19657 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
19658 "golden module" colorspace) under the second reference illuminant
19659 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
19660 <p>The white points chosen in both the reference sensor color space
19661 and the CIE XYZ colorspace when calculating this transform will
19662 match the standard white point for the second reference illuminant
19663 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
19664 <p>This matrix will only be present if the second reference
19665 illuminant is present.<wbr/></p>
19666             </td>
19667           </tr>
19668
19669
19670           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19671            <!-- end of entry -->
19672         
19673                 
19674           <tr class="entry" id="static_android.sensor.forwardMatrix1">
19675             <td class="entry_name
19676              " rowspan="3">
19677               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
19678             </td>
19679             <td class="entry_type">
19680                 <span class="entry_type_name">rational</span>
19681                 <span class="entry_type_container">x</span>
19682
19683                 <span class="entry_type_array">
19684                   3 x 3
19685                 </span>
19686               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19687
19688
19689
19690
19691                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19692
19693
19694             </td> <!-- entry_type -->
19695
19696             <td class="entry_description">
19697               <p>A matrix that transforms white balanced camera colors from the reference
19698 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
19699             </td>
19700
19701             <td class="entry_units">
19702             </td>
19703
19704             <td class="entry_range">
19705             </td>
19706
19707             <td class="entry_tags">
19708               <ul class="entry_tags">
19709                   <li><a href="#tag_RAW">RAW</a></li>
19710               </ul>
19711             </td>
19712
19713           </tr>
19714           <tr class="entries_header">
19715             <th class="th_details" colspan="5">Details</th>
19716           </tr>
19717           <tr class="entry_cont">
19718             <td class="entry_details" colspan="5">
19719               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
19720 is used when processing raw buffer data.<wbr/></p>
19721 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
19722 a color transform matrix that maps white balanced colors from the
19723 reference sensor color space to the CIE XYZ color space with a D50 white
19724 point.<wbr/></p>
19725 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
19726 this matrix is chosen so that the standard white point for this reference
19727 illuminant in the reference sensor colorspace is mapped to D50 in the
19728 CIE XYZ colorspace.<wbr/></p>
19729             </td>
19730           </tr>
19731
19732
19733           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19734            <!-- end of entry -->
19735         
19736                 
19737           <tr class="entry" id="static_android.sensor.forwardMatrix2">
19738             <td class="entry_name
19739              " rowspan="3">
19740               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
19741             </td>
19742             <td class="entry_type">
19743                 <span class="entry_type_name">rational</span>
19744                 <span class="entry_type_container">x</span>
19745
19746                 <span class="entry_type_array">
19747                   3 x 3
19748                 </span>
19749               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
19750
19751
19752
19753
19754                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
19755
19756
19757             </td> <!-- entry_type -->
19758
19759             <td class="entry_description">
19760               <p>A matrix that transforms white balanced camera colors from the reference
19761 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
19762             </td>
19763
19764             <td class="entry_units">
19765             </td>
19766
19767             <td class="entry_range">
19768             </td>
19769
19770             <td class="entry_tags">
19771               <ul class="entry_tags">
19772                   <li><a href="#tag_RAW">RAW</a></li>
19773               </ul>
19774             </td>
19775
19776           </tr>
19777           <tr class="entries_header">
19778             <th class="th_details" colspan="5">Details</th>
19779           </tr>
19780           <tr class="entry_cont">
19781             <td class="entry_details" colspan="5">
19782               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
19783 is used when processing raw buffer data.<wbr/></p>
19784 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
19785 a color transform matrix that maps white balanced colors from the
19786 reference sensor color space to the CIE XYZ color space with a D50 white
19787 point.<wbr/></p>
19788 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
19789 this matrix is chosen so that the standard white point for this reference
19790 illuminant in the reference sensor colorspace is mapped to D50 in the
19791 CIE XYZ colorspace.<wbr/></p>
19792 <p>This matrix will only be present if the second reference
19793 illuminant is present.<wbr/></p>
19794             </td>
19795           </tr>
19796
19797
19798           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19799            <!-- end of entry -->
19800         
19801                 
19802           <tr class="entry" id="static_android.sensor.baseGainFactor">
19803             <td class="entry_name
19804              " rowspan="1">
19805               android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
19806             </td>
19807             <td class="entry_type">
19808                 <span class="entry_type_name">rational</span>
19809
19810               <span class="entry_type_visibility"> [system]</span>
19811
19812
19813
19814
19815
19816
19817             </td> <!-- entry_type -->
19818
19819             <td class="entry_description">
19820               <p>Gain factor from electrons to raw units when
19821 ISO=100</p>
19822             </td>
19823
19824             <td class="entry_units">
19825             </td>
19826
19827             <td class="entry_range">
19828             </td>
19829
19830             <td class="entry_tags">
19831               <ul class="entry_tags">
19832                   <li><a href="#tag_FUTURE">FUTURE</a></li>
19833               </ul>
19834             </td>
19835
19836           </tr>
19837
19838
19839           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19840            <!-- end of entry -->
19841         
19842                 
19843           <tr class="entry" id="static_android.sensor.blackLevelPattern">
19844             <td class="entry_name
19845              " rowspan="5">
19846               android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
19847             </td>
19848             <td class="entry_type">
19849                 <span class="entry_type_name">int32</span>
19850                 <span class="entry_type_container">x</span>
19851
19852                 <span class="entry_type_array">
19853                   4
19854                 </span>
19855               <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
19856
19857
19858
19859
19860                 <div class="entry_type_notes">2x2 raw count block</div>
19861
19862
19863             </td> <!-- entry_type -->
19864
19865             <td class="entry_description">
19866               <p>A fixed black level offset for each of the color filter arrangement
19867 (CFA) mosaic channels.<wbr/></p>
19868             </td>
19869
19870             <td class="entry_units">
19871             </td>
19872
19873             <td class="entry_range">
19874               <p>&gt;= 0 for each.<wbr/></p>
19875             </td>
19876
19877             <td class="entry_tags">
19878               <ul class="entry_tags">
19879                   <li><a href="#tag_RAW">RAW</a></li>
19880               </ul>
19881             </td>
19882
19883           </tr>
19884           <tr class="entries_header">
19885             <th class="th_details" colspan="5">Details</th>
19886           </tr>
19887           <tr class="entry_cont">
19888             <td class="entry_details" colspan="5">
19889               <p>This key specifies the zero light value for each of the CFA mosaic
19890 channels in the camera sensor.<wbr/>  The maximal value output by the
19891 sensor 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>
19892 <p>The values are given in the same order as channels listed for the CFA
19893 layout key (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>),<wbr/> i.<wbr/>e.<wbr/> the
19894 nth value given corresponds to the black level offset for the nth
19895 color channel listed in the CFA.<wbr/></p>
19896             </td>
19897           </tr>
19898
19899           <tr class="entries_header">
19900             <th class="th_details" colspan="5">HAL Implementation Details</th>
19901           </tr>
19902           <tr class="entry_cont">
19903             <td class="entry_details" colspan="5">
19904               <p>The values are given in row-column scan order,<wbr/> with the first value
19905 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
19906             </td>
19907           </tr>
19908
19909           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19910            <!-- end of entry -->
19911         
19912                 
19913           <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
19914             <td class="entry_name
19915              " rowspan="3">
19916               android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
19917             </td>
19918             <td class="entry_type">
19919                 <span class="entry_type_name">int32</span>
19920
19921               <span class="entry_type_visibility"> [public]</span>
19922
19923
19924               <span class="entry_type_hwlevel">[full] </span>
19925
19926
19927
19928
19929             </td> <!-- entry_type -->
19930
19931             <td class="entry_description">
19932               <p>Maximum sensitivity that is implemented
19933 purely through analog gain.<wbr/></p>
19934             </td>
19935
19936             <td class="entry_units">
19937             </td>
19938
19939             <td class="entry_range">
19940             </td>
19941
19942             <td class="entry_tags">
19943               <ul class="entry_tags">
19944                   <li><a href="#tag_V1">V1</a></li>
19945                   <li><a href="#tag_FULL">FULL</a></li>
19946               </ul>
19947             </td>
19948
19949           </tr>
19950           <tr class="entries_header">
19951             <th class="th_details" colspan="5">Details</th>
19952           </tr>
19953           <tr class="entry_cont">
19954             <td class="entry_details" colspan="5">
19955               <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
19956 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
19957 values above this,<wbr/> the gain applied can be a mix of analog and
19958 digital.<wbr/></p>
19959             </td>
19960           </tr>
19961
19962
19963           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19964            <!-- end of entry -->
19965         
19966                 
19967           <tr class="entry" id="static_android.sensor.orientation">
19968             <td class="entry_name
19969              " rowspan="3">
19970               android.<wbr/>sensor.<wbr/>orientation
19971             </td>
19972             <td class="entry_type">
19973                 <span class="entry_type_name">int32</span>
19974
19975               <span class="entry_type_visibility"> [public]</span>
19976
19977
19978               <span class="entry_type_hwlevel">[legacy] </span>
19979
19980
19981
19982
19983             </td> <!-- entry_type -->
19984
19985             <td class="entry_description">
19986               <p>Clockwise angle through which the output image needs to be rotated to be
19987 upright on the device screen in its native orientation.<wbr/></p>
19988             </td>
19989
19990             <td class="entry_units">
19991               Degrees of clockwise rotation; always a multiple of
19992           90
19993             </td>
19994
19995             <td class="entry_range">
19996               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
19997             </td>
19998
19999             <td class="entry_tags">
20000               <ul class="entry_tags">
20001                   <li><a href="#tag_BC">BC</a></li>
20002               </ul>
20003             </td>
20004
20005           </tr>
20006           <tr class="entries_header">
20007             <th class="th_details" colspan="5">Details</th>
20008           </tr>
20009           <tr class="entry_cont">
20010             <td class="entry_details" colspan="5">
20011               <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
20012 the sensor's coordinate system.<wbr/></p>
20013             </td>
20014           </tr>
20015
20016
20017           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20018            <!-- end of entry -->
20019         
20020                 
20021           <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
20022             <td class="entry_name
20023              " rowspan="3">
20024               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
20025             </td>
20026             <td class="entry_type">
20027                 <span class="entry_type_name">int32</span>
20028                 <span class="entry_type_container">x</span>
20029
20030                 <span class="entry_type_array">
20031                   3
20032                 </span>
20033               <span class="entry_type_visibility"> [system]</span>
20034
20035
20036
20037
20038                 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
20039
20040
20041             </td> <!-- entry_type -->
20042
20043             <td class="entry_description">
20044               <p>The number of input samples for each dimension of
20045 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
20046             </td>
20047
20048             <td class="entry_units">
20049             </td>
20050
20051             <td class="entry_range">
20052               <p>Hue &gt;= 1,<wbr/>
20053 Saturation &gt;= 2,<wbr/>
20054 Value &gt;= 1</p>
20055             </td>
20056
20057             <td class="entry_tags">
20058               <ul class="entry_tags">
20059                   <li><a href="#tag_RAW">RAW</a></li>
20060               </ul>
20061             </td>
20062
20063           </tr>
20064           <tr class="entries_header">
20065             <th class="th_details" colspan="5">Details</th>
20066           </tr>
20067           <tr class="entry_cont">
20068             <td class="entry_details" colspan="5">
20069               <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
20070 dimension of <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/> The order of the
20071 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
20072 element.<wbr/></p>
20073             </td>
20074           </tr>
20075
20076
20077           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20078            <!-- end of entry -->
20079         
20080                 
20081           <tr class="entry" id="static_android.sensor.availableTestPatternModes">
20082             <td class="entry_name
20083              " rowspan="5">
20084               android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
20085             </td>
20086             <td class="entry_type">
20087                 <span class="entry_type_name">int32</span>
20088                 <span class="entry_type_container">x</span>
20089
20090                 <span class="entry_type_array">
20091                   n
20092                 </span>
20093               <span class="entry_type_visibility"> [public]</span>
20094
20095
20096
20097
20098                 <div class="entry_type_notes">list of enums</div>
20099
20100
20101             </td> <!-- entry_type -->
20102
20103             <td class="entry_description">
20104               <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
20105 supported by this camera device.<wbr/></p>
20106             </td>
20107
20108             <td class="entry_units">
20109             </td>
20110
20111             <td class="entry_range">
20112               <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
20113             </td>
20114
20115             <td class="entry_tags">
20116             </td>
20117
20118           </tr>
20119           <tr class="entries_header">
20120             <th class="th_details" colspan="5">Details</th>
20121           </tr>
20122           <tr class="entry_cont">
20123             <td class="entry_details" colspan="5">
20124               <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
20125             </td>
20126           </tr>
20127
20128           <tr class="entries_header">
20129             <th class="th_details" colspan="5">HAL Implementation Details</th>
20130           </tr>
20131           <tr class="entry_cont">
20132             <td class="entry_details" colspan="5">
20133               <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
20134             </td>
20135           </tr>
20136
20137           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20138            <!-- end of entry -->
20139         
20140         
20141
20142       <!-- end of kind -->
20143       </tbody>
20144       <tr><td colspan="6" class="kind">dynamic</td></tr>
20145
20146       <thead class="entries_header">
20147         <tr>
20148           <th class="th_name">Property Name</th>
20149           <th class="th_type">Type</th>
20150           <th class="th_description">Description</th>
20151           <th class="th_units">Units</th>
20152           <th class="th_range">Range</th>
20153           <th class="th_tags">Tags</th>
20154         </tr>
20155       </thead>
20156
20157       <tbody>
20158
20159         
20160
20161         
20162
20163         
20164
20165         
20166
20167                 
20168           <tr class="entry" id="dynamic_android.sensor.exposureTime">
20169             <td class="entry_name
20170              " rowspan="3">
20171               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
20172             </td>
20173             <td class="entry_type">
20174                 <span class="entry_type_name">int64</span>
20175
20176               <span class="entry_type_visibility"> [public]</span>
20177
20178
20179               <span class="entry_type_hwlevel">[full] </span>
20180
20181
20182
20183
20184             </td> <!-- entry_type -->
20185
20186             <td class="entry_description">
20187               <p>Duration each pixel is exposed to
20188 light.<wbr/></p>
20189             </td>
20190
20191             <td class="entry_units">
20192               Nanoseconds
20193             </td>
20194
20195             <td class="entry_range">
20196               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
20197             </td>
20198
20199             <td class="entry_tags">
20200               <ul class="entry_tags">
20201                   <li><a href="#tag_V1">V1</a></li>
20202               </ul>
20203             </td>
20204
20205           </tr>
20206           <tr class="entries_header">
20207             <th class="th_details" colspan="5">Details</th>
20208           </tr>
20209           <tr class="entry_cont">
20210             <td class="entry_details" colspan="5">
20211               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
20212 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
20213 The final exposure time used will be available in the output capture result.<wbr/></p>
20214 <p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
20215 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20216             </td>
20217           </tr>
20218
20219
20220           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20221            <!-- end of entry -->
20222         
20223                 
20224           <tr class="entry" id="dynamic_android.sensor.frameDuration">
20225             <td class="entry_name
20226              " rowspan="5">
20227               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
20228             </td>
20229             <td class="entry_type">
20230                 <span class="entry_type_name">int64</span>
20231
20232               <span class="entry_type_visibility"> [public]</span>
20233
20234
20235               <span class="entry_type_hwlevel">[full] </span>
20236
20237
20238
20239
20240             </td> <!-- entry_type -->
20241
20242             <td class="entry_description">
20243               <p>Duration from start of frame exposure to
20244 start of next frame exposure.<wbr/></p>
20245             </td>
20246
20247             <td class="entry_units">
20248               Nanoseconds
20249             </td>
20250
20251             <td class="entry_range">
20252               <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
20253 <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
20254 is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
20255             </td>
20256
20257             <td class="entry_tags">
20258               <ul class="entry_tags">
20259                   <li><a href="#tag_V1">V1</a></li>
20260               </ul>
20261             </td>
20262
20263           </tr>
20264           <tr class="entries_header">
20265             <th class="th_details" colspan="5">Details</th>
20266           </tr>
20267           <tr class="entry_cont">
20268             <td class="entry_details" colspan="5">
20269               <p>The maximum frame rate that can be supported by a camera subsystem is
20270 a function of many factors:</p>
20271 <ul>
20272 <li>Requested resolutions of output image streams</li>
20273 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
20274 <li>The bandwidth of the imager interface</li>
20275 <li>The bandwidth of the various ISP processing blocks</li>
20276 </ul>
20277 <p>Since these factors can vary greatly between different ISPs and
20278 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
20279 restrictions with as simple a model as possible.<wbr/></p>
20280 <p>The model presented has the following characteristics:</p>
20281 <ul>
20282 <li>The image sensor is always configured to output the smallest
20283 resolution possible given the application's requested output stream
20284 sizes.<wbr/>  The smallest resolution is defined as being at least as large
20285 as the largest requested output stream size; the camera pipeline must
20286 never digitally upsample sensor data when the crop region covers the
20287 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
20288 resolutions are configured,<wbr/> the sensor can provide a higher frame
20289 rate.<wbr/></li>
20290 <li>Since any request may use any or all the currently configured
20291 output streams,<wbr/> the sensor and ISP must be configured to support
20292 scaling a single capture to all the streams at the same time.<wbr/>  This
20293 means the camera pipeline must be ready to produce the largest
20294 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
20295 frame rate of a given configured stream set is governed only by the
20296 largest requested stream resolution.<wbr/></li>
20297 <li>Using more than one output stream in a request does not affect the
20298 frame duration.<wbr/></li>
20299 <li>Certain format-streams may need to do additional background processing
20300 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
20301 can run concurrently to the rest of the camera pipeline,<wbr/> but
20302 cannot process more than 1 capture at a time.<wbr/></li>
20303 </ul>
20304 <p>The necessary information for the application,<wbr/> given the model above,<wbr/>
20305 is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
20306 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
20307 These are used to determine the maximum frame rate /<wbr/> minimum frame
20308 duration that is possible for a given stream configuration.<wbr/></p>
20309 <p>Specifically,<wbr/> the application can use the following rules to
20310 determine the minimum frame duration it can request from the camera
20311 device:</p>
20312 <ol>
20313 <li>Let the set of currently configured input/<wbr/>output streams
20314 be called <code>S</code>.<wbr/></li>
20315 <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
20316 it up in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> using <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20317 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
20318 called <code>F</code>.<wbr/></li>
20319 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
20320 for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
20321 used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
20322 </ol>
20323 <p>If none of the streams in <code>S_<wbr/>r</code> have a stall time (listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>
20324 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
20325 determines the steady state frame rate that the application will get
20326 if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
20327 request be called <code>Rsimple</code>.<wbr/></p>
20328 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
20329 by a single capture of a new request <code>Rstall</code> (which has at least
20330 one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
20331 same minimum frame duration this will not cause a frame rate loss
20332 if all buffers from the previous <code>Rstall</code> have already been
20333 delivered.<wbr/></p>
20334 <p>For more details about stalling,<wbr/> see
20335 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
20336 <p>This control is only effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> or <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is set to
20337 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
20338             </td>
20339           </tr>
20340
20341           <tr class="entries_header">
20342             <th class="th_details" colspan="5">HAL Implementation Details</th>
20343           </tr>
20344           <tr class="entry_cont">
20345             <td class="entry_details" colspan="5">
20346               <p>For more details about stalling,<wbr/> see
20347 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
20348             </td>
20349           </tr>
20350
20351           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20352            <!-- end of entry -->
20353         
20354                 
20355           <tr class="entry" id="dynamic_android.sensor.sensitivity">
20356             <td class="entry_name
20357              " rowspan="5">
20358               android.<wbr/>sensor.<wbr/>sensitivity
20359             </td>
20360             <td class="entry_type">
20361                 <span class="entry_type_name">int32</span>
20362
20363               <span class="entry_type_visibility"> [public]</span>
20364
20365
20366               <span class="entry_type_hwlevel">[full] </span>
20367
20368
20369
20370
20371             </td> <!-- entry_type -->
20372
20373             <td class="entry_description">
20374               <p>The amount of gain applied to sensor data
20375 before processing.<wbr/></p>
20376             </td>
20377
20378             <td class="entry_units">
20379               ISO arithmetic units
20380             </td>
20381
20382             <td class="entry_range">
20383               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
20384             </td>
20385
20386             <td class="entry_tags">
20387               <ul class="entry_tags">
20388                   <li><a href="#tag_V1">V1</a></li>
20389               </ul>
20390             </td>
20391
20392           </tr>
20393           <tr class="entries_header">
20394             <th class="th_details" colspan="5">Details</th>
20395           </tr>
20396           <tr class="entry_cont">
20397             <td class="entry_details" colspan="5">
20398               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
20399 as defined in ISO 12232:2006.<wbr/></p>
20400 <p>The sensitivity must be within <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a>,<wbr/> and
20401 if if it less than <a href="#static_android.sensor.maxAnalogSensitivity">android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity</a>,<wbr/> the camera device
20402 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
20403 <p>If the camera device cannot apply the exact sensitivity
20404 requested,<wbr/> it will reduce the gain to the nearest supported
20405 value.<wbr/> The final sensitivity used will be available in the
20406 output capture result.<wbr/></p>
20407             </td>
20408           </tr>
20409
20410           <tr class="entries_header">
20411             <th class="th_details" colspan="5">HAL Implementation Details</th>
20412           </tr>
20413           <tr class="entry_cont">
20414             <td class="entry_details" colspan="5">
20415               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
20416             </td>
20417           </tr>
20418
20419           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20420            <!-- end of entry -->
20421         
20422                 
20423           <tr class="entry" id="dynamic_android.sensor.timestamp">
20424             <td class="entry_name
20425              " rowspan="5">
20426               android.<wbr/>sensor.<wbr/>timestamp
20427             </td>
20428             <td class="entry_type">
20429                 <span class="entry_type_name">int64</span>
20430
20431               <span class="entry_type_visibility"> [public]</span>
20432
20433
20434               <span class="entry_type_hwlevel">[legacy] </span>
20435
20436
20437
20438
20439             </td> <!-- entry_type -->
20440
20441             <td class="entry_description">
20442               <p>Time at start of exposure of first
20443 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
20444             </td>
20445
20446             <td class="entry_units">
20447               Nanoseconds
20448             </td>
20449
20450             <td class="entry_range">
20451               <p>&gt; 0</p>
20452             </td>
20453
20454             <td class="entry_tags">
20455               <ul class="entry_tags">
20456                   <li><a href="#tag_BC">BC</a></li>
20457               </ul>
20458             </td>
20459
20460           </tr>
20461           <tr class="entries_header">
20462             <th class="th_details" colspan="5">Details</th>
20463           </tr>
20464           <tr class="entry_cont">
20465             <td class="entry_details" colspan="5">
20466               <p>The timestamps are also included in all image
20467 buffers produced for the same capture,<wbr/> and will be identical
20468 on all the outputs.<wbr/></p>
20469 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
20470 the timestamps measure time since an unspecified starting point,<wbr/>
20471 and are monotonically increasing.<wbr/> They can be compared with the
20472 timestamps for other captures from the same camera device,<wbr/> but are
20473 not guaranteed to be comparable to any other time source.<wbr/></p>
20474 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
20475 timestamps measure time in the same timebase as <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/> and they can
20476 be compared to other timestamps from other subsystems that
20477 are using that base.<wbr/></p>
20478 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
20479 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
20480 timestamp</a> in the TotalCaptureResult that was used to create the
20481 reprocess capture request.<wbr/></p>
20482             </td>
20483           </tr>
20484
20485           <tr class="entries_header">
20486             <th class="th_details" colspan="5">HAL Implementation Details</th>
20487           </tr>
20488           <tr class="entry_cont">
20489             <td class="entry_details" colspan="5">
20490               <p>All timestamps must be in reference to the kernel's
20491 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
20492 time spent asleep.<wbr/> This allows for synchronization with
20493 sensors that continue to operate while the system is
20494 otherwise asleep.<wbr/></p>
20495 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
20496 The timestamp must be synchronized with the timestamps from other
20497 sensor subsystems that are using the same timebase.<wbr/></p>
20498 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
20499 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
20500 capture request.<wbr/></p>
20501             </td>
20502           </tr>
20503
20504           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20505            <!-- end of entry -->
20506         
20507                 
20508           <tr class="entry" id="dynamic_android.sensor.temperature">
20509             <td class="entry_name
20510              " rowspan="1">
20511               android.<wbr/>sensor.<wbr/>temperature
20512             </td>
20513             <td class="entry_type">
20514                 <span class="entry_type_name">float</span>
20515
20516               <span class="entry_type_visibility"> [system]</span>
20517
20518
20519
20520
20521
20522
20523             </td> <!-- entry_type -->
20524
20525             <td class="entry_description">
20526               <p>The temperature of the sensor,<wbr/> sampled at the time
20527 exposure began for this frame.<wbr/></p>
20528 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
20529 somewhere close to it.<wbr/></p>
20530             </td>
20531
20532             <td class="entry_units">
20533               Celsius
20534             </td>
20535
20536             <td class="entry_range">
20537               <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
20538             </td>
20539
20540             <td class="entry_tags">
20541               <ul class="entry_tags">
20542                   <li><a href="#tag_FUTURE">FUTURE</a></li>
20543               </ul>
20544             </td>
20545
20546           </tr>
20547
20548
20549           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20550            <!-- end of entry -->
20551         
20552                 
20553           <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
20554             <td class="entry_name
20555              " rowspan="3">
20556               android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
20557             </td>
20558             <td class="entry_type">
20559                 <span class="entry_type_name">rational</span>
20560                 <span class="entry_type_container">x</span>
20561
20562                 <span class="entry_type_array">
20563                   3
20564                 </span>
20565               <span class="entry_type_visibility"> [public]</span>
20566
20567
20568
20569
20570
20571
20572             </td> <!-- entry_type -->
20573
20574             <td class="entry_description">
20575               <p>The estimated camera neutral color in the native sensor colorspace at
20576 the time of capture.<wbr/></p>
20577             </td>
20578
20579             <td class="entry_units">
20580             </td>
20581
20582             <td class="entry_range">
20583             </td>
20584
20585             <td class="entry_tags">
20586               <ul class="entry_tags">
20587                   <li><a href="#tag_RAW">RAW</a></li>
20588               </ul>
20589             </td>
20590
20591           </tr>
20592           <tr class="entries_header">
20593             <th class="th_details" colspan="5">Details</th>
20594           </tr>
20595           <tr class="entry_cont">
20596             <td class="entry_details" colspan="5">
20597               <p>This value gives the neutral color point encoded as an RGB value in the
20598 native sensor color space.<wbr/>  The neutral color point indicates the
20599 currently estimated white point of the scene illumination.<wbr/>  It can be
20600 used to interpolate between the provided color transforms when
20601 processing raw sensor data.<wbr/></p>
20602 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
20603             </td>
20604           </tr>
20605
20606
20607           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20608            <!-- end of entry -->
20609         
20610                 
20611           <tr class="entry" id="dynamic_android.sensor.noiseProfile">
20612             <td class="entry_name
20613              " rowspan="5">
20614               android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
20615             </td>
20616             <td class="entry_type">
20617                 <span class="entry_type_name">double</span>
20618                 <span class="entry_type_container">x</span>
20619
20620                 <span class="entry_type_array">
20621                   2 x CFA Channels
20622                 </span>
20623               <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
20624
20625
20626
20627
20628                 <div class="entry_type_notes">Pairs of noise model coefficients</div>
20629
20630
20631             </td> <!-- entry_type -->
20632
20633             <td class="entry_description">
20634               <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
20635             </td>
20636
20637             <td class="entry_units">
20638             </td>
20639
20640             <td class="entry_range">
20641             </td>
20642
20643             <td class="entry_tags">
20644               <ul class="entry_tags">
20645                   <li><a href="#tag_RAW">RAW</a></li>
20646               </ul>
20647             </td>
20648
20649           </tr>
20650           <tr class="entries_header">
20651             <th class="th_details" colspan="5">Details</th>
20652           </tr>
20653           <tr class="entry_cont">
20654             <td class="entry_details" colspan="5">
20655               <p>This key contains two noise model coefficients for each CFA channel
20656 corresponding to the sensor amplification (S) and sensor readout
20657 noise (O).<wbr/>  These are given as pairs of coefficients for each channel
20658 in the same order as channels listed for the CFA layout key
20659 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
20660 represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
20661 the first member of the Pair at index n is the S coefficient and the
20662 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
20663 <p>These coefficients are used in a two parameter noise model to describe
20664 the amount of noise present in the image for each CFA channel.<wbr/>  The
20665 noise model used here is:</p>
20666 <p>N(x) = sqrt(Sx + O)</p>
20667 <p>Where x represents the recorded signal of a CFA channel normalized to
20668 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
20669 that channel.<wbr/></p>
20670 <p>A more detailed description of the noise model can be found in the
20671 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
20672             </td>
20673           </tr>
20674
20675           <tr class="entries_header">
20676             <th class="th_details" colspan="5">HAL Implementation Details</th>
20677           </tr>
20678           <tr class="entry_cont">
20679             <td class="entry_details" colspan="5">
20680               <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
20681 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
20682 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
20683 channel,<wbr/> etc.<wbr/></p>
20684             </td>
20685           </tr>
20686
20687           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20688            <!-- end of entry -->
20689         
20690                 
20691           <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
20692             <td class="entry_name
20693              " rowspan="3">
20694               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
20695             </td>
20696             <td class="entry_type">
20697                 <span class="entry_type_name">float</span>
20698                 <span class="entry_type_container">x</span>
20699
20700                 <span class="entry_type_array">
20701                   hue_samples x saturation_samples x value_samples x 3
20702                 </span>
20703               <span class="entry_type_visibility"> [system]</span>
20704
20705
20706
20707
20708                 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
20709
20710
20711             </td> <!-- entry_type -->
20712
20713             <td class="entry_description">
20714               <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
20715 for each pixel.<wbr/></p>
20716             </td>
20717
20718             <td class="entry_units">
20719               
20720           The hue shift is given in degrees; saturation and value scale factors are
20721           unitless and are between 0 and 1 inclusive
20722           
20723             </td>
20724
20725             <td class="entry_range">
20726             </td>
20727
20728             <td class="entry_tags">
20729               <ul class="entry_tags">
20730                   <li><a href="#tag_RAW">RAW</a></li>
20731               </ul>
20732             </td>
20733
20734           </tr>
20735           <tr class="entries_header">
20736             <th class="th_details" colspan="5">Details</th>
20737           </tr>
20738           <tr class="entry_cont">
20739             <td class="entry_details" colspan="5">
20740               <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
20741 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
20742 <p>Each entry of this map contains three floats corresponding to the
20743 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
20744 hue shift has the lowest index.<wbr/> The map entries are stored in the key
20745 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
20746 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
20747 inner loop.<wbr/> All zero input saturation entries are required to have a
20748 value scale factor of 1.<wbr/>0.<wbr/></p>
20749             </td>
20750           </tr>
20751
20752
20753           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20754            <!-- end of entry -->
20755         
20756                 
20757           <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
20758             <td class="entry_name
20759              " rowspan="3">
20760               android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
20761             </td>
20762             <td class="entry_type">
20763                 <span class="entry_type_name">float</span>
20764                 <span class="entry_type_container">x</span>
20765
20766                 <span class="entry_type_array">
20767                   samples x 2
20768                 </span>
20769               <span class="entry_type_visibility"> [system]</span>
20770
20771
20772
20773
20774                 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
20775
20776
20777             </td> <!-- entry_type -->
20778
20779             <td class="entry_description">
20780               <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
20781             </td>
20782
20783             <td class="entry_units">
20784             </td>
20785
20786             <td class="entry_range">
20787               <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
20788 <code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
20789 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
20790             </td>
20791
20792             <td class="entry_tags">
20793               <ul class="entry_tags">
20794                   <li><a href="#tag_RAW">RAW</a></li>
20795               </ul>
20796             </td>
20797
20798           </tr>
20799           <tr class="entries_header">
20800             <th class="th_details" colspan="5">Details</th>
20801           </tr>
20802           <tr class="entry_cont">
20803             <td class="entry_details" colspan="5">
20804               <p>This key contains a default tone curve that can be applied while
20805 processing the image as a starting point for user adjustments.<wbr/>
20806 The curve is specified as a list of value pairs in linear gamma.<wbr/>
20807 The curve is interpolated using a cubic spline.<wbr/></p>
20808             </td>
20809           </tr>
20810
20811
20812           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20813            <!-- end of entry -->
20814         
20815                 
20816           <tr class="entry" id="dynamic_android.sensor.greenSplit">
20817             <td class="entry_name
20818              " rowspan="5">
20819               android.<wbr/>sensor.<wbr/>green<wbr/>Split
20820             </td>
20821             <td class="entry_type">
20822                 <span class="entry_type_name">float</span>
20823
20824               <span class="entry_type_visibility"> [public]</span>
20825
20826
20827
20828
20829
20830
20831             </td> <!-- entry_type -->
20832
20833             <td class="entry_description">
20834               <p>The worst-case divergence between Bayer green channels.<wbr/></p>
20835             </td>
20836
20837             <td class="entry_units">
20838             </td>
20839
20840             <td class="entry_range">
20841               <p>&gt;= 0</p>
20842             </td>
20843
20844             <td class="entry_tags">
20845               <ul class="entry_tags">
20846                   <li><a href="#tag_RAW">RAW</a></li>
20847               </ul>
20848             </td>
20849
20850           </tr>
20851           <tr class="entries_header">
20852             <th class="th_details" colspan="5">Details</th>
20853           </tr>
20854           <tr class="entry_cont">
20855             <td class="entry_details" colspan="5">
20856               <p>This value is an estimate of the worst case split between the
20857 Bayer green channels in the red and blue rows in the sensor color
20858 filter array.<wbr/></p>
20859 <p>The green split is calculated as follows:</p>
20860 <ol>
20861 <li>A 5x5 pixel (or larger) window W within the active sensor array is
20862 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
20863 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
20864 chosen is implementation defined,<wbr/> and should be chosen to provide a
20865 green split estimate that is both representative of the entire image
20866 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
20867 <li>The arithmetic mean of the green channels from the red
20868 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
20869 <li>The arithmetic mean of the green channels from the blue
20870 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
20871 <li>The maximum ratio R of the two means is computed as follows:
20872 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
20873 </ol>
20874 <p>The ratio R is the green split divergence reported for this property,<wbr/>
20875 which represents how much the green channels differ in the mosaic
20876 pattern.<wbr/>  This value is typically used to determine the treatment of
20877 the green mosaic channels when demosaicing.<wbr/></p>
20878 <p>The green split value can be roughly interpreted as follows:</p>
20879 <ul>
20880 <li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
20881 <li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
20882 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
20883 <li>R &gt; 1.<wbr/>20 will require strong software correction to produce
20884 a usuable image (&gt;20% divergence).<wbr/></li>
20885 </ul>
20886             </td>
20887           </tr>
20888
20889           <tr class="entries_header">
20890             <th class="th_details" colspan="5">HAL Implementation Details</th>
20891           </tr>
20892           <tr class="entry_cont">
20893             <td class="entry_details" colspan="5">
20894               <p>The green split given may be a static value based on prior
20895 characterization of the camera sensor using the green split
20896 calculation method given here over a large,<wbr/> representative,<wbr/> sample
20897 set of images.<wbr/>  Other methods of calculation that produce equivalent
20898 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
20899             </td>
20900           </tr>
20901
20902           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20903            <!-- end of entry -->
20904         
20905                 
20906           <tr class="entry" id="dynamic_android.sensor.testPatternData">
20907             <td class="entry_name
20908              " rowspan="5">
20909               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
20910             </td>
20911             <td class="entry_type">
20912                 <span class="entry_type_name">int32</span>
20913                 <span class="entry_type_container">x</span>
20914
20915                 <span class="entry_type_array">
20916                   4
20917                 </span>
20918               <span class="entry_type_visibility"> [public]</span>
20919
20920
20921
20922
20923
20924
20925             </td> <!-- entry_type -->
20926
20927             <td class="entry_description">
20928               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
20929 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
20930             </td>
20931
20932             <td class="entry_units">
20933             </td>
20934
20935             <td class="entry_range">
20936             </td>
20937
20938             <td class="entry_tags">
20939             </td>
20940
20941           </tr>
20942           <tr class="entries_header">
20943             <th class="th_details" colspan="5">Details</th>
20944           </tr>
20945           <tr class="entry_cont">
20946             <td class="entry_details" colspan="5">
20947               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
20948 The camera device then uses the most significant X bits
20949 that correspond to how many bits are in its Bayer raw sensor
20950 output.<wbr/></p>
20951 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
20952 10 most significant bits from each color channel.<wbr/></p>
20953             </td>
20954           </tr>
20955
20956           <tr class="entries_header">
20957             <th class="th_details" colspan="5">HAL Implementation Details</th>
20958           </tr>
20959           <tr class="entry_cont">
20960             <td class="entry_details" colspan="5">
20961               
20962             </td>
20963           </tr>
20964
20965           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20966            <!-- end of entry -->
20967         
20968                 
20969           <tr class="entry" id="dynamic_android.sensor.testPatternMode">
20970             <td class="entry_name
20971              " rowspan="5">
20972               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
20973             </td>
20974             <td class="entry_type">
20975                 <span class="entry_type_name entry_type_name_enum">int32</span>
20976
20977               <span class="entry_type_visibility"> [public]</span>
20978
20979
20980
20981
20982
20983                 <ul class="entry_type_enum">
20984                   <li>
20985                     <span class="entry_type_enum_name">OFF</span>
20986                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
20987 device returns captures from the image sensor.<wbr/></p>
20988 <p>This is the default if the key is not set.<wbr/></p></span>
20989                   </li>
20990                   <li>
20991                     <span class="entry_type_enum_name">SOLID_COLOR</span>
20992                     <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
20993 respective color channel provided in
20994 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
20995 <p>For example:</p>
20996 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20997 </code></pre>
20998 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
20999 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
21000 </code></pre>
21001 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
21002 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
21003                   </li>
21004                   <li>
21005                     <span class="entry_type_enum_name">COLOR_BARS</span>
21006                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
21007 <p>The vertical bars (left-to-right) are as follows:</p>
21008 <ul>
21009 <li>100% white</li>
21010 <li>yellow</li>
21011 <li>cyan</li>
21012 <li>green</li>
21013 <li>magenta</li>
21014 <li>red</li>
21015 <li>blue</li>
21016 <li>black</li>
21017 </ul>
21018 <p>In general the image would look like the following:</p>
21019 <pre><code>W Y C G M R B K
21020 W Y C G M R B K
21021 W Y C G M R B K
21022 W Y C G M R B K
21023 W Y C G M R B K
21024 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21025 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21026 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
21027
21028 (B = Blue,<wbr/> K = Black)
21029 </code></pre>
21030 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
21031 When this is not possible,<wbr/> the bar size should be rounded
21032 down to the nearest integer and the pattern can repeat
21033 on the right side.<wbr/></p>
21034 <p>Each bar's height must always take up the full sensor
21035 pixel array height.<wbr/></p>
21036 <p>Each pixel in this test pattern must be set to either
21037 0% intensity or 100% intensity.<wbr/></p></span>
21038                   </li>
21039                   <li>
21040                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
21041                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
21042 each bar should start at its specified color at the top,<wbr/>
21043 and fade to gray at the bottom.<wbr/></p>
21044 <p>Furthermore each bar is further subdivided into a left and
21045 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
21046 and the right half should have a quantized gradient.<wbr/></p>
21047 <p>In particular,<wbr/> the right half's should consist of blocks of the
21048 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
21049 <p>The least significant bits in the quantized gradient should
21050 be copied from the most significant bits of the smooth gradient.<wbr/></p>
21051 <p>The height of each bar should always be a multiple of 128.<wbr/>
21052 When this is not the case,<wbr/> the pattern should repeat at the bottom
21053 of the image.<wbr/></p></span>
21054                   </li>
21055                   <li>
21056                     <span class="entry_type_enum_name">PN9</span>
21057                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
21058 generated from a PN9 512-bit sequence (typically implemented
21059 in hardware with a linear feedback shift register).<wbr/></p>
21060 <p>The generator should be reset at the beginning of each frame,<wbr/>
21061 and thus each subsequent raw frame with this test pattern should
21062 be exactly the same as the last.<wbr/></p></span>
21063                   </li>
21064                   <li>
21065                     <span class="entry_type_enum_name">CUSTOM1</span>
21066                     <span class="entry_type_enum_value">256</span>
21067                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
21068 available only on this camera device are at least this numeric
21069 value.<wbr/></p>
21070 <p>All of the custom test patterns will be static
21071 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
21072                   </li>
21073                 </ul>
21074
21075             </td> <!-- entry_type -->
21076
21077             <td class="entry_description">
21078               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
21079 doing a real exposure from the camera.<wbr/></p>
21080             </td>
21081
21082             <td class="entry_units">
21083             </td>
21084
21085             <td class="entry_range">
21086               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
21087             </td>
21088
21089             <td class="entry_tags">
21090             </td>
21091
21092           </tr>
21093           <tr class="entries_header">
21094             <th class="th_details" colspan="5">Details</th>
21095           </tr>
21096           <tr class="entry_cont">
21097             <td class="entry_details" colspan="5">
21098               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
21099 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
21100 work as normal.<wbr/></p>
21101 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
21102 occur (and that the test pattern remain unmodified,<wbr/> since the flash
21103 would not actually affect it).<wbr/></p>
21104 <p>Defaults to OFF.<wbr/></p>
21105             </td>
21106           </tr>
21107
21108           <tr class="entries_header">
21109             <th class="th_details" colspan="5">HAL Implementation Details</th>
21110           </tr>
21111           <tr class="entry_cont">
21112             <td class="entry_details" colspan="5">
21113               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
21114 <p>The HAL may choose to substitute test patterns from the sensor
21115 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
21116 indistinguishable to the ISP whether the data came from the
21117 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
21118             </td>
21119           </tr>
21120
21121           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21122            <!-- end of entry -->
21123         
21124                 
21125           <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
21126             <td class="entry_name
21127              " rowspan="5">
21128               android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
21129             </td>
21130             <td class="entry_type">
21131                 <span class="entry_type_name">int64</span>
21132
21133               <span class="entry_type_visibility"> [public]</span>
21134
21135
21136               <span class="entry_type_hwlevel">[limited] </span>
21137
21138
21139
21140
21141             </td> <!-- entry_type -->
21142
21143             <td class="entry_description">
21144               <p>Duration between the start of first row exposure
21145 and the start of last row exposure.<wbr/></p>
21146             </td>
21147
21148             <td class="entry_units">
21149               Nanoseconds
21150             </td>
21151
21152             <td class="entry_range">
21153               <p>&gt;= 0 and &lt;
21154 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
21155             </td>
21156
21157             <td class="entry_tags">
21158               <ul class="entry_tags">
21159                   <li><a href="#tag_V1">V1</a></li>
21160               </ul>
21161             </td>
21162
21163           </tr>
21164           <tr class="entries_header">
21165             <th class="th_details" colspan="5">Details</th>
21166           </tr>
21167           <tr class="entry_cont">
21168             <td class="entry_details" colspan="5">
21169               <p>This is the exposure time skew between the first and last
21170 row exposure start times.<wbr/> The first row and the last row are
21171 the first and last rows inside of the
21172 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21173 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
21174 to the frame readout time.<wbr/></p>
21175             </td>
21176           </tr>
21177
21178           <tr class="entries_header">
21179             <th class="th_details" colspan="5">HAL Implementation Details</th>
21180           </tr>
21181           <tr class="entry_cont">
21182             <td class="entry_details" colspan="5">
21183               <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
21184 exposure at the same time.<wbr/></p>
21185             </td>
21186           </tr>
21187
21188           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21189            <!-- end of entry -->
21190         
21191         
21192
21193       <!-- end of kind -->
21194       </tbody>
21195
21196   <!-- end of section -->
21197   <tr><td colspan="6" id="section_shading" class="section">shading</td></tr>
21198
21199
21200       <tr><td colspan="6" class="kind">controls</td></tr>
21201
21202       <thead class="entries_header">
21203         <tr>
21204           <th class="th_name">Property Name</th>
21205           <th class="th_type">Type</th>
21206           <th class="th_description">Description</th>
21207           <th class="th_units">Units</th>
21208           <th class="th_range">Range</th>
21209           <th class="th_tags">Tags</th>
21210         </tr>
21211       </thead>
21212
21213       <tbody>
21214
21215         
21216
21217         
21218
21219         
21220
21221         
21222
21223                 
21224           <tr class="entry" id="controls_android.shading.mode">
21225             <td class="entry_name
21226              " rowspan="3">
21227               android.<wbr/>shading.<wbr/>mode
21228             </td>
21229             <td class="entry_type">
21230                 <span class="entry_type_name entry_type_name_enum">byte</span>
21231
21232               <span class="entry_type_visibility"> [public]</span>
21233
21234
21235               <span class="entry_type_hwlevel">[full] </span>
21236
21237
21238
21239                 <ul class="entry_type_enum">
21240                   <li>
21241                     <span class="entry_type_enum_name">OFF</span>
21242                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
21243                   </li>
21244                   <li>
21245                     <span class="entry_type_enum_name">FAST</span>
21246                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
21247 frame rate relative to sensor raw output</p></span>
21248                   </li>
21249                   <li>
21250                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
21251                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
21252 cost of possibly reduced frame rate.<wbr/></p></span>
21253                   </li>
21254                 </ul>
21255
21256             </td> <!-- entry_type -->
21257
21258             <td class="entry_description">
21259               <p>Quality of lens shading correction applied
21260 to the image data.<wbr/></p>
21261             </td>
21262
21263             <td class="entry_units">
21264             </td>
21265
21266             <td class="entry_range">
21267               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
21268             </td>
21269
21270             <td class="entry_tags">
21271             </td>
21272
21273           </tr>
21274           <tr class="entries_header">
21275             <th class="th_details" colspan="5">Details</th>
21276           </tr>
21277           <tr class="entry_cont">
21278             <td class="entry_details" colspan="5">
21279               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
21280 camera device,<wbr/> and an identity lens shading map data will be provided
21281 if <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
21282 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
21283 the output <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a> for this case will be an identity
21284 map shown below:</p>
21285 <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/>
21286  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/>
21287  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/>
21288  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/>
21289  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/>
21290  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 ]
21291 </code></pre>
21292 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
21293 device.<wbr/> Applications can request lens shading map data by setting
21294 <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> to ON,<wbr/> and then the camera device will provide lens
21295 shading map data in <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a>; the returned shading map
21296 data will be the one applied by the camera device for this capture request.<wbr/></p>
21297 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
21298 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
21299 AWB are in AUTO modes(<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF and <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> <code>!=</code>
21300 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
21301 to be converged before using the returned shading map data.<wbr/></p>
21302             </td>
21303           </tr>
21304
21305
21306           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21307            <!-- end of entry -->
21308         
21309                 
21310           <tr class="entry" id="controls_android.shading.strength">
21311             <td class="entry_name
21312              " rowspan="1">
21313               android.<wbr/>shading.<wbr/>strength
21314             </td>
21315             <td class="entry_type">
21316                 <span class="entry_type_name">byte</span>
21317
21318               <span class="entry_type_visibility"> [system]</span>
21319
21320
21321
21322
21323
21324
21325             </td> <!-- entry_type -->
21326
21327             <td class="entry_description">
21328               <p>Control the amount of shading correction
21329 applied to the images</p>
21330             </td>
21331
21332             <td class="entry_units">
21333               unitless: 1-10; 10 is full shading
21334           compensation
21335             </td>
21336
21337             <td class="entry_range">
21338             </td>
21339
21340             <td class="entry_tags">
21341               <ul class="entry_tags">
21342                   <li><a href="#tag_FUTURE">FUTURE</a></li>
21343               </ul>
21344             </td>
21345
21346           </tr>
21347
21348
21349           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21350            <!-- end of entry -->
21351         
21352         
21353
21354       <!-- end of kind -->
21355       </tbody>
21356       <tr><td colspan="6" class="kind">dynamic</td></tr>
21357
21358       <thead class="entries_header">
21359         <tr>
21360           <th class="th_name">Property Name</th>
21361           <th class="th_type">Type</th>
21362           <th class="th_description">Description</th>
21363           <th class="th_units">Units</th>
21364           <th class="th_range">Range</th>
21365           <th class="th_tags">Tags</th>
21366         </tr>
21367       </thead>
21368
21369       <tbody>
21370
21371         
21372
21373         
21374
21375         
21376
21377         
21378
21379                 
21380           <tr class="entry" id="dynamic_android.shading.mode">
21381             <td class="entry_name
21382              " rowspan="3">
21383               android.<wbr/>shading.<wbr/>mode
21384             </td>
21385             <td class="entry_type">
21386                 <span class="entry_type_name entry_type_name_enum">byte</span>
21387
21388               <span class="entry_type_visibility"> [public]</span>
21389
21390
21391               <span class="entry_type_hwlevel">[full] </span>
21392
21393
21394
21395                 <ul class="entry_type_enum">
21396                   <li>
21397                     <span class="entry_type_enum_name">OFF</span>
21398                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
21399                   </li>
21400                   <li>
21401                     <span class="entry_type_enum_name">FAST</span>
21402                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
21403 frame rate relative to sensor raw output</p></span>
21404                   </li>
21405                   <li>
21406                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
21407                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
21408 cost of possibly reduced frame rate.<wbr/></p></span>
21409                   </li>
21410                 </ul>
21411
21412             </td> <!-- entry_type -->
21413
21414             <td class="entry_description">
21415               <p>Quality of lens shading correction applied
21416 to the image data.<wbr/></p>
21417             </td>
21418
21419             <td class="entry_units">
21420             </td>
21421
21422             <td class="entry_range">
21423               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
21424             </td>
21425
21426             <td class="entry_tags">
21427             </td>
21428
21429           </tr>
21430           <tr class="entries_header">
21431             <th class="th_details" colspan="5">Details</th>
21432           </tr>
21433           <tr class="entry_cont">
21434             <td class="entry_details" colspan="5">
21435               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
21436 camera device,<wbr/> and an identity lens shading map data will be provided
21437 if <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
21438 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
21439 the output <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a> for this case will be an identity
21440 map shown below:</p>
21441 <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/>
21442  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/>
21443  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/>
21444  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/>
21445  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/>
21446  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 ]
21447 </code></pre>
21448 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
21449 device.<wbr/> Applications can request lens shading map data by setting
21450 <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> to ON,<wbr/> and then the camera device will provide lens
21451 shading map data in <a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map</a>; the returned shading map
21452 data will be the one applied by the camera device for this capture request.<wbr/></p>
21453 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
21454 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
21455 AWB are in AUTO modes(<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF and <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> <code>!=</code>
21456 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
21457 to be converged before using the returned shading map data.<wbr/></p>
21458             </td>
21459           </tr>
21460
21461
21462           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21463            <!-- end of entry -->
21464         
21465         
21466
21467       <!-- end of kind -->
21468       </tbody>
21469       <tr><td colspan="6" class="kind">static</td></tr>
21470
21471       <thead class="entries_header">
21472         <tr>
21473           <th class="th_name">Property Name</th>
21474           <th class="th_type">Type</th>
21475           <th class="th_description">Description</th>
21476           <th class="th_units">Units</th>
21477           <th class="th_range">Range</th>
21478           <th class="th_tags">Tags</th>
21479         </tr>
21480       </thead>
21481
21482       <tbody>
21483
21484         
21485
21486         
21487
21488         
21489
21490         
21491
21492                 
21493           <tr class="entry" id="static_android.shading.availableModes">
21494             <td class="entry_name
21495              " rowspan="5">
21496               android.<wbr/>shading.<wbr/>available<wbr/>Modes
21497             </td>
21498             <td class="entry_type">
21499                 <span class="entry_type_name">byte</span>
21500                 <span class="entry_type_container">x</span>
21501
21502                 <span class="entry_type_array">
21503                   n
21504                 </span>
21505               <span class="entry_type_visibility"> [public as enumList]</span>
21506
21507
21508               <span class="entry_type_hwlevel">[legacy] </span>
21509
21510
21511                 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
21512
21513
21514             </td> <!-- entry_type -->
21515
21516             <td class="entry_description">
21517               <p>List of lens shading modes for <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a> that are supported by this camera device.<wbr/></p>
21518             </td>
21519
21520             <td class="entry_units">
21521             </td>
21522
21523             <td class="entry_range">
21524               <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
21525             </td>
21526
21527             <td class="entry_tags">
21528             </td>
21529
21530           </tr>
21531           <tr class="entries_header">
21532             <th class="th_details" colspan="5">Details</th>
21533           </tr>
21534           <tr class="entry_cont">
21535             <td class="entry_details" colspan="5">
21536               <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
21537 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
21538 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
21539 LEGACY devices will always only support FAST mode.<wbr/></p>
21540             </td>
21541           </tr>
21542
21543           <tr class="entries_header">
21544             <th class="th_details" colspan="5">HAL Implementation Details</th>
21545           </tr>
21546           <tr class="entry_cont">
21547             <td class="entry_details" colspan="5">
21548               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
21549 available on the camera device,<wbr/> but the underlying implementation can be the same for
21550 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
21551 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
21552             </td>
21553           </tr>
21554
21555           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21556            <!-- end of entry -->
21557         
21558         
21559
21560       <!-- end of kind -->
21561       </tbody>
21562
21563   <!-- end of section -->
21564   <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr>
21565
21566
21567       <tr><td colspan="6" class="kind">controls</td></tr>
21568
21569       <thead class="entries_header">
21570         <tr>
21571           <th class="th_name">Property Name</th>
21572           <th class="th_type">Type</th>
21573           <th class="th_description">Description</th>
21574           <th class="th_units">Units</th>
21575           <th class="th_range">Range</th>
21576           <th class="th_tags">Tags</th>
21577         </tr>
21578       </thead>
21579
21580       <tbody>
21581
21582         
21583
21584         
21585
21586         
21587
21588         
21589
21590                 
21591           <tr class="entry" id="controls_android.statistics.faceDetectMode">
21592             <td class="entry_name
21593              " rowspan="5">
21594               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
21595             </td>
21596             <td class="entry_type">
21597                 <span class="entry_type_name entry_type_name_enum">byte</span>
21598
21599               <span class="entry_type_visibility"> [public]</span>
21600
21601
21602               <span class="entry_type_hwlevel">[legacy] </span>
21603
21604
21605
21606                 <ul class="entry_type_enum">
21607                   <li>
21608                     <span class="entry_type_enum_name">OFF</span>
21609                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
21610 results.<wbr/></p></span>
21611                   </li>
21612                   <li>
21613                     <span class="entry_type_enum_name">SIMPLE</span>
21614                     <span class="entry_type_enum_optional">[optional]</span>
21615                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
21616                   </li>
21617                   <li>
21618                     <span class="entry_type_enum_name">FULL</span>
21619                     <span class="entry_type_enum_optional">[optional]</span>
21620                     <span class="entry_type_enum_notes"><p>Return all face
21621 metadata.<wbr/></p>
21622 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
21623                   </li>
21624                 </ul>
21625
21626             </td> <!-- entry_type -->
21627
21628             <td class="entry_description">
21629               <p>Operating mode for the face detector
21630 unit.<wbr/></p>
21631             </td>
21632
21633             <td class="entry_units">
21634             </td>
21635
21636             <td class="entry_range">
21637               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
21638             </td>
21639
21640             <td class="entry_tags">
21641               <ul class="entry_tags">
21642                   <li><a href="#tag_BC">BC</a></li>
21643               </ul>
21644             </td>
21645
21646           </tr>
21647           <tr class="entries_header">
21648             <th class="th_details" colspan="5">Details</th>
21649           </tr>
21650           <tr class="entry_cont">
21651             <td class="entry_details" colspan="5">
21652               <p>Whether face detection is enabled,<wbr/> and whether it
21653 should output just the basic fields or the full set of
21654 fields.<wbr/></p>
21655             </td>
21656           </tr>
21657
21658           <tr class="entries_header">
21659             <th class="th_details" colspan="5">HAL Implementation Details</th>
21660           </tr>
21661           <tr class="entry_cont">
21662             <td class="entry_details" colspan="5">
21663               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
21664 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
21665 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
21666 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
21667             </td>
21668           </tr>
21669
21670           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21671            <!-- end of entry -->
21672         
21673                 
21674           <tr class="entry" id="controls_android.statistics.histogramMode">
21675             <td class="entry_name
21676              " rowspan="1">
21677               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
21678             </td>
21679             <td class="entry_type">
21680                 <span class="entry_type_name entry_type_name_enum">byte</span>
21681
21682               <span class="entry_type_visibility"> [system as boolean]</span>
21683
21684
21685
21686
21687
21688                 <ul class="entry_type_enum">
21689                   <li>
21690                     <span class="entry_type_enum_name">OFF</span>
21691                   </li>
21692                   <li>
21693                     <span class="entry_type_enum_name">ON</span>
21694                   </li>
21695                 </ul>
21696
21697             </td> <!-- entry_type -->
21698
21699             <td class="entry_description">
21700               <p>Operating mode for histogram
21701 generation</p>
21702             </td>
21703
21704             <td class="entry_units">
21705             </td>
21706
21707             <td class="entry_range">
21708             </td>
21709
21710             <td class="entry_tags">
21711               <ul class="entry_tags">
21712                   <li><a href="#tag_FUTURE">FUTURE</a></li>
21713               </ul>
21714             </td>
21715
21716           </tr>
21717
21718
21719           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21720            <!-- end of entry -->
21721         
21722                 
21723           <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
21724             <td class="entry_name
21725              " rowspan="1">
21726               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
21727             </td>
21728             <td class="entry_type">
21729                 <span class="entry_type_name entry_type_name_enum">byte</span>
21730
21731               <span class="entry_type_visibility"> [system as boolean]</span>
21732
21733
21734
21735
21736
21737                 <ul class="entry_type_enum">
21738                   <li>
21739                     <span class="entry_type_enum_name">OFF</span>
21740                   </li>
21741                   <li>
21742                     <span class="entry_type_enum_name">ON</span>
21743                   </li>
21744                 </ul>
21745
21746             </td> <!-- entry_type -->
21747
21748             <td class="entry_description">
21749               <p>Operating mode for sharpness map
21750 generation</p>
21751             </td>
21752
21753             <td class="entry_units">
21754             </td>
21755
21756             <td class="entry_range">
21757             </td>
21758
21759             <td class="entry_tags">
21760               <ul class="entry_tags">
21761                   <li><a href="#tag_FUTURE">FUTURE</a></li>
21762               </ul>
21763             </td>
21764
21765           </tr>
21766
21767
21768           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21769            <!-- end of entry -->
21770         
21771                 
21772           <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
21773             <td class="entry_name
21774              " rowspan="3">
21775               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
21776             </td>
21777             <td class="entry_type">
21778                 <span class="entry_type_name entry_type_name_enum">byte</span>
21779
21780               <span class="entry_type_visibility"> [public as boolean]</span>
21781
21782
21783
21784
21785
21786                 <ul class="entry_type_enum">
21787                   <li>
21788                     <span class="entry_type_enum_name">OFF</span>
21789                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
21790                   </li>
21791                   <li>
21792                     <span class="entry_type_enum_name">ON</span>
21793                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
21794                   </li>
21795                 </ul>
21796
21797             </td> <!-- entry_type -->
21798
21799             <td class="entry_description">
21800               <p>Operating mode for hot pixel map generation.<wbr/></p>
21801             </td>
21802
21803             <td class="entry_units">
21804             </td>
21805
21806             <td class="entry_range">
21807               <p><a href="#static_android.statistics.info.availableHotPixelMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes</a></p>
21808             </td>
21809
21810             <td class="entry_tags">
21811               <ul class="entry_tags">
21812                   <li><a href="#tag_V1">V1</a></li>
21813                   <li><a href="#tag_RAW">RAW</a></li>
21814               </ul>
21815             </td>
21816
21817           </tr>
21818           <tr class="entries_header">
21819             <th class="th_details" colspan="5">Details</th>
21820           </tr>
21821           <tr class="entry_cont">
21822             <td class="entry_details" colspan="5">
21823               <p>If set to <code>true</code>,<wbr/> a hot pixel map is returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/>
21824 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
21825             </td>
21826           </tr>
21827
21828
21829           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21830            <!-- end of entry -->
21831         
21832                 
21833           <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
21834             <td class="entry_name
21835              " rowspan="3">
21836               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
21837             </td>
21838             <td class="entry_type">
21839                 <span class="entry_type_name entry_type_name_enum">byte</span>
21840
21841               <span class="entry_type_visibility"> [public]</span>
21842
21843
21844               <span class="entry_type_hwlevel">[full] </span>
21845
21846
21847
21848                 <ul class="entry_type_enum">
21849                   <li>
21850                     <span class="entry_type_enum_name">OFF</span>
21851                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
21852                   </li>
21853                   <li>
21854                     <span class="entry_type_enum_name">ON</span>
21855                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
21856                   </li>
21857                 </ul>
21858
21859             </td> <!-- entry_type -->
21860
21861             <td class="entry_description">
21862               <p>Whether the camera device will output the lens
21863 shading map in output result metadata.<wbr/></p>
21864             </td>
21865
21866             <td class="entry_units">
21867             </td>
21868
21869             <td class="entry_range">
21870               <p><a href="#static_android.statistics.info.availableLensShadingMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes</a></p>
21871             </td>
21872
21873             <td class="entry_tags">
21874               <ul class="entry_tags">
21875                   <li><a href="#tag_RAW">RAW</a></li>
21876               </ul>
21877             </td>
21878
21879           </tr>
21880           <tr class="entries_header">
21881             <th class="th_details" colspan="5">Details</th>
21882           </tr>
21883           <tr class="entry_cont">
21884             <td class="entry_details" colspan="5">
21885               <p>When set to ON,<wbr/>
21886 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
21887 the output result metadata.<wbr/></p>
21888 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
21889             </td>
21890           </tr>
21891
21892
21893           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21894            <!-- end of entry -->
21895         
21896         
21897
21898       <!-- end of kind -->
21899       </tbody>
21900       <tr><td colspan="6" class="kind">static</td></tr>
21901
21902       <thead class="entries_header">
21903         <tr>
21904           <th class="th_name">Property Name</th>
21905           <th class="th_type">Type</th>
21906           <th class="th_description">Description</th>
21907           <th class="th_units">Units</th>
21908           <th class="th_range">Range</th>
21909           <th class="th_tags">Tags</th>
21910         </tr>
21911       </thead>
21912
21913       <tbody>
21914
21915         
21916
21917         
21918
21919         
21920
21921         
21922                 
21923             
21924
21925                 
21926           <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
21927             <td class="entry_name
21928              " rowspan="3">
21929               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
21930             </td>
21931             <td class="entry_type">
21932                 <span class="entry_type_name">byte</span>
21933                 <span class="entry_type_container">x</span>
21934
21935                 <span class="entry_type_array">
21936                   n
21937                 </span>
21938               <span class="entry_type_visibility"> [public as enumList]</span>
21939
21940
21941               <span class="entry_type_hwlevel">[legacy] </span>
21942
21943
21944                 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
21945
21946
21947             </td> <!-- entry_type -->
21948
21949             <td class="entry_description">
21950               <p>List of face detection modes for <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> that are
21951 supported by this camera device.<wbr/></p>
21952             </td>
21953
21954             <td class="entry_units">
21955             </td>
21956
21957             <td class="entry_range">
21958               <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
21959             </td>
21960
21961             <td class="entry_tags">
21962             </td>
21963
21964           </tr>
21965           <tr class="entries_header">
21966             <th class="th_details" colspan="5">Details</th>
21967           </tr>
21968           <tr class="entry_cont">
21969             <td class="entry_details" colspan="5">
21970               <p>OFF is always supported.<wbr/></p>
21971             </td>
21972           </tr>
21973
21974
21975           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21976            <!-- end of entry -->
21977         
21978                 
21979           <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
21980             <td class="entry_name
21981              " rowspan="1">
21982               android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
21983             </td>
21984             <td class="entry_type">
21985                 <span class="entry_type_name">int32</span>
21986
21987               <span class="entry_type_visibility"> [system]</span>
21988
21989
21990
21991
21992
21993
21994             </td> <!-- entry_type -->
21995
21996             <td class="entry_description">
21997               <p>Number of histogram buckets
21998 supported</p>
21999             </td>
22000
22001             <td class="entry_units">
22002             </td>
22003
22004             <td class="entry_range">
22005               <p>&gt;= 64</p>
22006             </td>
22007
22008             <td class="entry_tags">
22009               <ul class="entry_tags">
22010                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22011               </ul>
22012             </td>
22013
22014           </tr>
22015
22016
22017           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22018            <!-- end of entry -->
22019         
22020                 
22021           <tr class="entry" id="static_android.statistics.info.maxFaceCount">
22022             <td class="entry_name
22023              " rowspan="1">
22024               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
22025             </td>
22026             <td class="entry_type">
22027                 <span class="entry_type_name">int32</span>
22028
22029               <span class="entry_type_visibility"> [public]</span>
22030
22031
22032               <span class="entry_type_hwlevel">[legacy] </span>
22033
22034
22035
22036
22037             </td> <!-- entry_type -->
22038
22039             <td class="entry_description">
22040               <p>The maximum number of simultaneously detectable
22041 faces.<wbr/></p>
22042             </td>
22043
22044             <td class="entry_units">
22045             </td>
22046
22047             <td class="entry_range">
22048               <p>0 for cameras without available face detection; otherwise:
22049 <code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
22050 <code>&gt;0</code> for LEGACY devices.<wbr/></p>
22051             </td>
22052
22053             <td class="entry_tags">
22054               <ul class="entry_tags">
22055                   <li><a href="#tag_BC">BC</a></li>
22056               </ul>
22057             </td>
22058
22059           </tr>
22060
22061
22062           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22063            <!-- end of entry -->
22064         
22065                 
22066           <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
22067             <td class="entry_name
22068              " rowspan="1">
22069               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
22070             </td>
22071             <td class="entry_type">
22072                 <span class="entry_type_name">int32</span>
22073
22074               <span class="entry_type_visibility"> [system]</span>
22075
22076
22077
22078
22079
22080
22081             </td> <!-- entry_type -->
22082
22083             <td class="entry_description">
22084               <p>Maximum value possible for a histogram
22085 bucket</p>
22086             </td>
22087
22088             <td class="entry_units">
22089             </td>
22090
22091             <td class="entry_range">
22092             </td>
22093
22094             <td class="entry_tags">
22095               <ul class="entry_tags">
22096                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22097               </ul>
22098             </td>
22099
22100           </tr>
22101
22102
22103           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22104            <!-- end of entry -->
22105         
22106                 
22107           <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
22108             <td class="entry_name
22109              " rowspan="1">
22110               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
22111             </td>
22112             <td class="entry_type">
22113                 <span class="entry_type_name">int32</span>
22114
22115               <span class="entry_type_visibility"> [system]</span>
22116
22117
22118
22119
22120
22121
22122             </td> <!-- entry_type -->
22123
22124             <td class="entry_description">
22125               <p>Maximum value possible for a sharpness map
22126 region.<wbr/></p>
22127             </td>
22128
22129             <td class="entry_units">
22130             </td>
22131
22132             <td class="entry_range">
22133             </td>
22134
22135             <td class="entry_tags">
22136               <ul class="entry_tags">
22137                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22138               </ul>
22139             </td>
22140
22141           </tr>
22142
22143
22144           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22145            <!-- end of entry -->
22146         
22147                 
22148           <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
22149             <td class="entry_name
22150              " rowspan="1">
22151               android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
22152             </td>
22153             <td class="entry_type">
22154                 <span class="entry_type_name">int32</span>
22155                 <span class="entry_type_container">x</span>
22156
22157                 <span class="entry_type_array">
22158                   2
22159                 </span>
22160               <span class="entry_type_visibility"> [system as size]</span>
22161
22162
22163
22164
22165                 <div class="entry_type_notes">width x height</div>
22166
22167
22168             </td> <!-- entry_type -->
22169
22170             <td class="entry_description">
22171               <p>Dimensions of the sharpness
22172 map</p>
22173             </td>
22174
22175             <td class="entry_units">
22176             </td>
22177
22178             <td class="entry_range">
22179               <p>Must be at least 32 x 32</p>
22180             </td>
22181
22182             <td class="entry_tags">
22183               <ul class="entry_tags">
22184                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22185               </ul>
22186             </td>
22187
22188           </tr>
22189
22190
22191           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22192            <!-- end of entry -->
22193         
22194                 
22195           <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
22196             <td class="entry_name
22197              " rowspan="3">
22198               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
22199             </td>
22200             <td class="entry_type">
22201                 <span class="entry_type_name">byte</span>
22202                 <span class="entry_type_container">x</span>
22203
22204                 <span class="entry_type_array">
22205                   n
22206                 </span>
22207               <span class="entry_type_visibility"> [public as boolean]</span>
22208
22209
22210
22211
22212                 <div class="entry_type_notes">list of enums</div>
22213
22214
22215             </td> <!-- entry_type -->
22216
22217             <td class="entry_description">
22218               <p>List of hot pixel map output modes for <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a> that are
22219 supported by this camera device.<wbr/></p>
22220             </td>
22221
22222             <td class="entry_units">
22223             </td>
22224
22225             <td class="entry_range">
22226               <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
22227             </td>
22228
22229             <td class="entry_tags">
22230               <ul class="entry_tags">
22231                   <li><a href="#tag_V1">V1</a></li>
22232                   <li><a href="#tag_RAW">RAW</a></li>
22233               </ul>
22234             </td>
22235
22236           </tr>
22237           <tr class="entries_header">
22238             <th class="th_details" colspan="5">Details</th>
22239           </tr>
22240           <tr class="entry_cont">
22241             <td class="entry_details" colspan="5">
22242               <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
22243 <code>false</code>.<wbr/></p>
22244 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
22245             </td>
22246           </tr>
22247
22248
22249           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22250            <!-- end of entry -->
22251         
22252                 
22253           <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
22254             <td class="entry_name
22255              " rowspan="3">
22256               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
22257             </td>
22258             <td class="entry_type">
22259                 <span class="entry_type_name">byte</span>
22260                 <span class="entry_type_container">x</span>
22261
22262                 <span class="entry_type_array">
22263                   n
22264                 </span>
22265               <span class="entry_type_visibility"> [public as enumList]</span>
22266
22267
22268
22269
22270                 <div class="entry_type_notes">list of enums</div>
22271
22272
22273             </td> <!-- entry_type -->
22274
22275             <td class="entry_description">
22276               <p>List of lens shading map output modes for <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a> that
22277 are supported by this camera device.<wbr/></p>
22278             </td>
22279
22280             <td class="entry_units">
22281             </td>
22282
22283             <td class="entry_range">
22284               <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
22285             </td>
22286
22287             <td class="entry_tags">
22288             </td>
22289
22290           </tr>
22291           <tr class="entries_header">
22292             <th class="th_details" colspan="5">Details</th>
22293           </tr>
22294           <tr class="entry_cont">
22295             <td class="entry_details" colspan="5">
22296               <p>If no lens shading map output is available for this camera device,<wbr/> this key will
22297 contain only OFF.<wbr/></p>
22298 <p>ON is always supported on devices with the RAW capability.<wbr/>
22299 LEGACY mode devices will always only support OFF.<wbr/></p>
22300             </td>
22301           </tr>
22302
22303
22304           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22305            <!-- end of entry -->
22306         
22307         
22308         
22309
22310         
22311
22312       <!-- end of kind -->
22313       </tbody>
22314       <tr><td colspan="6" class="kind">dynamic</td></tr>
22315
22316       <thead class="entries_header">
22317         <tr>
22318           <th class="th_name">Property Name</th>
22319           <th class="th_type">Type</th>
22320           <th class="th_description">Description</th>
22321           <th class="th_units">Units</th>
22322           <th class="th_range">Range</th>
22323           <th class="th_tags">Tags</th>
22324         </tr>
22325       </thead>
22326
22327       <tbody>
22328
22329         
22330
22331         
22332
22333         
22334
22335         
22336
22337                 
22338           <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
22339             <td class="entry_name
22340              " rowspan="5">
22341               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
22342             </td>
22343             <td class="entry_type">
22344                 <span class="entry_type_name entry_type_name_enum">byte</span>
22345
22346               <span class="entry_type_visibility"> [public]</span>
22347
22348
22349               <span class="entry_type_hwlevel">[legacy] </span>
22350
22351
22352
22353                 <ul class="entry_type_enum">
22354                   <li>
22355                     <span class="entry_type_enum_name">OFF</span>
22356                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
22357 results.<wbr/></p></span>
22358                   </li>
22359                   <li>
22360                     <span class="entry_type_enum_name">SIMPLE</span>
22361                     <span class="entry_type_enum_optional">[optional]</span>
22362                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
22363                   </li>
22364                   <li>
22365                     <span class="entry_type_enum_name">FULL</span>
22366                     <span class="entry_type_enum_optional">[optional]</span>
22367                     <span class="entry_type_enum_notes"><p>Return all face
22368 metadata.<wbr/></p>
22369 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
22370                   </li>
22371                 </ul>
22372
22373             </td> <!-- entry_type -->
22374
22375             <td class="entry_description">
22376               <p>Operating mode for the face detector
22377 unit.<wbr/></p>
22378             </td>
22379
22380             <td class="entry_units">
22381             </td>
22382
22383             <td class="entry_range">
22384               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
22385             </td>
22386
22387             <td class="entry_tags">
22388               <ul class="entry_tags">
22389                   <li><a href="#tag_BC">BC</a></li>
22390               </ul>
22391             </td>
22392
22393           </tr>
22394           <tr class="entries_header">
22395             <th class="th_details" colspan="5">Details</th>
22396           </tr>
22397           <tr class="entry_cont">
22398             <td class="entry_details" colspan="5">
22399               <p>Whether face detection is enabled,<wbr/> and whether it
22400 should output just the basic fields or the full set of
22401 fields.<wbr/></p>
22402             </td>
22403           </tr>
22404
22405           <tr class="entries_header">
22406             <th class="th_details" colspan="5">HAL Implementation Details</th>
22407           </tr>
22408           <tr class="entry_cont">
22409             <td class="entry_details" colspan="5">
22410               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
22411 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
22412 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
22413 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
22414             </td>
22415           </tr>
22416
22417           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22418            <!-- end of entry -->
22419         
22420                 
22421           <tr class="entry" id="dynamic_android.statistics.faceIds">
22422             <td class="entry_name
22423              " rowspan="3">
22424               android.<wbr/>statistics.<wbr/>face<wbr/>Ids
22425             </td>
22426             <td class="entry_type">
22427                 <span class="entry_type_name">int32</span>
22428                 <span class="entry_type_container">x</span>
22429
22430                 <span class="entry_type_array">
22431                   n
22432                 </span>
22433               <span class="entry_type_visibility"> [hidden]</span>
22434
22435
22436               <span class="entry_type_hwlevel">[legacy] </span>
22437
22438
22439
22440
22441             </td> <!-- entry_type -->
22442
22443             <td class="entry_description">
22444               <p>List of unique IDs for detected faces.<wbr/></p>
22445             </td>
22446
22447             <td class="entry_units">
22448             </td>
22449
22450             <td class="entry_range">
22451             </td>
22452
22453             <td class="entry_tags">
22454               <ul class="entry_tags">
22455                   <li><a href="#tag_BC">BC</a></li>
22456               </ul>
22457             </td>
22458
22459           </tr>
22460           <tr class="entries_header">
22461             <th class="th_details" colspan="5">Details</th>
22462           </tr>
22463           <tr class="entry_cont">
22464             <td class="entry_details" colspan="5">
22465               <p>Each detected face is given a unique ID that is valid for as long as the face is visible
22466 to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
22467 assigned a new ID.<wbr/></p>
22468 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
22469             </td>
22470           </tr>
22471
22472
22473           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22474            <!-- end of entry -->
22475         
22476                 
22477           <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
22478             <td class="entry_name
22479              " rowspan="3">
22480               android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
22481             </td>
22482             <td class="entry_type">
22483                 <span class="entry_type_name">int32</span>
22484                 <span class="entry_type_container">x</span>
22485
22486                 <span class="entry_type_array">
22487                   n x 6
22488                 </span>
22489               <span class="entry_type_visibility"> [hidden]</span>
22490
22491
22492               <span class="entry_type_hwlevel">[legacy] </span>
22493
22494
22495                 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
22496
22497
22498             </td> <!-- entry_type -->
22499
22500             <td class="entry_description">
22501               <p>List of landmarks for detected
22502 faces.<wbr/></p>
22503             </td>
22504
22505             <td class="entry_units">
22506             </td>
22507
22508             <td class="entry_range">
22509             </td>
22510
22511             <td class="entry_tags">
22512               <ul class="entry_tags">
22513                   <li><a href="#tag_BC">BC</a></li>
22514               </ul>
22515             </td>
22516
22517           </tr>
22518           <tr class="entries_header">
22519             <th class="th_details" colspan="5">Details</th>
22520           </tr>
22521           <tr class="entry_cont">
22522             <td class="entry_details" colspan="5">
22523               <p>The coordinate system is that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
22524 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
22525 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
22526             </td>
22527           </tr>
22528
22529
22530           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22531            <!-- end of entry -->
22532         
22533                 
22534           <tr class="entry" id="dynamic_android.statistics.faceRectangles">
22535             <td class="entry_name
22536              " rowspan="3">
22537               android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
22538             </td>
22539             <td class="entry_type">
22540                 <span class="entry_type_name">int32</span>
22541                 <span class="entry_type_container">x</span>
22542
22543                 <span class="entry_type_array">
22544                   n x 4
22545                 </span>
22546               <span class="entry_type_visibility"> [hidden as rectangle]</span>
22547
22548
22549               <span class="entry_type_hwlevel">[legacy] </span>
22550
22551
22552                 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
22553
22554
22555             </td> <!-- entry_type -->
22556
22557             <td class="entry_description">
22558               <p>List of the bounding rectangles for detected
22559 faces.<wbr/></p>
22560             </td>
22561
22562             <td class="entry_units">
22563             </td>
22564
22565             <td class="entry_range">
22566             </td>
22567
22568             <td class="entry_tags">
22569               <ul class="entry_tags">
22570                   <li><a href="#tag_BC">BC</a></li>
22571               </ul>
22572             </td>
22573
22574           </tr>
22575           <tr class="entries_header">
22576             <th class="th_details" colspan="5">Details</th>
22577           </tr>
22578           <tr class="entry_cont">
22579             <td class="entry_details" colspan="5">
22580               <p>The coordinate system is that of <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> with
22581 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
22582 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
22583             </td>
22584           </tr>
22585
22586
22587           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22588            <!-- end of entry -->
22589         
22590                 
22591           <tr class="entry" id="dynamic_android.statistics.faceScores">
22592             <td class="entry_name
22593              " rowspan="5">
22594               android.<wbr/>statistics.<wbr/>face<wbr/>Scores
22595             </td>
22596             <td class="entry_type">
22597                 <span class="entry_type_name">byte</span>
22598                 <span class="entry_type_container">x</span>
22599
22600                 <span class="entry_type_array">
22601                   n
22602                 </span>
22603               <span class="entry_type_visibility"> [hidden]</span>
22604
22605
22606               <span class="entry_type_hwlevel">[legacy] </span>
22607
22608
22609
22610
22611             </td> <!-- entry_type -->
22612
22613             <td class="entry_description">
22614               <p>List of the face confidence scores for
22615 detected faces</p>
22616             </td>
22617
22618             <td class="entry_units">
22619             </td>
22620
22621             <td class="entry_range">
22622               <p>1-100</p>
22623             </td>
22624
22625             <td class="entry_tags">
22626               <ul class="entry_tags">
22627                   <li><a href="#tag_BC">BC</a></li>
22628               </ul>
22629             </td>
22630
22631           </tr>
22632           <tr class="entries_header">
22633             <th class="th_details" colspan="5">Details</th>
22634           </tr>
22635           <tr class="entry_cont">
22636             <td class="entry_details" colspan="5">
22637               <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
22638             </td>
22639           </tr>
22640
22641           <tr class="entries_header">
22642             <th class="th_details" colspan="5">HAL Implementation Details</th>
22643           </tr>
22644           <tr class="entry_cont">
22645             <td class="entry_details" colspan="5">
22646               <p>The value should be meaningful (for example,<wbr/> setting 100 at
22647 all times is illegal).<wbr/></p>
22648             </td>
22649           </tr>
22650
22651           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22652            <!-- end of entry -->
22653         
22654                 
22655           <tr class="entry" id="dynamic_android.statistics.faces">
22656             <td class="entry_name
22657              " rowspan="3">
22658               android.<wbr/>statistics.<wbr/>faces
22659             </td>
22660             <td class="entry_type">
22661                 <span class="entry_type_name">int32</span>
22662                 <span class="entry_type_container">x</span>
22663
22664                 <span class="entry_type_array">
22665                   n
22666                 </span>
22667               <span class="entry_type_visibility"> [public as face]</span>
22668
22669               <span class="entry_type_synthetic">[synthetic] </span>
22670
22671               <span class="entry_type_hwlevel">[legacy] </span>
22672
22673
22674
22675
22676             </td> <!-- entry_type -->
22677
22678             <td class="entry_description">
22679               <p>List of the faces detected through camera face detection
22680 in this capture.<wbr/></p>
22681             </td>
22682
22683             <td class="entry_units">
22684             </td>
22685
22686             <td class="entry_range">
22687             </td>
22688
22689             <td class="entry_tags">
22690             </td>
22691
22692           </tr>
22693           <tr class="entries_header">
22694             <th class="th_details" colspan="5">Details</th>
22695           </tr>
22696           <tr class="entry_cont">
22697             <td class="entry_details" colspan="5">
22698               <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>
22699             </td>
22700           </tr>
22701
22702
22703           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22704            <!-- end of entry -->
22705         
22706                 
22707           <tr class="entry" id="dynamic_android.statistics.histogram">
22708             <td class="entry_name
22709              " rowspan="3">
22710               android.<wbr/>statistics.<wbr/>histogram
22711             </td>
22712             <td class="entry_type">
22713                 <span class="entry_type_name">int32</span>
22714                 <span class="entry_type_container">x</span>
22715
22716                 <span class="entry_type_array">
22717                   n x 3
22718                 </span>
22719               <span class="entry_type_visibility"> [system]</span>
22720
22721
22722
22723
22724                 <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>
22725
22726
22727             </td> <!-- entry_type -->
22728
22729             <td class="entry_description">
22730               <p>A 3-channel histogram based on the raw
22731 sensor data</p>
22732             </td>
22733
22734             <td class="entry_units">
22735             </td>
22736
22737             <td class="entry_range">
22738             </td>
22739
22740             <td class="entry_tags">
22741               <ul class="entry_tags">
22742                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22743               </ul>
22744             </td>
22745
22746           </tr>
22747           <tr class="entries_header">
22748             <th class="th_details" colspan="5">Details</th>
22749           </tr>
22750           <tr class="entry_cont">
22751             <td class="entry_details" colspan="5">
22752               <p>The k'th bucket (0-based) covers the input range
22753 (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/>
22754 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
22755 supported,<wbr/> all channels should have the same data</p>
22756             </td>
22757           </tr>
22758
22759
22760           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22761            <!-- end of entry -->
22762         
22763                 
22764           <tr class="entry" id="dynamic_android.statistics.histogramMode">
22765             <td class="entry_name
22766              " rowspan="1">
22767               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
22768             </td>
22769             <td class="entry_type">
22770                 <span class="entry_type_name entry_type_name_enum">byte</span>
22771
22772               <span class="entry_type_visibility"> [system as boolean]</span>
22773
22774
22775
22776
22777
22778                 <ul class="entry_type_enum">
22779                   <li>
22780                     <span class="entry_type_enum_name">OFF</span>
22781                   </li>
22782                   <li>
22783                     <span class="entry_type_enum_name">ON</span>
22784                   </li>
22785                 </ul>
22786
22787             </td> <!-- entry_type -->
22788
22789             <td class="entry_description">
22790               <p>Operating mode for histogram
22791 generation</p>
22792             </td>
22793
22794             <td class="entry_units">
22795             </td>
22796
22797             <td class="entry_range">
22798             </td>
22799
22800             <td class="entry_tags">
22801               <ul class="entry_tags">
22802                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22803               </ul>
22804             </td>
22805
22806           </tr>
22807
22808
22809           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22810            <!-- end of entry -->
22811         
22812                 
22813           <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
22814             <td class="entry_name
22815              " rowspan="3">
22816               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
22817             </td>
22818             <td class="entry_type">
22819                 <span class="entry_type_name">int32</span>
22820                 <span class="entry_type_container">x</span>
22821
22822                 <span class="entry_type_array">
22823                   n x m x 3
22824                 </span>
22825               <span class="entry_type_visibility"> [system]</span>
22826
22827
22828
22829
22830                 <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>
22831
22832
22833             </td> <!-- entry_type -->
22834
22835             <td class="entry_description">
22836               <p>A 3-channel sharpness map,<wbr/> based on the raw
22837 sensor data</p>
22838             </td>
22839
22840             <td class="entry_units">
22841             </td>
22842
22843             <td class="entry_range">
22844             </td>
22845
22846             <td class="entry_tags">
22847               <ul class="entry_tags">
22848                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22849               </ul>
22850             </td>
22851
22852           </tr>
22853           <tr class="entries_header">
22854             <th class="th_details" colspan="5">Details</th>
22855           </tr>
22856           <tr class="entry_cont">
22857             <td class="entry_details" colspan="5">
22858               <p>If only a monochrome sharpness map is supported,<wbr/>
22859 all channels should have the same data</p>
22860             </td>
22861           </tr>
22862
22863
22864           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22865            <!-- end of entry -->
22866         
22867                 
22868           <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
22869             <td class="entry_name
22870              " rowspan="1">
22871               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
22872             </td>
22873             <td class="entry_type">
22874                 <span class="entry_type_name entry_type_name_enum">byte</span>
22875
22876               <span class="entry_type_visibility"> [system as boolean]</span>
22877
22878
22879
22880
22881
22882                 <ul class="entry_type_enum">
22883                   <li>
22884                     <span class="entry_type_enum_name">OFF</span>
22885                   </li>
22886                   <li>
22887                     <span class="entry_type_enum_name">ON</span>
22888                   </li>
22889                 </ul>
22890
22891             </td> <!-- entry_type -->
22892
22893             <td class="entry_description">
22894               <p>Operating mode for sharpness map
22895 generation</p>
22896             </td>
22897
22898             <td class="entry_units">
22899             </td>
22900
22901             <td class="entry_range">
22902             </td>
22903
22904             <td class="entry_tags">
22905               <ul class="entry_tags">
22906                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22907               </ul>
22908             </td>
22909
22910           </tr>
22911
22912
22913           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22914            <!-- end of entry -->
22915         
22916                 
22917           <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
22918             <td class="entry_name
22919              " rowspan="3">
22920               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
22921             </td>
22922             <td class="entry_type">
22923                 <span class="entry_type_name">byte</span>
22924
22925               <span class="entry_type_visibility"> [public as lensShadingMap]</span>
22926
22927
22928               <span class="entry_type_hwlevel">[full] </span>
22929
22930
22931
22932
22933             </td> <!-- entry_type -->
22934
22935             <td class="entry_description">
22936               <p>The shading map is a low-resolution floating-point map
22937 that lists the coefficients used to correct for vignetting,<wbr/> for each
22938 Bayer color channel.<wbr/></p>
22939             </td>
22940
22941             <td class="entry_units">
22942             </td>
22943
22944             <td class="entry_range">
22945               <p>Each gain factor is &gt;= 1</p>
22946             </td>
22947
22948             <td class="entry_tags">
22949             </td>
22950
22951           </tr>
22952           <tr class="entries_header">
22953             <th class="th_details" colspan="5">Details</th>
22954           </tr>
22955           <tr class="entry_cont">
22956             <td class="entry_details" colspan="5">
22957               <p>The least shaded section of the image should have a gain factor
22958 of 1; all other sections should have gains above 1.<wbr/></p>
22959 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
22960 must take into account the colorCorrection settings.<wbr/></p>
22961 <p>The shading map is for the entire active pixel array,<wbr/> and is not
22962 affected by the crop region specified in the request.<wbr/> Each shading map
22963 entry is the value of the shading compensation map over a specific
22964 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
22965 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
22966 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
22967 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
22968 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
22969 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
22970 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
22971 The shading map is stored in a fully interleaved format.<wbr/></p>
22972 <p>The shading map should have on the order of 30-40 rows and columns,<wbr/>
22973 and must be smaller than 64x64.<wbr/></p>
22974 <p>As an example,<wbr/> given a very small map defined as:</p>
22975 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
22976 values =
22977 [ 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/>
22978     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/>
22979   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/>
22980     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/>
22981   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/>
22982     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 ]
22983 </code></pre>
22984 <p>The low-resolution scaling map images for each channel are
22985 (displayed using nearest-neighbor interpolation):</p>
22986 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
22987 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
22988 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
22989 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
22990 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
22991 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
22992 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
22993             </td>
22994           </tr>
22995
22996
22997           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22998            <!-- end of entry -->
22999         
23000                 
23001           <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
23002             <td class="entry_name
23003              " rowspan="5">
23004               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
23005             </td>
23006             <td class="entry_type">
23007                 <span class="entry_type_name">float</span>
23008                 <span class="entry_type_container">x</span>
23009
23010                 <span class="entry_type_array">
23011                   4 x n x m
23012                 </span>
23013               <span class="entry_type_visibility"> [hidden]</span>
23014
23015
23016               <span class="entry_type_hwlevel">[full] </span>
23017
23018
23019                 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
23020
23021
23022             </td> <!-- entry_type -->
23023
23024             <td class="entry_description">
23025               <p>The shading map is a low-resolution floating-point map
23026 that lists the coefficients used to correct for vignetting,<wbr/> for each
23027 Bayer color channel of RAW image data.<wbr/></p>
23028             </td>
23029
23030             <td class="entry_units">
23031             </td>
23032
23033             <td class="entry_range">
23034               <p>Each gain factor is &gt;= 1</p>
23035             </td>
23036
23037             <td class="entry_tags">
23038             </td>
23039
23040           </tr>
23041           <tr class="entries_header">
23042             <th class="th_details" colspan="5">Details</th>
23043           </tr>
23044           <tr class="entry_cont">
23045             <td class="entry_details" colspan="5">
23046               <p>The least shaded section of the image should have a gain factor
23047 of 1; all other sections should have gains above 1.<wbr/></p>
23048 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
23049 must take into account the colorCorrection settings.<wbr/></p>
23050 <p>The shading map is for the entire active pixel array,<wbr/> and is not
23051 affected by the crop region specified in the request.<wbr/> Each shading map
23052 entry is the value of the shading compensation map over a specific
23053 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
23054 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
23055 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
23056 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
23057 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
23058 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
23059 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
23060 The shading map is stored in a fully interleaved format,<wbr/> and its size
23061 is 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>
23062 <p>The shading map should have on the order of 30-40 rows and columns,<wbr/>
23063 and must be smaller than 64x64.<wbr/></p>
23064 <p>As an example,<wbr/> given a very small map defined as:</p>
23065 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
23066 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
23067 [ 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/>
23068     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/>
23069   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/>
23070     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/>
23071   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/>
23072     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 ]
23073 </code></pre>
23074 <p>The low-resolution scaling map images for each channel are
23075 (displayed using nearest-neighbor interpolation):</p>
23076 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
23077 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
23078 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
23079 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
23080 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
23081 image of a gray wall (using bicubic interpolation for visual quality)
23082 as captured by the sensor gives:</p>
23083 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
23084 <p>Note that the RAW image data might be subject to lens shading
23085 correction not reported on this map.<wbr/> Query
23086 <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> to see if RAW image data has subject
23087 to lens shading correction.<wbr/> If <a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a>
23088 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
23089 correction.<wbr/> In the case full lens shading correction is applied to RAW
23090 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
23091 In other words,<wbr/> the map reported in this key is the remaining lens shading
23092 that needs to be applied on the RAW image to get images without lens shading
23093 artifacts.<wbr/> See <a href="#static_android.request.maxNumOutputRaw">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw</a> for a list of RAW image
23094 formats.<wbr/></p>
23095             </td>
23096           </tr>
23097
23098           <tr class="entries_header">
23099             <th class="th_details" colspan="5">HAL Implementation Details</th>
23100           </tr>
23101           <tr class="entry_cont">
23102             <td class="entry_details" colspan="5">
23103               <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
23104 When AE and AWB are in AUTO modes
23105 (<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
23106 may have all the information it need to generate most accurate lens shading map.<wbr/> When
23107 AE or AWB are in manual mode
23108 (<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
23109 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
23110 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
23111 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
23112             </td>
23113           </tr>
23114
23115           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23116            <!-- end of entry -->
23117         
23118                 
23119           <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
23120             <td class="entry_name
23121                 entry_name_deprecated
23122              " rowspan="3">
23123               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
23124             </td>
23125             <td class="entry_type">
23126                 <span class="entry_type_name">float</span>
23127                 <span class="entry_type_container">x</span>
23128
23129                 <span class="entry_type_array">
23130                   4
23131                 </span>
23132               <span class="entry_type_visibility"> [hidden]</span>
23133
23134
23135
23136               <span class="entry_type_deprecated">[deprecated] </span>
23137
23138                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
23139
23140
23141             </td> <!-- entry_type -->
23142
23143             <td class="entry_description">
23144               <p>The best-fit color channel gains calculated
23145 by the camera device's statistics units for the current output frame.<wbr/></p>
23146             </td>
23147
23148             <td class="entry_units">
23149             </td>
23150
23151             <td class="entry_range">
23152               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
23153             </td>
23154
23155             <td class="entry_tags">
23156             </td>
23157
23158           </tr>
23159           <tr class="entries_header">
23160             <th class="th_details" colspan="5">Details</th>
23161           </tr>
23162           <tr class="entry_cont">
23163             <td class="entry_details" colspan="5">
23164               <p>This may be different than the gains used for this frame,<wbr/>
23165 since statistics processing on data from a new frame
23166 typically completes after the transform has already been
23167 applied to that frame.<wbr/></p>
23168 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
23169 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
23170 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
23171 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
23172             </td>
23173           </tr>
23174
23175
23176           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23177            <!-- end of entry -->
23178         
23179                 
23180           <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
23181             <td class="entry_name
23182                 entry_name_deprecated
23183              " rowspan="3">
23184               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
23185             </td>
23186             <td class="entry_type">
23187                 <span class="entry_type_name">rational</span>
23188                 <span class="entry_type_container">x</span>
23189
23190                 <span class="entry_type_array">
23191                   3 x 3
23192                 </span>
23193               <span class="entry_type_visibility"> [hidden]</span>
23194
23195
23196
23197               <span class="entry_type_deprecated">[deprecated] </span>
23198
23199                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
23200
23201
23202             </td> <!-- entry_type -->
23203
23204             <td class="entry_description">
23205               <p>The best-fit color transform matrix estimate
23206 calculated by the camera device's statistics units for the current
23207 output frame.<wbr/></p>
23208             </td>
23209
23210             <td class="entry_units">
23211             </td>
23212
23213             <td class="entry_range">
23214               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
23215             </td>
23216
23217             <td class="entry_tags">
23218             </td>
23219
23220           </tr>
23221           <tr class="entries_header">
23222             <th class="th_details" colspan="5">Details</th>
23223           </tr>
23224           <tr class="entry_cont">
23225             <td class="entry_details" colspan="5">
23226               <p>The camera device will provide the estimate from its
23227 statistics unit on the white balance transforms to use
23228 for the next frame.<wbr/> These are the values the camera device believes
23229 are the best fit for the current output frame.<wbr/> This may
23230 be different than the transform used for this frame,<wbr/> since
23231 statistics processing on data from a new frame typically
23232 completes after the transform has already been applied to
23233 that frame.<wbr/></p>
23234 <p>These estimates must be provided for all frames,<wbr/> even if
23235 capture settings and color transforms are set by the application.<wbr/></p>
23236 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
23237 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
23238             </td>
23239           </tr>
23240
23241
23242           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23243            <!-- end of entry -->
23244         
23245                 
23246           <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
23247             <td class="entry_name
23248              " rowspan="3">
23249               android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
23250             </td>
23251             <td class="entry_type">
23252                 <span class="entry_type_name entry_type_name_enum">byte</span>
23253
23254               <span class="entry_type_visibility"> [public]</span>
23255
23256
23257               <span class="entry_type_hwlevel">[full] </span>
23258
23259
23260
23261                 <ul class="entry_type_enum">
23262                   <li>
23263                     <span class="entry_type_enum_name">NONE</span>
23264                     <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
23265 in the current scene.<wbr/></p></span>
23266                   </li>
23267                   <li>
23268                     <span class="entry_type_enum_name">50HZ</span>
23269                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
23270 in the current scene.<wbr/></p></span>
23271                   </li>
23272                   <li>
23273                     <span class="entry_type_enum_name">60HZ</span>
23274                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
23275 in the current scene.<wbr/></p></span>
23276                   </li>
23277                 </ul>
23278
23279             </td> <!-- entry_type -->
23280
23281             <td class="entry_description">
23282               <p>The camera device estimated scene illumination lighting
23283 frequency.<wbr/></p>
23284             </td>
23285
23286             <td class="entry_units">
23287             </td>
23288
23289             <td class="entry_range">
23290             </td>
23291
23292             <td class="entry_tags">
23293             </td>
23294
23295           </tr>
23296           <tr class="entries_header">
23297             <th class="th_details" colspan="5">Details</th>
23298           </tr>
23299           <tr class="entry_cont">
23300             <td class="entry_details" colspan="5">
23301               <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
23302 that depends on the local utility power standards.<wbr/> This flicker must be
23303 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
23304 The camera device uses this entry to tell the application what the scene
23305 illuminant frequency is.<wbr/></p>
23306 <p>When manual exposure control is enabled
23307 (<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> ==
23308 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
23309 antibanding,<wbr/> and the application can ensure it selects
23310 exposure times that do not cause banding issues by looking
23311 into this metadata field.<wbr/> See
23312 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
23313 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
23314             </td>
23315           </tr>
23316
23317
23318           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23319            <!-- end of entry -->
23320         
23321                 
23322           <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
23323             <td class="entry_name
23324              " rowspan="3">
23325               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
23326             </td>
23327             <td class="entry_type">
23328                 <span class="entry_type_name entry_type_name_enum">byte</span>
23329
23330               <span class="entry_type_visibility"> [public as boolean]</span>
23331
23332
23333
23334
23335
23336                 <ul class="entry_type_enum">
23337                   <li>
23338                     <span class="entry_type_enum_name">OFF</span>
23339                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
23340                   </li>
23341                   <li>
23342                     <span class="entry_type_enum_name">ON</span>
23343                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
23344                   </li>
23345                 </ul>
23346
23347             </td> <!-- entry_type -->
23348
23349             <td class="entry_description">
23350               <p>Operating mode for hot pixel map generation.<wbr/></p>
23351             </td>
23352
23353             <td class="entry_units">
23354             </td>
23355
23356             <td class="entry_range">
23357               <p><a href="#static_android.statistics.info.availableHotPixelMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes</a></p>
23358             </td>
23359
23360             <td class="entry_tags">
23361               <ul class="entry_tags">
23362                   <li><a href="#tag_V1">V1</a></li>
23363                   <li><a href="#tag_RAW">RAW</a></li>
23364               </ul>
23365             </td>
23366
23367           </tr>
23368           <tr class="entries_header">
23369             <th class="th_details" colspan="5">Details</th>
23370           </tr>
23371           <tr class="entry_cont">
23372             <td class="entry_details" colspan="5">
23373               <p>If set to <code>true</code>,<wbr/> a hot pixel map is returned in <a href="#dynamic_android.statistics.hotPixelMap">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map</a>.<wbr/>
23374 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
23375             </td>
23376           </tr>
23377
23378
23379           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23380            <!-- end of entry -->
23381         
23382                 
23383           <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
23384             <td class="entry_name
23385              " rowspan="5">
23386               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
23387             </td>
23388             <td class="entry_type">
23389                 <span class="entry_type_name">int32</span>
23390                 <span class="entry_type_container">x</span>
23391
23392                 <span class="entry_type_array">
23393                   2 x n
23394                 </span>
23395               <span class="entry_type_visibility"> [public as point]</span>
23396
23397
23398
23399
23400                 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
23401
23402
23403             </td> <!-- entry_type -->
23404
23405             <td class="entry_description">
23406               <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
23407             </td>
23408
23409             <td class="entry_units">
23410             </td>
23411
23412             <td class="entry_range">
23413               <p>n &lt;= number of pixels on the sensor.<wbr/>
23414 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
23415 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23416             </td>
23417
23418             <td class="entry_tags">
23419               <ul class="entry_tags">
23420                   <li><a href="#tag_V1">V1</a></li>
23421                   <li><a href="#tag_RAW">RAW</a></li>
23422               </ul>
23423             </td>
23424
23425           </tr>
23426           <tr class="entries_header">
23427             <th class="th_details" colspan="5">Details</th>
23428           </tr>
23429           <tr class="entry_cont">
23430             <td class="entry_details" colspan="5">
23431               <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
23432 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
23433 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
23434 height dimensions are given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/>
23435 This may include hot pixels that lie outside of the active array
23436 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23437             </td>
23438           </tr>
23439
23440           <tr class="entries_header">
23441             <th class="th_details" colspan="5">HAL Implementation Details</th>
23442           </tr>
23443           <tr class="entry_cont">
23444             <td class="entry_details" colspan="5">
23445               <p>A hotpixel map contains the coordinates of pixels on the camera
23446 sensor that do report valid values (usually due to defects in
23447 the camera sensor).<wbr/> This includes pixels that are stuck at certain
23448 values,<wbr/> or have a response that does not accuractly encode the
23449 incoming light from the scene.<wbr/></p>
23450 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
23451 pixels than actual pixels on the camera sensor.<wbr/></p>
23452             </td>
23453           </tr>
23454
23455           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23456            <!-- end of entry -->
23457         
23458                 
23459           <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
23460             <td class="entry_name
23461              " rowspan="3">
23462               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
23463             </td>
23464             <td class="entry_type">
23465                 <span class="entry_type_name entry_type_name_enum">byte</span>
23466
23467               <span class="entry_type_visibility"> [public]</span>
23468
23469
23470               <span class="entry_type_hwlevel">[full] </span>
23471
23472
23473
23474                 <ul class="entry_type_enum">
23475                   <li>
23476                     <span class="entry_type_enum_name">OFF</span>
23477                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
23478                   </li>
23479                   <li>
23480                     <span class="entry_type_enum_name">ON</span>
23481                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
23482                   </li>
23483                 </ul>
23484
23485             </td> <!-- entry_type -->
23486
23487             <td class="entry_description">
23488               <p>Whether the camera device will output the lens
23489 shading map in output result metadata.<wbr/></p>
23490             </td>
23491
23492             <td class="entry_units">
23493             </td>
23494
23495             <td class="entry_range">
23496               <p><a href="#static_android.statistics.info.availableLensShadingMapModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes</a></p>
23497             </td>
23498
23499             <td class="entry_tags">
23500               <ul class="entry_tags">
23501                   <li><a href="#tag_RAW">RAW</a></li>
23502               </ul>
23503             </td>
23504
23505           </tr>
23506           <tr class="entries_header">
23507             <th class="th_details" colspan="5">Details</th>
23508           </tr>
23509           <tr class="entry_cont">
23510             <td class="entry_details" colspan="5">
23511               <p>When set to ON,<wbr/>
23512 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
23513 the output result metadata.<wbr/></p>
23514 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
23515             </td>
23516           </tr>
23517
23518
23519           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23520            <!-- end of entry -->
23521         
23522         
23523
23524       <!-- end of kind -->
23525       </tbody>
23526
23527   <!-- end of section -->
23528   <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr>
23529
23530
23531       <tr><td colspan="6" class="kind">controls</td></tr>
23532
23533       <thead class="entries_header">
23534         <tr>
23535           <th class="th_name">Property Name</th>
23536           <th class="th_type">Type</th>
23537           <th class="th_description">Description</th>
23538           <th class="th_units">Units</th>
23539           <th class="th_range">Range</th>
23540           <th class="th_tags">Tags</th>
23541         </tr>
23542       </thead>
23543
23544       <tbody>
23545
23546         
23547
23548         
23549
23550         
23551
23552         
23553
23554                 
23555           <tr class="entry" id="controls_android.tonemap.curveBlue">
23556             <td class="entry_name
23557              " rowspan="3">
23558               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
23559             </td>
23560             <td class="entry_type">
23561                 <span class="entry_type_name">float</span>
23562                 <span class="entry_type_container">x</span>
23563
23564                 <span class="entry_type_array">
23565                   n x 2
23566                 </span>
23567               <span class="entry_type_visibility"> [hidden]</span>
23568
23569
23570               <span class="entry_type_hwlevel">[full] </span>
23571
23572
23573                 <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>
23574
23575
23576             </td> <!-- entry_type -->
23577
23578             <td class="entry_description">
23579               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
23580 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23581 CONTRAST_<wbr/>CURVE.<wbr/></p>
23582             </td>
23583
23584             <td class="entry_units">
23585             </td>
23586
23587             <td class="entry_range">
23588             </td>
23589
23590             <td class="entry_tags">
23591             </td>
23592
23593           </tr>
23594           <tr class="entries_header">
23595             <th class="th_details" colspan="5">Details</th>
23596           </tr>
23597           <tr class="entry_cont">
23598             <td class="entry_details" colspan="5">
23599               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
23600             </td>
23601           </tr>
23602
23603
23604           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23605            <!-- end of entry -->
23606         
23607                 
23608           <tr class="entry" id="controls_android.tonemap.curveGreen">
23609             <td class="entry_name
23610              " rowspan="3">
23611               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
23612             </td>
23613             <td class="entry_type">
23614                 <span class="entry_type_name">float</span>
23615                 <span class="entry_type_container">x</span>
23616
23617                 <span class="entry_type_array">
23618                   n x 2
23619                 </span>
23620               <span class="entry_type_visibility"> [hidden]</span>
23621
23622
23623               <span class="entry_type_hwlevel">[full] </span>
23624
23625
23626                 <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>
23627
23628
23629             </td> <!-- entry_type -->
23630
23631             <td class="entry_description">
23632               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
23633 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23634 CONTRAST_<wbr/>CURVE.<wbr/></p>
23635             </td>
23636
23637             <td class="entry_units">
23638             </td>
23639
23640             <td class="entry_range">
23641             </td>
23642
23643             <td class="entry_tags">
23644             </td>
23645
23646           </tr>
23647           <tr class="entries_header">
23648             <th class="th_details" colspan="5">Details</th>
23649           </tr>
23650           <tr class="entry_cont">
23651             <td class="entry_details" colspan="5">
23652               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
23653             </td>
23654           </tr>
23655
23656
23657           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23658            <!-- end of entry -->
23659         
23660                 
23661           <tr class="entry" id="controls_android.tonemap.curveRed">
23662             <td class="entry_name
23663              " rowspan="5">
23664               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
23665             </td>
23666             <td class="entry_type">
23667                 <span class="entry_type_name">float</span>
23668                 <span class="entry_type_container">x</span>
23669
23670                 <span class="entry_type_array">
23671                   n x 2
23672                 </span>
23673               <span class="entry_type_visibility"> [hidden]</span>
23674
23675
23676               <span class="entry_type_hwlevel">[full] </span>
23677
23678
23679                 <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>
23680
23681
23682             </td> <!-- entry_type -->
23683
23684             <td class="entry_description">
23685               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
23686 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23687 CONTRAST_<wbr/>CURVE.<wbr/></p>
23688             </td>
23689
23690             <td class="entry_units">
23691             </td>
23692
23693             <td class="entry_range">
23694               <p>0-1 on both input and output coordinates,<wbr/> normalized
23695 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
23696             </td>
23697
23698             <td class="entry_tags">
23699             </td>
23700
23701           </tr>
23702           <tr class="entries_header">
23703             <th class="th_details" colspan="5">Details</th>
23704           </tr>
23705           <tr class="entry_cont">
23706             <td class="entry_details" colspan="5">
23707               <p>Each channel's curve is defined by an array of control points:</p>
23708 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
23709   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
23710 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
23711 <p>These are sorted in order of increasing <code>Pin</code>; it is
23712 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
23713 define a complete mapping.<wbr/> For input values between control points,<wbr/>
23714 the camera device must linearly interpolate between the control
23715 points.<wbr/></p>
23716 <p>Each curve can have an independent number of points,<wbr/> and the number
23717 of points can be less than max (that is,<wbr/> the request doesn't have to
23718 always provide a curve with number of points equivalent to
23719 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
23720 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
23721 only specify the red channel and the precision is limited to 4
23722 digits,<wbr/> for conciseness.<wbr/></p>
23723 <p>Linear mapping:</p>
23724 <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 ]
23725 </code></pre>
23726 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
23727 <p>Invert mapping:</p>
23728 <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 ]
23729 </code></pre>
23730 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
23731 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
23732 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
23733   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/>
23734   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/>
23735   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/>
23736   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 ]
23737 </code></pre>
23738 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
23739 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
23740 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
23741   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/>
23742   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/>
23743   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/>
23744   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 ]
23745 </code></pre>
23746 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
23747             </td>
23748           </tr>
23749
23750           <tr class="entries_header">
23751             <th class="th_details" colspan="5">HAL Implementation Details</th>
23752           </tr>
23753           <tr class="entry_cont">
23754             <td class="entry_details" colspan="5">
23755               <p>For good quality of mapping,<wbr/> at least 128 control points are
23756 preferred.<wbr/></p>
23757 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
23758 control points used as are available.<wbr/></p>
23759             </td>
23760           </tr>
23761
23762           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23763            <!-- end of entry -->
23764         
23765                 
23766           <tr class="entry" id="controls_android.tonemap.curve">
23767             <td class="entry_name
23768              " rowspan="5">
23769               android.<wbr/>tonemap.<wbr/>curve
23770             </td>
23771             <td class="entry_type">
23772                 <span class="entry_type_name">float</span>
23773
23774               <span class="entry_type_visibility"> [public as tonemapCurve]</span>
23775
23776               <span class="entry_type_synthetic">[synthetic] </span>
23777
23778               <span class="entry_type_hwlevel">[full] </span>
23779
23780
23781
23782
23783             </td> <!-- entry_type -->
23784
23785             <td class="entry_description">
23786               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
23787 is CONTRAST_<wbr/>CURVE.<wbr/></p>
23788             </td>
23789
23790             <td class="entry_units">
23791             </td>
23792
23793             <td class="entry_range">
23794             </td>
23795
23796             <td class="entry_tags">
23797             </td>
23798
23799           </tr>
23800           <tr class="entries_header">
23801             <th class="th_details" colspan="5">Details</th>
23802           </tr>
23803           <tr class="entry_cont">
23804             <td class="entry_details" colspan="5">
23805               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
23806 channels respectively.<wbr/> The following example uses the red channel as an
23807 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
23808 Each channel's curve is defined by an array of control points:</p>
23809 <pre><code>curveRed =
23810   [ 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) ]
23811 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
23812 <p>These are sorted in order of increasing <code>Pin</code>; it is always
23813 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
23814 define a complete mapping.<wbr/> For input values between control points,<wbr/>
23815 the camera device must linearly interpolate between the control
23816 points.<wbr/></p>
23817 <p>Each curve can have an independent number of points,<wbr/> and the number
23818 of points can be less than max (that is,<wbr/> the request doesn't have to
23819 always provide a curve with number of points equivalent to
23820 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
23821 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
23822 only specify the red channel and the precision is limited to 4
23823 digits,<wbr/> for conciseness.<wbr/></p>
23824 <p>Linear mapping:</p>
23825 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
23826 </code></pre>
23827 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
23828 <p>Invert mapping:</p>
23829 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
23830 </code></pre>
23831 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
23832 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
23833 <pre><code>curveRed = [
23834   (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/>
23835   (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/>
23836   (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/>
23837   (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) ]
23838 </code></pre>
23839 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
23840 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
23841 <pre><code>curveRed = [
23842   (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/>
23843   (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/>
23844   (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/>
23845   (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) ]
23846 </code></pre>
23847 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
23848             </td>
23849           </tr>
23850
23851           <tr class="entries_header">
23852             <th class="th_details" colspan="5">HAL Implementation Details</th>
23853           </tr>
23854           <tr class="entry_cont">
23855             <td class="entry_details" colspan="5">
23856               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
23857 curveBlue entries.<wbr/></p>
23858             </td>
23859           </tr>
23860
23861           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23862            <!-- end of entry -->
23863         
23864                 
23865           <tr class="entry" id="controls_android.tonemap.mode">
23866             <td class="entry_name
23867              " rowspan="3">
23868               android.<wbr/>tonemap.<wbr/>mode
23869             </td>
23870             <td class="entry_type">
23871                 <span class="entry_type_name entry_type_name_enum">byte</span>
23872
23873               <span class="entry_type_visibility"> [public]</span>
23874
23875
23876               <span class="entry_type_hwlevel">[full] </span>
23877
23878
23879
23880                 <ul class="entry_type_enum">
23881                   <li>
23882                     <span class="entry_type_enum_name">CONTRAST_CURVE</span>
23883                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
23884 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
23885 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
23886 for applying the tonemapping curve specified by
23887 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
23888 <p>Must not slow down frame rate relative to raw
23889 sensor output.<wbr/></p></span>
23890                   </li>
23891                   <li>
23892                     <span class="entry_type_enum_name">FAST</span>
23893                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
23894 reducing frame rate compared to raw sensor output.<wbr/></p></span>
23895                   </li>
23896                   <li>
23897                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
23898                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
23899 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
23900                   </li>
23901                   <li>
23902                     <span class="entry_type_enum_name">GAMMA_VALUE</span>
23903                     <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform
23904 tonemapping.<wbr/></p>
23905 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
23906 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
23907 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
23908                   </li>
23909                   <li>
23910                     <span class="entry_type_enum_name">PRESET_CURVE</span>
23911                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
23912 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
23913 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
23914 for applying the tonemapping curve specified by
23915 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
23916 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
23917                   </li>
23918                 </ul>
23919
23920             </td> <!-- entry_type -->
23921
23922             <td class="entry_description">
23923               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
23924             </td>
23925
23926             <td class="entry_units">
23927             </td>
23928
23929             <td class="entry_range">
23930               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
23931             </td>
23932
23933             <td class="entry_tags">
23934             </td>
23935
23936           </tr>
23937           <tr class="entries_header">
23938             <th class="th_details" colspan="5">Details</th>
23939           </tr>
23940           <tr class="entry_cont">
23941             <td class="entry_details" colspan="5">
23942               <p>When switching to an application-defined contrast curve by setting
23943 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
23944 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
23945 mapping from input high-bit-depth pixel value to the output
23946 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
23947 and output may change depending on the camera pipeline,<wbr/> the values
23948 are specified by normalized floating-point numbers.<wbr/></p>
23949 <p>More-complex color mapping operations such as 3D color look-up
23950 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
23951 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23952 CONTRAST_<wbr/>CURVE.<wbr/></p>
23953 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
23954 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
23955 These values are always available,<wbr/> and as close as possible to the
23956 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
23957 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
23958 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
23959 roughly the same.<wbr/></p>
23960             </td>
23961           </tr>
23962
23963
23964           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23965            <!-- end of entry -->
23966         
23967                 
23968           <tr class="entry" id="controls_android.tonemap.gamma">
23969             <td class="entry_name
23970              " rowspan="3">
23971               android.<wbr/>tonemap.<wbr/>gamma
23972             </td>
23973             <td class="entry_type">
23974                 <span class="entry_type_name">float</span>
23975
23976               <span class="entry_type_visibility"> [public]</span>
23977
23978
23979
23980
23981
23982
23983             </td> <!-- entry_type -->
23984
23985             <td class="entry_description">
23986               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23987 GAMMA_<wbr/>VALUE</p>
23988             </td>
23989
23990             <td class="entry_units">
23991             </td>
23992
23993             <td class="entry_range">
23994             </td>
23995
23996             <td class="entry_tags">
23997             </td>
23998
23999           </tr>
24000           <tr class="entries_header">
24001             <th class="th_details" colspan="5">Details</th>
24002           </tr>
24003           <tr class="entry_cont">
24004             <td class="entry_details" colspan="5">
24005               <p>The tonemap curve will be defined the following formula:
24006 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
24007 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
24008 pow is the power function and gamma is the gamma value specified by this
24009 key.<wbr/></p>
24010 <p>The same curve will be applied to all color channels.<wbr/> The camera device
24011 may clip the input gamma value to its supported range.<wbr/> The actual applied
24012 value will be returned in capture result.<wbr/></p>
24013 <p>The valid range of gamma value varies on different devices,<wbr/> but values
24014 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
24015             </td>
24016           </tr>
24017
24018
24019           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24020            <!-- end of entry -->
24021         
24022                 
24023           <tr class="entry" id="controls_android.tonemap.presetCurve">
24024             <td class="entry_name
24025              " rowspan="3">
24026               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
24027             </td>
24028             <td class="entry_type">
24029                 <span class="entry_type_name entry_type_name_enum">byte</span>
24030
24031               <span class="entry_type_visibility"> [public]</span>
24032
24033
24034
24035
24036
24037                 <ul class="entry_type_enum">
24038                   <li>
24039                     <span class="entry_type_enum_name">SRGB</span>
24040                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
24041                   </li>
24042                   <li>
24043                     <span class="entry_type_enum_name">REC709</span>
24044                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
24045                   </li>
24046                 </ul>
24047
24048             </td> <!-- entry_type -->
24049
24050             <td class="entry_description">
24051               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24052 PRESET_<wbr/>CURVE</p>
24053             </td>
24054
24055             <td class="entry_units">
24056             </td>
24057
24058             <td class="entry_range">
24059             </td>
24060
24061             <td class="entry_tags">
24062             </td>
24063
24064           </tr>
24065           <tr class="entries_header">
24066             <th class="th_details" colspan="5">Details</th>
24067           </tr>
24068           <tr class="entry_cont">
24069             <td class="entry_details" colspan="5">
24070               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
24071 <p>sRGB (approximated by 16 control points):</p>
24072 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24073 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
24074 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
24075 <p>Note that above figures show a 16 control points approximation of preset
24076 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
24077             </td>
24078           </tr>
24079
24080
24081           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24082            <!-- end of entry -->
24083         
24084         
24085
24086       <!-- end of kind -->
24087       </tbody>
24088       <tr><td colspan="6" class="kind">static</td></tr>
24089
24090       <thead class="entries_header">
24091         <tr>
24092           <th class="th_name">Property Name</th>
24093           <th class="th_type">Type</th>
24094           <th class="th_description">Description</th>
24095           <th class="th_units">Units</th>
24096           <th class="th_range">Range</th>
24097           <th class="th_tags">Tags</th>
24098         </tr>
24099       </thead>
24100
24101       <tbody>
24102
24103         
24104
24105         
24106
24107         
24108
24109         
24110
24111                 
24112           <tr class="entry" id="static_android.tonemap.maxCurvePoints">
24113             <td class="entry_name
24114              " rowspan="5">
24115               android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
24116             </td>
24117             <td class="entry_type">
24118                 <span class="entry_type_name">int32</span>
24119
24120               <span class="entry_type_visibility"> [public]</span>
24121
24122
24123               <span class="entry_type_hwlevel">[full] </span>
24124
24125
24126
24127
24128             </td> <!-- entry_type -->
24129
24130             <td class="entry_description">
24131               <p>Maximum number of supported points in the
24132 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
24133             </td>
24134
24135             <td class="entry_units">
24136             </td>
24137
24138             <td class="entry_range">
24139             </td>
24140
24141             <td class="entry_tags">
24142             </td>
24143
24144           </tr>
24145           <tr class="entries_header">
24146             <th class="th_details" colspan="5">Details</th>
24147           </tr>
24148           <tr class="entry_cont">
24149             <td class="entry_details" colspan="5">
24150               <p>If the actual number of points provided by the application (in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>*) is
24151 less than this maximum,<wbr/> the camera device will resample the curve to its internal
24152 representation,<wbr/> using linear interpolation.<wbr/></p>
24153 <p>The output curves in the result metadata may have a different number
24154 of points than the input curves,<wbr/> and will represent the actual
24155 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
24156             </td>
24157           </tr>
24158
24159           <tr class="entries_header">
24160             <th class="th_details" colspan="5">HAL Implementation Details</th>
24161           </tr>
24162           <tr class="entry_cont">
24163             <td class="entry_details" colspan="5">
24164               <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
24165             </td>
24166           </tr>
24167
24168           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24169            <!-- end of entry -->
24170         
24171                 
24172           <tr class="entry" id="static_android.tonemap.availableToneMapModes">
24173             <td class="entry_name
24174              " rowspan="5">
24175               android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
24176             </td>
24177             <td class="entry_type">
24178                 <span class="entry_type_name">byte</span>
24179                 <span class="entry_type_container">x</span>
24180
24181                 <span class="entry_type_array">
24182                   n
24183                 </span>
24184               <span class="entry_type_visibility"> [public as enumList]</span>
24185
24186
24187               <span class="entry_type_hwlevel">[full] </span>
24188
24189
24190                 <div class="entry_type_notes">list of enums</div>
24191
24192
24193             </td> <!-- entry_type -->
24194
24195             <td class="entry_description">
24196               <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
24197 device.<wbr/></p>
24198             </td>
24199
24200             <td class="entry_units">
24201             </td>
24202
24203             <td class="entry_range">
24204               <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
24205             </td>
24206
24207             <td class="entry_tags">
24208             </td>
24209
24210           </tr>
24211           <tr class="entries_header">
24212             <th class="th_details" colspan="5">Details</th>
24213           </tr>
24214           <tr class="entry_cont">
24215             <td class="entry_details" colspan="5">
24216               <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
24217 at least one of below mode combinations:</p>
24218 <ul>
24219 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
24220 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
24221 </ul>
24222 <p>This includes all FULL level devices.<wbr/></p>
24223             </td>
24224           </tr>
24225
24226           <tr class="entries_header">
24227             <th class="th_details" colspan="5">HAL Implementation Details</th>
24228           </tr>
24229           <tr class="entry_cont">
24230             <td class="entry_details" colspan="5">
24231               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
24232 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
24233 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
24234 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
24235             </td>
24236           </tr>
24237
24238           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24239            <!-- end of entry -->
24240         
24241         
24242
24243       <!-- end of kind -->
24244       </tbody>
24245       <tr><td colspan="6" class="kind">dynamic</td></tr>
24246
24247       <thead class="entries_header">
24248         <tr>
24249           <th class="th_name">Property Name</th>
24250           <th class="th_type">Type</th>
24251           <th class="th_description">Description</th>
24252           <th class="th_units">Units</th>
24253           <th class="th_range">Range</th>
24254           <th class="th_tags">Tags</th>
24255         </tr>
24256       </thead>
24257
24258       <tbody>
24259
24260         
24261
24262         
24263
24264         
24265
24266         
24267
24268                 
24269           <tr class="entry" id="dynamic_android.tonemap.curveBlue">
24270             <td class="entry_name
24271              " rowspan="3">
24272               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
24273             </td>
24274             <td class="entry_type">
24275                 <span class="entry_type_name">float</span>
24276                 <span class="entry_type_container">x</span>
24277
24278                 <span class="entry_type_array">
24279                   n x 2
24280                 </span>
24281               <span class="entry_type_visibility"> [hidden]</span>
24282
24283
24284               <span class="entry_type_hwlevel">[full] </span>
24285
24286
24287                 <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>
24288
24289
24290             </td> <!-- entry_type -->
24291
24292             <td class="entry_description">
24293               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
24294 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24295 CONTRAST_<wbr/>CURVE.<wbr/></p>
24296             </td>
24297
24298             <td class="entry_units">
24299             </td>
24300
24301             <td class="entry_range">
24302             </td>
24303
24304             <td class="entry_tags">
24305             </td>
24306
24307           </tr>
24308           <tr class="entries_header">
24309             <th class="th_details" colspan="5">Details</th>
24310           </tr>
24311           <tr class="entry_cont">
24312             <td class="entry_details" colspan="5">
24313               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
24314             </td>
24315           </tr>
24316
24317
24318           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24319            <!-- end of entry -->
24320         
24321                 
24322           <tr class="entry" id="dynamic_android.tonemap.curveGreen">
24323             <td class="entry_name
24324              " rowspan="3">
24325               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
24326             </td>
24327             <td class="entry_type">
24328                 <span class="entry_type_name">float</span>
24329                 <span class="entry_type_container">x</span>
24330
24331                 <span class="entry_type_array">
24332                   n x 2
24333                 </span>
24334               <span class="entry_type_visibility"> [hidden]</span>
24335
24336
24337               <span class="entry_type_hwlevel">[full] </span>
24338
24339
24340                 <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>
24341
24342
24343             </td> <!-- entry_type -->
24344
24345             <td class="entry_description">
24346               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
24347 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24348 CONTRAST_<wbr/>CURVE.<wbr/></p>
24349             </td>
24350
24351             <td class="entry_units">
24352             </td>
24353
24354             <td class="entry_range">
24355             </td>
24356
24357             <td class="entry_tags">
24358             </td>
24359
24360           </tr>
24361           <tr class="entries_header">
24362             <th class="th_details" colspan="5">Details</th>
24363           </tr>
24364           <tr class="entry_cont">
24365             <td class="entry_details" colspan="5">
24366               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
24367             </td>
24368           </tr>
24369
24370
24371           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24372            <!-- end of entry -->
24373         
24374                 
24375           <tr class="entry" id="dynamic_android.tonemap.curveRed">
24376             <td class="entry_name
24377              " rowspan="5">
24378               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
24379             </td>
24380             <td class="entry_type">
24381                 <span class="entry_type_name">float</span>
24382                 <span class="entry_type_container">x</span>
24383
24384                 <span class="entry_type_array">
24385                   n x 2
24386                 </span>
24387               <span class="entry_type_visibility"> [hidden]</span>
24388
24389
24390               <span class="entry_type_hwlevel">[full] </span>
24391
24392
24393                 <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>
24394
24395
24396             </td> <!-- entry_type -->
24397
24398             <td class="entry_description">
24399               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
24400 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24401 CONTRAST_<wbr/>CURVE.<wbr/></p>
24402             </td>
24403
24404             <td class="entry_units">
24405             </td>
24406
24407             <td class="entry_range">
24408               <p>0-1 on both input and output coordinates,<wbr/> normalized
24409 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
24410             </td>
24411
24412             <td class="entry_tags">
24413             </td>
24414
24415           </tr>
24416           <tr class="entries_header">
24417             <th class="th_details" colspan="5">Details</th>
24418           </tr>
24419           <tr class="entry_cont">
24420             <td class="entry_details" colspan="5">
24421               <p>Each channel's curve is defined by an array of control points:</p>
24422 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
24423   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
24424 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
24425 <p>These are sorted in order of increasing <code>Pin</code>; it is
24426 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
24427 define a complete mapping.<wbr/> For input values between control points,<wbr/>
24428 the camera device must linearly interpolate between the control
24429 points.<wbr/></p>
24430 <p>Each curve can have an independent number of points,<wbr/> and the number
24431 of points can be less than max (that is,<wbr/> the request doesn't have to
24432 always provide a curve with number of points equivalent to
24433 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
24434 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
24435 only specify the red channel and the precision is limited to 4
24436 digits,<wbr/> for conciseness.<wbr/></p>
24437 <p>Linear mapping:</p>
24438 <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 ]
24439 </code></pre>
24440 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
24441 <p>Invert mapping:</p>
24442 <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 ]
24443 </code></pre>
24444 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
24445 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
24446 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
24447   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/>
24448   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/>
24449   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/>
24450   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 ]
24451 </code></pre>
24452 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
24453 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
24454 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
24455   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/>
24456   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/>
24457   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/>
24458   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 ]
24459 </code></pre>
24460 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24461             </td>
24462           </tr>
24463
24464           <tr class="entries_header">
24465             <th class="th_details" colspan="5">HAL Implementation Details</th>
24466           </tr>
24467           <tr class="entry_cont">
24468             <td class="entry_details" colspan="5">
24469               <p>For good quality of mapping,<wbr/> at least 128 control points are
24470 preferred.<wbr/></p>
24471 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
24472 control points used as are available.<wbr/></p>
24473             </td>
24474           </tr>
24475
24476           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24477            <!-- end of entry -->
24478         
24479                 
24480           <tr class="entry" id="dynamic_android.tonemap.curve">
24481             <td class="entry_name
24482              " rowspan="5">
24483               android.<wbr/>tonemap.<wbr/>curve
24484             </td>
24485             <td class="entry_type">
24486                 <span class="entry_type_name">float</span>
24487
24488               <span class="entry_type_visibility"> [public as tonemapCurve]</span>
24489
24490               <span class="entry_type_synthetic">[synthetic] </span>
24491
24492               <span class="entry_type_hwlevel">[full] </span>
24493
24494
24495
24496
24497             </td> <!-- entry_type -->
24498
24499             <td class="entry_description">
24500               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
24501 is CONTRAST_<wbr/>CURVE.<wbr/></p>
24502             </td>
24503
24504             <td class="entry_units">
24505             </td>
24506
24507             <td class="entry_range">
24508             </td>
24509
24510             <td class="entry_tags">
24511             </td>
24512
24513           </tr>
24514           <tr class="entries_header">
24515             <th class="th_details" colspan="5">Details</th>
24516           </tr>
24517           <tr class="entry_cont">
24518             <td class="entry_details" colspan="5">
24519               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
24520 channels respectively.<wbr/> The following example uses the red channel as an
24521 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
24522 Each channel's curve is defined by an array of control points:</p>
24523 <pre><code>curveRed =
24524   [ 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) ]
24525 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
24526 <p>These are sorted in order of increasing <code>Pin</code>; it is always
24527 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
24528 define a complete mapping.<wbr/> For input values between control points,<wbr/>
24529 the camera device must linearly interpolate between the control
24530 points.<wbr/></p>
24531 <p>Each curve can have an independent number of points,<wbr/> and the number
24532 of points can be less than max (that is,<wbr/> the request doesn't have to
24533 always provide a curve with number of points equivalent to
24534 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
24535 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
24536 only specify the red channel and the precision is limited to 4
24537 digits,<wbr/> for conciseness.<wbr/></p>
24538 <p>Linear mapping:</p>
24539 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
24540 </code></pre>
24541 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
24542 <p>Invert mapping:</p>
24543 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
24544 </code></pre>
24545 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
24546 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
24547 <pre><code>curveRed = [
24548   (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/>
24549   (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/>
24550   (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/>
24551   (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) ]
24552 </code></pre>
24553 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
24554 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
24555 <pre><code>curveRed = [
24556   (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/>
24557   (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/>
24558   (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/>
24559   (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) ]
24560 </code></pre>
24561 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24562             </td>
24563           </tr>
24564
24565           <tr class="entries_header">
24566             <th class="th_details" colspan="5">HAL Implementation Details</th>
24567           </tr>
24568           <tr class="entry_cont">
24569             <td class="entry_details" colspan="5">
24570               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
24571 curveBlue entries.<wbr/></p>
24572             </td>
24573           </tr>
24574
24575           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24576            <!-- end of entry -->
24577         
24578                 
24579           <tr class="entry" id="dynamic_android.tonemap.mode">
24580             <td class="entry_name
24581              " rowspan="3">
24582               android.<wbr/>tonemap.<wbr/>mode
24583             </td>
24584             <td class="entry_type">
24585                 <span class="entry_type_name entry_type_name_enum">byte</span>
24586
24587               <span class="entry_type_visibility"> [public]</span>
24588
24589
24590               <span class="entry_type_hwlevel">[full] </span>
24591
24592
24593
24594                 <ul class="entry_type_enum">
24595                   <li>
24596                     <span class="entry_type_enum_name">CONTRAST_CURVE</span>
24597                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
24598 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
24599 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
24600 for applying the tonemapping curve specified by
24601 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
24602 <p>Must not slow down frame rate relative to raw
24603 sensor output.<wbr/></p></span>
24604                   </li>
24605                   <li>
24606                     <span class="entry_type_enum_name">FAST</span>
24607                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
24608 reducing frame rate compared to raw sensor output.<wbr/></p></span>
24609                   </li>
24610                   <li>
24611                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
24612                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
24613 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
24614                   </li>
24615                   <li>
24616                     <span class="entry_type_enum_name">GAMMA_VALUE</span>
24617                     <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform
24618 tonemapping.<wbr/></p>
24619 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
24620 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
24621 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
24622                   </li>
24623                   <li>
24624                     <span class="entry_type_enum_name">PRESET_CURVE</span>
24625                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
24626 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
24627 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
24628 for applying the tonemapping curve specified by
24629 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
24630 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
24631                   </li>
24632                 </ul>
24633
24634             </td> <!-- entry_type -->
24635
24636             <td class="entry_description">
24637               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
24638             </td>
24639
24640             <td class="entry_units">
24641             </td>
24642
24643             <td class="entry_range">
24644               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
24645             </td>
24646
24647             <td class="entry_tags">
24648             </td>
24649
24650           </tr>
24651           <tr class="entries_header">
24652             <th class="th_details" colspan="5">Details</th>
24653           </tr>
24654           <tr class="entry_cont">
24655             <td class="entry_details" colspan="5">
24656               <p>When switching to an application-defined contrast curve by setting
24657 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
24658 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
24659 mapping from input high-bit-depth pixel value to the output
24660 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
24661 and output may change depending on the camera pipeline,<wbr/> the values
24662 are specified by normalized floating-point numbers.<wbr/></p>
24663 <p>More-complex color mapping operations such as 3D color look-up
24664 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
24665 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24666 CONTRAST_<wbr/>CURVE.<wbr/></p>
24667 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
24668 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
24669 These values are always available,<wbr/> and as close as possible to the
24670 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
24671 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
24672 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
24673 roughly the same.<wbr/></p>
24674             </td>
24675           </tr>
24676
24677
24678           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24679            <!-- end of entry -->
24680         
24681                 
24682           <tr class="entry" id="dynamic_android.tonemap.gamma">
24683             <td class="entry_name
24684              " rowspan="3">
24685               android.<wbr/>tonemap.<wbr/>gamma
24686             </td>
24687             <td class="entry_type">
24688                 <span class="entry_type_name">float</span>
24689
24690               <span class="entry_type_visibility"> [public]</span>
24691
24692
24693
24694
24695
24696
24697             </td> <!-- entry_type -->
24698
24699             <td class="entry_description">
24700               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24701 GAMMA_<wbr/>VALUE</p>
24702             </td>
24703
24704             <td class="entry_units">
24705             </td>
24706
24707             <td class="entry_range">
24708             </td>
24709
24710             <td class="entry_tags">
24711             </td>
24712
24713           </tr>
24714           <tr class="entries_header">
24715             <th class="th_details" colspan="5">Details</th>
24716           </tr>
24717           <tr class="entry_cont">
24718             <td class="entry_details" colspan="5">
24719               <p>The tonemap curve will be defined the following formula:
24720 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
24721 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
24722 pow is the power function and gamma is the gamma value specified by this
24723 key.<wbr/></p>
24724 <p>The same curve will be applied to all color channels.<wbr/> The camera device
24725 may clip the input gamma value to its supported range.<wbr/> The actual applied
24726 value will be returned in capture result.<wbr/></p>
24727 <p>The valid range of gamma value varies on different devices,<wbr/> but values
24728 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
24729             </td>
24730           </tr>
24731
24732
24733           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24734            <!-- end of entry -->
24735         
24736                 
24737           <tr class="entry" id="dynamic_android.tonemap.presetCurve">
24738             <td class="entry_name
24739              " rowspan="3">
24740               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
24741             </td>
24742             <td class="entry_type">
24743                 <span class="entry_type_name entry_type_name_enum">byte</span>
24744
24745               <span class="entry_type_visibility"> [public]</span>
24746
24747
24748
24749
24750
24751                 <ul class="entry_type_enum">
24752                   <li>
24753                     <span class="entry_type_enum_name">SRGB</span>
24754                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
24755                   </li>
24756                   <li>
24757                     <span class="entry_type_enum_name">REC709</span>
24758                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
24759                   </li>
24760                 </ul>
24761
24762             </td> <!-- entry_type -->
24763
24764             <td class="entry_description">
24765               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24766 PRESET_<wbr/>CURVE</p>
24767             </td>
24768
24769             <td class="entry_units">
24770             </td>
24771
24772             <td class="entry_range">
24773             </td>
24774
24775             <td class="entry_tags">
24776             </td>
24777
24778           </tr>
24779           <tr class="entries_header">
24780             <th class="th_details" colspan="5">Details</th>
24781           </tr>
24782           <tr class="entry_cont">
24783             <td class="entry_details" colspan="5">
24784               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
24785 <p>sRGB (approximated by 16 control points):</p>
24786 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24787 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
24788 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
24789 <p>Note that above figures show a 16 control points approximation of preset
24790 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
24791             </td>
24792           </tr>
24793
24794
24795           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24796            <!-- end of entry -->
24797         
24798         
24799
24800       <!-- end of kind -->
24801       </tbody>
24802
24803   <!-- end of section -->
24804   <tr><td colspan="6" id="section_led" class="section">led</td></tr>
24805
24806
24807       <tr><td colspan="6" class="kind">controls</td></tr>
24808
24809       <thead class="entries_header">
24810         <tr>
24811           <th class="th_name">Property Name</th>
24812           <th class="th_type">Type</th>
24813           <th class="th_description">Description</th>
24814           <th class="th_units">Units</th>
24815           <th class="th_range">Range</th>
24816           <th class="th_tags">Tags</th>
24817         </tr>
24818       </thead>
24819
24820       <tbody>
24821
24822         
24823
24824         
24825
24826         
24827
24828         
24829
24830                 
24831           <tr class="entry" id="controls_android.led.transmit">
24832             <td class="entry_name
24833              " rowspan="1">
24834               android.<wbr/>led.<wbr/>transmit
24835             </td>
24836             <td class="entry_type">
24837                 <span class="entry_type_name entry_type_name_enum">byte</span>
24838
24839               <span class="entry_type_visibility"> [hidden as boolean]</span>
24840
24841
24842
24843
24844
24845                 <ul class="entry_type_enum">
24846                   <li>
24847                     <span class="entry_type_enum_name">OFF</span>
24848                   </li>
24849                   <li>
24850                     <span class="entry_type_enum_name">ON</span>
24851                   </li>
24852                 </ul>
24853
24854             </td> <!-- entry_type -->
24855
24856             <td class="entry_description">
24857               <p>This LED is nominally used to indicate to the user
24858 that the camera is powered on and may be streaming images back to the
24859 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
24860 disable this when video is processed locally and not transmitted to
24861 any untrusted applications.<wbr/></p>
24862 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
24863 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
24864 data is stored locally on the device.<wbr/></p>
24865 <p>The LED <em>may</em> be off if a trusted application is using the data that
24866 doesn't violate the above rules.<wbr/></p>
24867             </td>
24868
24869             <td class="entry_units">
24870             </td>
24871
24872             <td class="entry_range">
24873             </td>
24874
24875             <td class="entry_tags">
24876             </td>
24877
24878           </tr>
24879
24880
24881           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24882            <!-- end of entry -->
24883         
24884         
24885
24886       <!-- end of kind -->
24887       </tbody>
24888       <tr><td colspan="6" class="kind">dynamic</td></tr>
24889
24890       <thead class="entries_header">
24891         <tr>
24892           <th class="th_name">Property Name</th>
24893           <th class="th_type">Type</th>
24894           <th class="th_description">Description</th>
24895           <th class="th_units">Units</th>
24896           <th class="th_range">Range</th>
24897           <th class="th_tags">Tags</th>
24898         </tr>
24899       </thead>
24900
24901       <tbody>
24902
24903         
24904
24905         
24906
24907         
24908
24909         
24910
24911                 
24912           <tr class="entry" id="dynamic_android.led.transmit">
24913             <td class="entry_name
24914              " rowspan="1">
24915               android.<wbr/>led.<wbr/>transmit
24916             </td>
24917             <td class="entry_type">
24918                 <span class="entry_type_name entry_type_name_enum">byte</span>
24919
24920               <span class="entry_type_visibility"> [hidden as boolean]</span>
24921
24922
24923
24924
24925
24926                 <ul class="entry_type_enum">
24927                   <li>
24928                     <span class="entry_type_enum_name">OFF</span>
24929                   </li>
24930                   <li>
24931                     <span class="entry_type_enum_name">ON</span>
24932                   </li>
24933                 </ul>
24934
24935             </td> <!-- entry_type -->
24936
24937             <td class="entry_description">
24938               <p>This LED is nominally used to indicate to the user
24939 that the camera is powered on and may be streaming images back to the
24940 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
24941 disable this when video is processed locally and not transmitted to
24942 any untrusted applications.<wbr/></p>
24943 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
24944 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
24945 data is stored locally on the device.<wbr/></p>
24946 <p>The LED <em>may</em> be off if a trusted application is using the data that
24947 doesn't violate the above rules.<wbr/></p>
24948             </td>
24949
24950             <td class="entry_units">
24951             </td>
24952
24953             <td class="entry_range">
24954             </td>
24955
24956             <td class="entry_tags">
24957             </td>
24958
24959           </tr>
24960
24961
24962           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24963            <!-- end of entry -->
24964         
24965         
24966
24967       <!-- end of kind -->
24968       </tbody>
24969       <tr><td colspan="6" class="kind">static</td></tr>
24970
24971       <thead class="entries_header">
24972         <tr>
24973           <th class="th_name">Property Name</th>
24974           <th class="th_type">Type</th>
24975           <th class="th_description">Description</th>
24976           <th class="th_units">Units</th>
24977           <th class="th_range">Range</th>
24978           <th class="th_tags">Tags</th>
24979         </tr>
24980       </thead>
24981
24982       <tbody>
24983
24984         
24985
24986         
24987
24988         
24989
24990         
24991
24992                 
24993           <tr class="entry" id="static_android.led.availableLeds">
24994             <td class="entry_name
24995              " rowspan="1">
24996               android.<wbr/>led.<wbr/>available<wbr/>Leds
24997             </td>
24998             <td class="entry_type">
24999                 <span class="entry_type_name entry_type_name_enum">byte</span>
25000                 <span class="entry_type_container">x</span>
25001
25002                 <span class="entry_type_array">
25003                   n
25004                 </span>
25005               <span class="entry_type_visibility"> [hidden]</span>
25006
25007
25008
25009
25010
25011                 <ul class="entry_type_enum">
25012                   <li>
25013                     <span class="entry_type_enum_name">TRANSMIT</span>
25014                     <span class="entry_type_enum_notes"><p><a href="#controls_android.led.transmit">android.<wbr/>led.<wbr/>transmit</a> control is used.<wbr/></p></span>
25015                   </li>
25016                 </ul>
25017
25018             </td> <!-- entry_type -->
25019
25020             <td class="entry_description">
25021               <p>A list of camera LEDs that are available on this system.<wbr/></p>
25022             </td>
25023
25024             <td class="entry_units">
25025             </td>
25026
25027             <td class="entry_range">
25028             </td>
25029
25030             <td class="entry_tags">
25031             </td>
25032
25033           </tr>
25034
25035
25036           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25037            <!-- end of entry -->
25038         
25039         
25040
25041       <!-- end of kind -->
25042       </tbody>
25043
25044   <!-- end of section -->
25045   <tr><td colspan="6" id="section_info" class="section">info</td></tr>
25046
25047
25048       <tr><td colspan="6" class="kind">static</td></tr>
25049
25050       <thead class="entries_header">
25051         <tr>
25052           <th class="th_name">Property Name</th>
25053           <th class="th_type">Type</th>
25054           <th class="th_description">Description</th>
25055           <th class="th_units">Units</th>
25056           <th class="th_range">Range</th>
25057           <th class="th_tags">Tags</th>
25058         </tr>
25059       </thead>
25060
25061       <tbody>
25062
25063         
25064
25065         
25066
25067         
25068
25069         
25070
25071                 
25072           <tr class="entry" id="static_android.info.supportedHardwareLevel">
25073             <td class="entry_name
25074              " rowspan="5">
25075               android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
25076             </td>
25077             <td class="entry_type">
25078                 <span class="entry_type_name entry_type_name_enum">byte</span>
25079
25080               <span class="entry_type_visibility"> [public]</span>
25081
25082
25083               <span class="entry_type_hwlevel">[legacy] </span>
25084
25085
25086
25087                 <ul class="entry_type_enum">
25088                   <li>
25089                     <span class="entry_type_enum_name">LIMITED</span>
25090                     <span class="entry_type_enum_notes"><p>This camera device has only limited capabilities.<wbr/></p></span>
25091                   </li>
25092                   <li>
25093                     <span class="entry_type_enum_name">FULL</span>
25094                     <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p></span>
25095                   </li>
25096                   <li>
25097                     <span class="entry_type_enum_name">LEGACY</span>
25098                     <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p></span>
25099                   </li>
25100                 </ul>
25101
25102             </td> <!-- entry_type -->
25103
25104             <td class="entry_description">
25105               <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
25106             </td>
25107
25108             <td class="entry_units">
25109             </td>
25110
25111             <td class="entry_range">
25112             </td>
25113
25114             <td class="entry_tags">
25115             </td>
25116
25117           </tr>
25118           <tr class="entries_header">
25119             <th class="th_details" colspan="5">Details</th>
25120           </tr>
25121           <tr class="entry_cont">
25122             <td class="entry_details" colspan="5">
25123               <p>Camera devices will come in three flavors: LEGACY,<wbr/> LIMITED and FULL.<wbr/></p>
25124 <p>A FULL device will support below capabilities:</p>
25125 <ul>
25126 <li>BURST_<wbr/>CAPTURE capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains BURST_<wbr/>CAPTURE)</li>
25127 <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>
25128 <li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR)</li>
25129 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
25130   MANUAL_<wbr/>POST_<wbr/>PROCESSING)</li>
25131 <li>At least 3 processed (but not stalling) format output streams
25132   (<a href="#static_android.request.maxNumOutputProc">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc</a> <code>&gt;=</code> 3)</li>
25133 <li>The required stream configurations defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a></li>
25134 <li>The required exposure time range defined in <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
25135 <li>The required maxFrameDuration defined in <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
25136 </ul>
25137 <p>A LIMITED device may have some or none of the above characteristics.<wbr/>
25138 To find out more refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
25139 <p>Some features are not part of any particular hardware level or capability and must be
25140 queried separately.<wbr/> These include:</p>
25141 <ul>
25142 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
25143 <li>Precision lens control (<a href="#static_android.lens.info.focusDistanceCalibration">android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration</a> <code>==</code> CALIBRATED)</li>
25144 <li>Face detection (<a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a>)</li>
25145 <li>Optical or electrical image stabilization
25146   (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
25147    <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
25148 </ul>
25149 <p>A LEGACY device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
25150 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/></p>
25151 <p>Each higher level supports everything the lower level supports
25152 in this order: FULL <code>&gt;</code> LIMITED <code>&gt;</code> LEGACY.<wbr/></p>
25153 <p>Note:
25154 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
25155 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>==</code> FREEFORM); this requirement was relaxed in API level 23,<wbr/>
25156 and FULL devices may only support CENTERED cropping.<wbr/></p>
25157             </td>
25158           </tr>
25159
25160           <tr class="entries_header">
25161             <th class="th_details" colspan="5">HAL Implementation Details</th>
25162           </tr>
25163           <tr class="entry_cont">
25164             <td class="entry_details" colspan="5">
25165               <p>The camera 3 HAL device can implement one of two possible
25166 operational modes; limited and full.<wbr/> Full support is
25167 expected from new higher-end devices.<wbr/> Limited mode has
25168 hardware requirements roughly in line with those for a
25169 camera HAL device v1 implementation,<wbr/> and is expected from
25170 older or inexpensive devices.<wbr/> Full is a strict superset of
25171 limited,<wbr/> and they share the same essential operational flow.<wbr/></p>
25172 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
25173 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there
25174 for backwards compatibility in the <code>android.<wbr/>hardware.<wbr/>camera2</code>
25175 user-facing API only.<wbr/></p>
25176             </td>
25177           </tr>
25178
25179           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25180            <!-- end of entry -->
25181         
25182         
25183
25184       <!-- end of kind -->
25185       </tbody>
25186
25187   <!-- end of section -->
25188   <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr>
25189
25190
25191       <tr><td colspan="6" class="kind">controls</td></tr>
25192
25193       <thead class="entries_header">
25194         <tr>
25195           <th class="th_name">Property Name</th>
25196           <th class="th_type">Type</th>
25197           <th class="th_description">Description</th>
25198           <th class="th_units">Units</th>
25199           <th class="th_range">Range</th>
25200           <th class="th_tags">Tags</th>
25201         </tr>
25202       </thead>
25203
25204       <tbody>
25205
25206         
25207
25208         
25209
25210         
25211
25212         
25213
25214                 
25215           <tr class="entry" id="controls_android.blackLevel.lock">
25216             <td class="entry_name
25217              " rowspan="5">
25218               android.<wbr/>black<wbr/>Level.<wbr/>lock
25219             </td>
25220             <td class="entry_type">
25221                 <span class="entry_type_name entry_type_name_enum">byte</span>
25222
25223               <span class="entry_type_visibility"> [public as boolean]</span>
25224
25225
25226               <span class="entry_type_hwlevel">[full] </span>
25227
25228
25229
25230                 <ul class="entry_type_enum">
25231                   <li>
25232                     <span class="entry_type_enum_name">OFF</span>
25233                   </li>
25234                   <li>
25235                     <span class="entry_type_enum_name">ON</span>
25236                   </li>
25237                 </ul>
25238
25239             </td> <!-- entry_type -->
25240
25241             <td class="entry_description">
25242               <p>Whether black-level compensation is locked
25243 to its current values,<wbr/> or is free to vary.<wbr/></p>
25244             </td>
25245
25246             <td class="entry_units">
25247             </td>
25248
25249             <td class="entry_range">
25250             </td>
25251
25252             <td class="entry_tags">
25253               <ul class="entry_tags">
25254                   <li><a href="#tag_HAL2">HAL2</a></li>
25255               </ul>
25256             </td>
25257
25258           </tr>
25259           <tr class="entries_header">
25260             <th class="th_details" colspan="5">Details</th>
25261           </tr>
25262           <tr class="entry_cont">
25263             <td class="entry_details" colspan="5">
25264               <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
25265 compensation will not change until the lock is set to
25266 <code>false</code> (OFF).<wbr/></p>
25267 <p>Since changes to certain capture parameters (such as
25268 exposure time) may require resetting of black level
25269 compensation,<wbr/> the camera device must report whether setting
25270 the black level lock was successful in the output result
25271 metadata.<wbr/></p>
25272 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
25273 <ul>
25274 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
25275 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25276 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25277 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25278 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25279 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25280 </ul>
25281 <p>And the exposure change in Request 4 requires the camera
25282 device to reset the black level offsets,<wbr/> then the output
25283 result metadata is expected to be:</p>
25284 <ul>
25285 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
25286 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25287 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
25288 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
25289 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25290 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
25291 </ul>
25292 <p>This indicates to the application that on frame 4,<wbr/> black
25293 levels were reset due to exposure value changes,<wbr/> and pixel
25294 values may not be consistent across captures.<wbr/></p>
25295 <p>The camera device will maintain the lock to the extent
25296 possible,<wbr/> only overriding the lock to OFF when changes to
25297 other request parameters require a black level recalculation
25298 or reset.<wbr/></p>
25299             </td>
25300           </tr>
25301
25302           <tr class="entries_header">
25303             <th class="th_details" colspan="5">HAL Implementation Details</th>
25304           </tr>
25305           <tr class="entry_cont">
25306             <td class="entry_details" colspan="5">
25307               <p>If for some reason black level locking is no longer possible
25308 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
25309 black level offsets to be recalculated),<wbr/> then the HAL must
25310 override this request (and it must report 'OFF' when this
25311 does happen) until the next capture for which locking is
25312 possible again.<wbr/></p>
25313             </td>
25314           </tr>
25315
25316           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25317            <!-- end of entry -->
25318         
25319         
25320
25321       <!-- end of kind -->
25322       </tbody>
25323       <tr><td colspan="6" class="kind">dynamic</td></tr>
25324
25325       <thead class="entries_header">
25326         <tr>
25327           <th class="th_name">Property Name</th>
25328           <th class="th_type">Type</th>
25329           <th class="th_description">Description</th>
25330           <th class="th_units">Units</th>
25331           <th class="th_range">Range</th>
25332           <th class="th_tags">Tags</th>
25333         </tr>
25334       </thead>
25335
25336       <tbody>
25337
25338         
25339
25340         
25341
25342         
25343
25344         
25345
25346                 
25347           <tr class="entry" id="dynamic_android.blackLevel.lock">
25348             <td class="entry_name
25349              " rowspan="5">
25350               android.<wbr/>black<wbr/>Level.<wbr/>lock
25351             </td>
25352             <td class="entry_type">
25353                 <span class="entry_type_name entry_type_name_enum">byte</span>
25354
25355               <span class="entry_type_visibility"> [public as boolean]</span>
25356
25357
25358               <span class="entry_type_hwlevel">[full] </span>
25359
25360
25361
25362                 <ul class="entry_type_enum">
25363                   <li>
25364                     <span class="entry_type_enum_name">OFF</span>
25365                   </li>
25366                   <li>
25367                     <span class="entry_type_enum_name">ON</span>
25368                   </li>
25369                 </ul>
25370
25371             </td> <!-- entry_type -->
25372
25373             <td class="entry_description">
25374               <p>Whether black-level compensation is locked
25375 to its current values,<wbr/> or is free to vary.<wbr/></p>
25376             </td>
25377
25378             <td class="entry_units">
25379             </td>
25380
25381             <td class="entry_range">
25382             </td>
25383
25384             <td class="entry_tags">
25385               <ul class="entry_tags">
25386                   <li><a href="#tag_HAL2">HAL2</a></li>
25387               </ul>
25388             </td>
25389
25390           </tr>
25391           <tr class="entries_header">
25392             <th class="th_details" colspan="5">Details</th>
25393           </tr>
25394           <tr class="entry_cont">
25395             <td class="entry_details" colspan="5">
25396               <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
25397 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
25398 a change in other capture settings forced the camera device to
25399 perform a black level reset.<wbr/></p>
25400             </td>
25401           </tr>
25402
25403           <tr class="entries_header">
25404             <th class="th_details" colspan="5">HAL Implementation Details</th>
25405           </tr>
25406           <tr class="entry_cont">
25407             <td class="entry_details" colspan="5">
25408               <p>If for some reason black level locking is no longer possible
25409 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
25410 black level offsets to be recalculated),<wbr/> then the HAL must
25411 override this request (and it must report 'OFF' when this
25412 does happen) until the next capture for which locking is
25413 possible again.<wbr/></p>
25414             </td>
25415           </tr>
25416
25417           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25418            <!-- end of entry -->
25419         
25420         
25421
25422       <!-- end of kind -->
25423       </tbody>
25424
25425   <!-- end of section -->
25426   <tr><td colspan="6" id="section_sync" class="section">sync</td></tr>
25427
25428
25429       <tr><td colspan="6" class="kind">dynamic</td></tr>
25430
25431       <thead class="entries_header">
25432         <tr>
25433           <th class="th_name">Property Name</th>
25434           <th class="th_type">Type</th>
25435           <th class="th_description">Description</th>
25436           <th class="th_units">Units</th>
25437           <th class="th_range">Range</th>
25438           <th class="th_tags">Tags</th>
25439         </tr>
25440       </thead>
25441
25442       <tbody>
25443
25444         
25445
25446         
25447
25448         
25449
25450         
25451
25452                 
25453           <tr class="entry" id="dynamic_android.sync.frameNumber">
25454             <td class="entry_name
25455              " rowspan="5">
25456               android.<wbr/>sync.<wbr/>frame<wbr/>Number
25457             </td>
25458             <td class="entry_type">
25459                 <span class="entry_type_name entry_type_name_enum">int64</span>
25460
25461               <span class="entry_type_visibility"> [hidden]</span>
25462
25463
25464               <span class="entry_type_hwlevel">[legacy] </span>
25465
25466
25467
25468                 <ul class="entry_type_enum">
25469                   <li>
25470                     <span class="entry_type_enum_name">CONVERGING</span>
25471                     <span class="entry_type_enum_value">-1</span>
25472                     <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
25473 <p>Synchronization is in progress,<wbr/> and reading metadata from this
25474 result may include a mix of data that have taken effect since the
25475 last synchronization time.<wbr/></p>
25476 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
25477 this value will update to the actual frame number frame number
25478 the result is guaranteed to be synchronized to (as long as the
25479 request settings remain constant).<wbr/></p></span>
25480                   </li>
25481                   <li>
25482                     <span class="entry_type_enum_name">UNKNOWN</span>
25483                     <span class="entry_type_enum_value">-2</span>
25484                     <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
25485 <p>The result may have already converged,<wbr/> or it may be in
25486 progress.<wbr/>  Reading from this result may include some mix
25487 of settings from past requests.<wbr/></p>
25488 <p>After a settings change,<wbr/> the new settings will eventually all
25489 take effect for the output buffers and results.<wbr/> However,<wbr/> this
25490 value will not change when that happens.<wbr/> Altering settings
25491 rapidly may provide outcomes using mixes of settings from recent
25492 requests.<wbr/></p>
25493 <p>This value is intended primarily for backwards compatibility with
25494 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
25495                   </li>
25496                 </ul>
25497
25498             </td> <!-- entry_type -->
25499
25500             <td class="entry_description">
25501               <p>The frame number corresponding to the last request
25502 with which the output result (metadata + buffers) has been fully
25503 synchronized.<wbr/></p>
25504             </td>
25505
25506             <td class="entry_units">
25507             </td>
25508
25509             <td class="entry_range">
25510               <p>Either a non-negative value corresponding to a
25511 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
25512             </td>
25513
25514             <td class="entry_tags">
25515               <ul class="entry_tags">
25516                   <li><a href="#tag_V1">V1</a></li>
25517               </ul>
25518             </td>
25519
25520           </tr>
25521           <tr class="entries_header">
25522             <th class="th_details" colspan="5">Details</th>
25523           </tr>
25524           <tr class="entry_cont">
25525             <td class="entry_details" colspan="5">
25526               <p>When a request is submitted to the camera device,<wbr/> there is usually a
25527 delay of several frames before the controls get applied.<wbr/> A camera
25528 device may either choose to account for this delay by implementing a
25529 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
25530 it may start streaming control changes that span over several frame
25531 boundaries.<wbr/></p>
25532 <p>In the latter case,<wbr/> whenever a request's settings change relative to
25533 the previous submitted request,<wbr/> the full set of changes may take
25534 multiple frame durations to fully take effect.<wbr/> Some settings may
25535 take effect sooner (in less frame durations) than others.<wbr/></p>
25536 <p>While a set of control changes are being propagated,<wbr/> this value
25537 will be CONVERGING.<wbr/></p>
25538 <p>Once it is fully known that a set of control changes have been
25539 finished propagating,<wbr/> and the resulting updated control settings
25540 have been read back by the camera device,<wbr/> this value will be set
25541 to a non-negative frame number (corresponding to the request to
25542 which the results have synchronized to).<wbr/></p>
25543 <p>Older camera device implementations may not have a way to detect
25544 when all camera controls have been applied,<wbr/> and will always set this
25545 value to UNKNOWN.<wbr/></p>
25546 <p>FULL capability devices will always have this value set to the
25547 frame number of the request corresponding to this result.<wbr/></p>
25548 <p><em>Further details</em>:</p>
25549 <ul>
25550 <li>Whenever a request differs from the last request,<wbr/> any future
25551 results not yet returned may have this value set to CONVERGING (this
25552 could include any in-progress captures not yet returned by the camera
25553 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
25554 <li>Submitting a series of multiple requests that differ from the
25555 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
25556 moves the new synchronization frame to the last non-repeating
25557 request (using the smallest frame number from the contiguous list of
25558 repeating requests).<wbr/></li>
25559 <li>Submitting the same request repeatedly will not change this value
25560 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
25561 <li>When this value changes to non-negative,<wbr/> that means that all of the
25562 metadata controls from the request have been applied,<wbr/> all of the
25563 metadata controls from the camera device have been read to the
25564 updated values (into the result),<wbr/> and all of the graphics buffers
25565 corresponding to this result are also synchronized to the request.<wbr/></li>
25566 </ul>
25567 <p><em>Pipeline considerations</em>:</p>
25568 <p>Submitting a request with updated controls relative to the previously
25569 submitted requests may also invalidate the synchronization state
25570 of all the results corresponding to currently in-flight requests.<wbr/></p>
25571 <p>In other words,<wbr/> results for this current request and up to
25572 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
25573 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
25574             </td>
25575           </tr>
25576
25577           <tr class="entries_header">
25578             <th class="th_details" colspan="5">HAL Implementation Details</th>
25579           </tr>
25580           <tr class="entry_cont">
25581             <td class="entry_details" colspan="5">
25582               <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
25583 is also UNKNOWN.<wbr/></p>
25584 <p>FULL capability devices should simply set this value to the
25585 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
25586             </td>
25587           </tr>
25588
25589           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25590            <!-- end of entry -->
25591         
25592         
25593
25594       <!-- end of kind -->
25595       </tbody>
25596       <tr><td colspan="6" class="kind">static</td></tr>
25597
25598       <thead class="entries_header">
25599         <tr>
25600           <th class="th_name">Property Name</th>
25601           <th class="th_type">Type</th>
25602           <th class="th_description">Description</th>
25603           <th class="th_units">Units</th>
25604           <th class="th_range">Range</th>
25605           <th class="th_tags">Tags</th>
25606         </tr>
25607       </thead>
25608
25609       <tbody>
25610
25611         
25612
25613         
25614
25615         
25616
25617         
25618
25619                 
25620           <tr class="entry" id="static_android.sync.maxLatency">
25621             <td class="entry_name
25622              " rowspan="5">
25623               android.<wbr/>sync.<wbr/>max<wbr/>Latency
25624             </td>
25625             <td class="entry_type">
25626                 <span class="entry_type_name entry_type_name_enum">int32</span>
25627
25628               <span class="entry_type_visibility"> [public]</span>
25629
25630
25631               <span class="entry_type_hwlevel">[legacy] </span>
25632
25633
25634
25635                 <ul class="entry_type_enum">
25636                   <li>
25637                     <span class="entry_type_enum_name">PER_FRAME_CONTROL</span>
25638                     <span class="entry_type_enum_value">0</span>
25639                     <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
25640 <p>Changing controls over multiple requests one after another will
25641 produce results that have those controls applied atomically
25642 each frame.<wbr/></p>
25643 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
25644                   </li>
25645                   <li>
25646                     <span class="entry_type_enum_name">UNKNOWN</span>
25647                     <span class="entry_type_enum_value">-1</span>
25648                     <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
25649 of the past requests applied to the camera settings.<wbr/></p>
25650 <p>By submitting a series of identical requests,<wbr/> the camera device
25651 will eventually have the camera settings applied,<wbr/> but it is
25652 unknown when that exact point will be.<wbr/></p>
25653 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
25654                   </li>
25655                 </ul>
25656
25657             </td> <!-- entry_type -->
25658
25659             <td class="entry_description">
25660               <p>The maximum number of frames that can occur after a request
25661 (different than the previous) has been submitted,<wbr/> and before the
25662 result's state becomes synchronized.<wbr/></p>
25663             </td>
25664
25665             <td class="entry_units">
25666               Frame counts
25667             </td>
25668
25669             <td class="entry_range">
25670               <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
25671             </td>
25672
25673             <td class="entry_tags">
25674               <ul class="entry_tags">
25675                   <li><a href="#tag_V1">V1</a></li>
25676               </ul>
25677             </td>
25678
25679           </tr>
25680           <tr class="entries_header">
25681             <th class="th_details" colspan="5">Details</th>
25682           </tr>
25683           <tr class="entry_cont">
25684             <td class="entry_details" colspan="5">
25685               <p>This defines the maximum distance (in number of metadata results),<wbr/>
25686 between the frame number of the request that has new controls to apply
25687 and the frame number of the result that has all the controls applied.<wbr/></p>
25688 <p>In other words this acts as an upper boundary for how many frames
25689 must occur before the camera device knows for a fact that the new
25690 submitted camera settings have been applied in outgoing frames.<wbr/></p>
25691             </td>
25692           </tr>
25693
25694           <tr class="entries_header">
25695             <th class="th_details" colspan="5">HAL Implementation Details</th>
25696           </tr>
25697           <tr class="entry_cont">
25698             <td class="entry_details" colspan="5">
25699               <p>For example if maxLatency was 2,<wbr/></p>
25700 <pre><code>initial request = X (repeating)
25701 request1 = X
25702 request2 = Y
25703 request3 = Y
25704 request4 = Y
25705
25706 where requestN has frameNumber N,<wbr/> and the first of the repeating
25707 initial request's has frameNumber F (and F &lt; 1).<wbr/>
25708
25709 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
25710 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
25711 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
25712 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
25713 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
25714
25715 where resultN has frameNumber N.<wbr/>
25716 </code></pre>
25717 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
25718 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
25719 <code>4 - 2 = 2</code>.<wbr/></p>
25720 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
25721 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
25722 <code>@link{android.<wbr/>hardware.<wbr/>camera2.<wbr/>Capture<wbr/>Result#get<wbr/>Frame<wbr/>Number}</code>.<wbr/></p>
25723 <p>LIMITED devices are strongly encouraged to use a non-negative
25724 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
25725 to know when sensor settings have been applied.<wbr/></p>
25726             </td>
25727           </tr>
25728
25729           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25730            <!-- end of entry -->
25731         
25732         
25733
25734       <!-- end of kind -->
25735       </tbody>
25736
25737   <!-- end of section -->
25738   <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr>
25739
25740
25741       <tr><td colspan="6" class="kind">controls</td></tr>
25742
25743       <thead class="entries_header">
25744         <tr>
25745           <th class="th_name">Property Name</th>
25746           <th class="th_type">Type</th>
25747           <th class="th_description">Description</th>
25748           <th class="th_units">Units</th>
25749           <th class="th_range">Range</th>
25750           <th class="th_tags">Tags</th>
25751         </tr>
25752       </thead>
25753
25754       <tbody>
25755
25756         
25757
25758         
25759
25760         
25761
25762         
25763
25764                 
25765           <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
25766             <td class="entry_name
25767              " rowspan="3">
25768               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
25769             </td>
25770             <td class="entry_type">
25771                 <span class="entry_type_name">float</span>
25772
25773               <span class="entry_type_visibility"> [public]</span>
25774
25775
25776               <span class="entry_type_hwlevel">[limited] </span>
25777
25778
25779
25780
25781             </td> <!-- entry_type -->
25782
25783             <td class="entry_description">
25784               <p>The amount of exposure time increase factor applied to the original output
25785 frame by the application processing before sending for reprocessing.<wbr/></p>
25786             </td>
25787
25788             <td class="entry_units">
25789               Relative exposure time increase factor.<wbr/>
25790             </td>
25791
25792             <td class="entry_range">
25793               <p>&gt;= 1.<wbr/>0</p>
25794             </td>
25795
25796             <td class="entry_tags">
25797               <ul class="entry_tags">
25798                   <li><a href="#tag_REPROC">REPROC</a></li>
25799               </ul>
25800             </td>
25801
25802           </tr>
25803           <tr class="entries_header">
25804             <th class="th_details" colspan="5">Details</th>
25805           </tr>
25806           <tr class="entry_cont">
25807             <td class="entry_details" colspan="5">
25808               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
25809 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
25810 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
25811 output frames to effectively reduce the noise to the same level as a frame that was
25812 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
25813 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
25814 the camera device is that the amount of noise in the image would be approximately what
25815 would be expected if the original capture parameters had been a sensitivity of
25816 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
25817 than S and T respectively.<wbr/> If the captured images were processed by the application
25818 before being sent for reprocessing,<wbr/> then the application may have used image processing
25819 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
25820 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
25821 control,<wbr/> the application can communicate to the camera device the actual noise level
25822 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
25823 device can select appropriate noise reduction and edge enhancement parameters to avoid
25824 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
25825 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
25826 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
25827 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
25828 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
25829 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
25830 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
25831 produce the best quality images.<wbr/></p>
25832 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
25833 buffer in a way that affects its effective exposure time.<wbr/></p>
25834 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
25835 reduction reprocessing,<wbr/> it is only effective when <code><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> != OFF</code>.<wbr/>
25836 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
25837 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
25838             </td>
25839           </tr>
25840
25841
25842           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25843            <!-- end of entry -->
25844         
25845         
25846
25847       <!-- end of kind -->
25848       </tbody>
25849       <tr><td colspan="6" class="kind">dynamic</td></tr>
25850
25851       <thead class="entries_header">
25852         <tr>
25853           <th class="th_name">Property Name</th>
25854           <th class="th_type">Type</th>
25855           <th class="th_description">Description</th>
25856           <th class="th_units">Units</th>
25857           <th class="th_range">Range</th>
25858           <th class="th_tags">Tags</th>
25859         </tr>
25860       </thead>
25861
25862       <tbody>
25863
25864         
25865
25866         
25867
25868         
25869
25870         
25871
25872                 
25873           <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
25874             <td class="entry_name
25875              " rowspan="3">
25876               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
25877             </td>
25878             <td class="entry_type">
25879                 <span class="entry_type_name">float</span>
25880
25881               <span class="entry_type_visibility"> [public]</span>
25882
25883
25884               <span class="entry_type_hwlevel">[limited] </span>
25885
25886
25887
25888
25889             </td> <!-- entry_type -->
25890
25891             <td class="entry_description">
25892               <p>The amount of exposure time increase factor applied to the original output
25893 frame by the application processing before sending for reprocessing.<wbr/></p>
25894             </td>
25895
25896             <td class="entry_units">
25897               Relative exposure time increase factor.<wbr/>
25898             </td>
25899
25900             <td class="entry_range">
25901               <p>&gt;= 1.<wbr/>0</p>
25902             </td>
25903
25904             <td class="entry_tags">
25905               <ul class="entry_tags">
25906                   <li><a href="#tag_REPROC">REPROC</a></li>
25907               </ul>
25908             </td>
25909
25910           </tr>
25911           <tr class="entries_header">
25912             <th class="th_details" colspan="5">Details</th>
25913           </tr>
25914           <tr class="entry_cont">
25915             <td class="entry_details" colspan="5">
25916               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
25917 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
25918 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
25919 output frames to effectively reduce the noise to the same level as a frame that was
25920 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
25921 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
25922 the camera device is that the amount of noise in the image would be approximately what
25923 would be expected if the original capture parameters had been a sensitivity of
25924 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
25925 than S and T respectively.<wbr/> If the captured images were processed by the application
25926 before being sent for reprocessing,<wbr/> then the application may have used image processing
25927 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
25928 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
25929 control,<wbr/> the application can communicate to the camera device the actual noise level
25930 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
25931 device can select appropriate noise reduction and edge enhancement parameters to avoid
25932 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
25933 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
25934 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
25935 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
25936 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
25937 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
25938 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
25939 produce the best quality images.<wbr/></p>
25940 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
25941 buffer in a way that affects its effective exposure time.<wbr/></p>
25942 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
25943 reduction reprocessing,<wbr/> it is only effective when <code><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> != OFF</code>.<wbr/>
25944 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
25945 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
25946             </td>
25947           </tr>
25948
25949
25950           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25951            <!-- end of entry -->
25952         
25953         
25954
25955       <!-- end of kind -->
25956       </tbody>
25957       <tr><td colspan="6" class="kind">static</td></tr>
25958
25959       <thead class="entries_header">
25960         <tr>
25961           <th class="th_name">Property Name</th>
25962           <th class="th_type">Type</th>
25963           <th class="th_description">Description</th>
25964           <th class="th_units">Units</th>
25965           <th class="th_range">Range</th>
25966           <th class="th_tags">Tags</th>
25967         </tr>
25968       </thead>
25969
25970       <tbody>
25971
25972         
25973
25974         
25975
25976         
25977
25978         
25979
25980                 
25981           <tr class="entry" id="static_android.reprocess.maxCaptureStall">
25982             <td class="entry_name
25983              " rowspan="3">
25984               android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
25985             </td>
25986             <td class="entry_type">
25987                 <span class="entry_type_name">int32</span>
25988
25989               <span class="entry_type_visibility"> [public]</span>
25990
25991
25992               <span class="entry_type_hwlevel">[limited] </span>
25993
25994
25995
25996
25997             </td> <!-- entry_type -->
25998
25999             <td class="entry_description">
26000               <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
26001 reprocess capture request.<wbr/></p>
26002             </td>
26003
26004             <td class="entry_units">
26005               Number of frames.<wbr/>
26006             </td>
26007
26008             <td class="entry_range">
26009               <p>&lt;= 4</p>
26010             </td>
26011
26012             <td class="entry_tags">
26013               <ul class="entry_tags">
26014                   <li><a href="#tag_REPROC">REPROC</a></li>
26015               </ul>
26016             </td>
26017
26018           </tr>
26019           <tr class="entries_header">
26020             <th class="th_details" colspan="5">Details</th>
26021           </tr>
26022           <tr class="entry_cont">
26023             <td class="entry_details" colspan="5">
26024               <p>The key describes the maximal interference that one reprocess (input) request
26025 can introduce to the camera simultaneous streaming of regular (output) capture
26026 requests,<wbr/> including repeating requests.<wbr/></p>
26027 <p>When a reprocessing capture request is submitted while a camera output repeating request
26028 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
26029 pipeline for at least one frame duration so that the camera device is unable to process
26030 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
26031 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
26032 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
26033 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
26034 the worst-case number of frame stall introduced by one reprocess request with any kind of
26035 formats/<wbr/>sizes combination.<wbr/></p>
26036 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
26037 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
26038 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
26039 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
26040 YUV_<wbr/>REPROCESSING).<wbr/></p>
26041             </td>
26042           </tr>
26043
26044
26045           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26046            <!-- end of entry -->
26047         
26048         
26049
26050       <!-- end of kind -->
26051       </tbody>
26052
26053   <!-- end of section -->
26054   <tr><td colspan="6" id="section_depth" class="section">depth</td></tr>
26055
26056
26057       <tr><td colspan="6" class="kind">static</td></tr>
26058
26059       <thead class="entries_header">
26060         <tr>
26061           <th class="th_name">Property Name</th>
26062           <th class="th_type">Type</th>
26063           <th class="th_description">Description</th>
26064           <th class="th_units">Units</th>
26065           <th class="th_range">Range</th>
26066           <th class="th_tags">Tags</th>
26067         </tr>
26068       </thead>
26069
26070       <tbody>
26071
26072         
26073
26074         
26075
26076         
26077
26078         
26079
26080                 
26081           <tr class="entry" id="static_android.depth.maxDepthSamples">
26082             <td class="entry_name
26083              " rowspan="3">
26084               android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
26085             </td>
26086             <td class="entry_type">
26087                 <span class="entry_type_name">int32</span>
26088
26089               <span class="entry_type_visibility"> [system]</span>
26090
26091
26092               <span class="entry_type_hwlevel">[limited] </span>
26093
26094
26095
26096
26097             </td> <!-- entry_type -->
26098
26099             <td class="entry_description">
26100               <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
26101             </td>
26102
26103             <td class="entry_units">
26104             </td>
26105
26106             <td class="entry_range">
26107             </td>
26108
26109             <td class="entry_tags">
26110               <ul class="entry_tags">
26111                   <li><a href="#tag_DEPTH">DEPTH</a></li>
26112               </ul>
26113             </td>
26114
26115           </tr>
26116           <tr class="entries_header">
26117             <th class="th_details" colspan="5">Details</th>
26118           </tr>
26119           <tr class="entry_cont">
26120             <td class="entry_details" colspan="5">
26121               <p>If a camera device supports outputting depth range data in the form of a depth point
26122 cloud (<a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH_POINT_CLOUD">Image<wbr/>Format#DEPTH_<wbr/>POINT_<wbr/>CLOUD</a>),<wbr/> this is the maximum
26123 number of points an output buffer may contain.<wbr/></p>
26124 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
26125 If output in the depth point cloud format is not supported,<wbr/> this entry will
26126 not be defined.<wbr/></p>
26127             </td>
26128           </tr>
26129
26130
26131           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26132            <!-- end of entry -->
26133         
26134                 
26135           <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
26136             <td class="entry_name
26137              " rowspan="3">
26138               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
26139             </td>
26140             <td class="entry_type">
26141                 <span class="entry_type_name entry_type_name_enum">int32</span>
26142                 <span class="entry_type_container">x</span>
26143
26144                 <span class="entry_type_array">
26145                   n x 4
26146                 </span>
26147               <span class="entry_type_visibility"> [hidden as streamConfiguration]</span>
26148
26149
26150               <span class="entry_type_hwlevel">[limited] </span>
26151
26152
26153
26154                 <ul class="entry_type_enum">
26155                   <li>
26156                     <span class="entry_type_enum_name">OUTPUT</span>
26157                   </li>
26158                   <li>
26159                     <span class="entry_type_enum_name">INPUT</span>
26160                   </li>
26161                 </ul>
26162
26163             </td> <!-- entry_type -->
26164
26165             <td class="entry_description">
26166               <p>The available depth dataspace stream
26167 configurations that this camera device supports
26168 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
26169             </td>
26170
26171             <td class="entry_units">
26172             </td>
26173
26174             <td class="entry_range">
26175             </td>
26176
26177             <td class="entry_tags">
26178               <ul class="entry_tags">
26179                   <li><a href="#tag_DEPTH">DEPTH</a></li>
26180               </ul>
26181             </td>
26182
26183           </tr>
26184           <tr class="entries_header">
26185             <th class="th_details" colspan="5">Details</th>
26186           </tr>
26187           <tr class="entry_cont">
26188             <td class="entry_details" colspan="5">
26189               <p>These are output stream configurations for use with
26190 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
26191 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
26192 <p>Only devices that support depth output for at least
26193 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
26194 this entry.<wbr/></p>
26195 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
26196 sparse depth point cloud must report a single entry for
26197 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
26198 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
26199 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
26200             </td>
26201           </tr>
26202
26203
26204           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26205            <!-- end of entry -->
26206         
26207                 
26208           <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
26209             <td class="entry_name
26210              " rowspan="3">
26211               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
26212             </td>
26213             <td class="entry_type">
26214                 <span class="entry_type_name">int64</span>
26215                 <span class="entry_type_container">x</span>
26216
26217                 <span class="entry_type_array">
26218                   4 x n
26219                 </span>
26220               <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
26221
26222
26223               <span class="entry_type_hwlevel">[limited] </span>
26224
26225
26226
26227
26228             </td> <!-- entry_type -->
26229
26230             <td class="entry_description">
26231               <p>This lists the minimum frame duration for each
26232 format/<wbr/>size combination for depth output formats.<wbr/></p>
26233             </td>
26234
26235             <td class="entry_units">
26236               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
26237             </td>
26238
26239             <td class="entry_range">
26240             </td>
26241
26242             <td class="entry_tags">
26243               <ul class="entry_tags">
26244                   <li><a href="#tag_DEPTH">DEPTH</a></li>
26245               </ul>
26246             </td>
26247
26248           </tr>
26249           <tr class="entries_header">
26250             <th class="th_details" colspan="5">Details</th>
26251           </tr>
26252           <tr class="entry_cont">
26253             <td class="entry_details" colspan="5">
26254               <p>This should correspond to the frame duration when only that
26255 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
26256 set to either OFF or FAST.<wbr/></p>
26257 <p>When multiple streams are used in a request,<wbr/> the minimum frame
26258 duration will be max(individual stream min durations).<wbr/></p>
26259 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
26260 is the same regardless of whether the stream is input or output.<wbr/></p>
26261 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
26262 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
26263 calculating the max frame rate.<wbr/></p>
26264 <p>(Keep in sync with <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
26265             </td>
26266           </tr>
26267
26268
26269           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26270            <!-- end of entry -->
26271         
26272                 
26273           <tr class="entry" id="static_android.depth.availableDepthStallDurations">
26274             <td class="entry_name
26275              " rowspan="3">
26276               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
26277             </td>
26278             <td class="entry_type">
26279                 <span class="entry_type_name">int64</span>
26280                 <span class="entry_type_container">x</span>
26281
26282                 <span class="entry_type_array">
26283                   4 x n
26284                 </span>
26285               <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
26286
26287
26288               <span class="entry_type_hwlevel">[limited] </span>
26289
26290
26291
26292
26293             </td> <!-- entry_type -->
26294
26295             <td class="entry_description">
26296               <p>This lists the maximum stall duration for each
26297 output format/<wbr/>size combination for depth streams.<wbr/></p>
26298             </td>
26299
26300             <td class="entry_units">
26301               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
26302             </td>
26303
26304             <td class="entry_range">
26305             </td>
26306
26307             <td class="entry_tags">
26308               <ul class="entry_tags">
26309                   <li><a href="#tag_DEPTH">DEPTH</a></li>
26310               </ul>
26311             </td>
26312
26313           </tr>
26314           <tr class="entries_header">
26315             <th class="th_details" colspan="5">Details</th>
26316           </tr>
26317           <tr class="entry_cont">
26318             <td class="entry_details" colspan="5">
26319               <p>A stall duration is how much extra time would get added
26320 to the normal minimum frame duration for a repeating request
26321 that has streams with non-zero stall.<wbr/></p>
26322 <p>This functions similarly to
26323 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
26324 streams.<wbr/></p>
26325 <p>All depth output stream formats may have a nonzero stall
26326 duration.<wbr/></p>
26327             </td>
26328           </tr>
26329
26330
26331           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26332            <!-- end of entry -->
26333         
26334                 
26335           <tr class="entry" id="static_android.depth.depthIsExclusive">
26336             <td class="entry_name
26337              " rowspan="3">
26338               android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
26339             </td>
26340             <td class="entry_type">
26341                 <span class="entry_type_name entry_type_name_enum">byte</span>
26342
26343               <span class="entry_type_visibility"> [public as boolean]</span>
26344
26345
26346               <span class="entry_type_hwlevel">[limited] </span>
26347
26348
26349
26350                 <ul class="entry_type_enum">
26351                   <li>
26352                     <span class="entry_type_enum_name">FALSE</span>
26353                   </li>
26354                   <li>
26355                     <span class="entry_type_enum_name">TRUE</span>
26356                   </li>
26357                 </ul>
26358
26359             </td> <!-- entry_type -->
26360
26361             <td class="entry_description">
26362               <p>Indicates whether a capture request may target both a
26363 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
26364 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
26365             </td>
26366
26367             <td class="entry_units">
26368             </td>
26369
26370             <td class="entry_range">
26371             </td>
26372
26373             <td class="entry_tags">
26374             </td>
26375
26376           </tr>
26377           <tr class="entries_header">
26378             <th class="th_details" colspan="5">Details</th>
26379           </tr>
26380           <tr class="entry_cont">
26381             <td class="entry_details" colspan="5">
26382               <p>If TRUE,<wbr/> including both depth and color outputs in a single
26383 capture request is not supported.<wbr/> An application must interleave color
26384 and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
26385 of output.<wbr/></p>
26386 <p>Typically,<wbr/> this restriction exists on camera devices that
26387 need to emit a specific pattern or wavelength of light to
26388 measure depth values,<wbr/> which causes the color image to be
26389 corrupted during depth measurement.<wbr/></p>
26390             </td>
26391           </tr>
26392
26393
26394           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
26395            <!-- end of entry -->
26396         
26397         
26398
26399       <!-- end of kind -->
26400       </tbody>
26401
26402   <!-- end of section -->
26403 <!-- </namespace> -->
26404   </table>
26405
26406   <div class="tags" id="tag_index">
26407     <h2>Tags</h2>
26408     <ul>
26409       <li id="tag_BC">BC - 
26410         Needed for backwards compatibility with old Java API
26411     
26412         <ul class="tags_entries">
26413           <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
26414           <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
26415           <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
26416           <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
26417           <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
26418           <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
26419           <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
26420           <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
26421           <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
26422           <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
26423           <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
26424           <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
26425           <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
26426           <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
26427           <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
26428           <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
26429           <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
26430           <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
26431           <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
26432           <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
26433           <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
26434           <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
26435           <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
26436           <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
26437           <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
26438           <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
26439           <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
26440           <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
26441           <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
26442           <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
26443           <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
26444           <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
26445           <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
26446           <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
26447           <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
26448           <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
26449           <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
26450           <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
26451           <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
26452           <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
26453           <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
26454           <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
26455           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
26456           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
26457           <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
26458           <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
26459           <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
26460           <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
26461           <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
26462           <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
26463           <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
26464           <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
26465           <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
26466           <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
26467           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
26468           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
26469           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
26470           <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
26471           <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
26472           <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
26473           <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
26474           <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
26475           <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
26476           <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
26477           <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
26478           <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
26479           <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
26480         </ul>
26481       </li> <!-- tag_BC -->
26482       <li id="tag_V1">V1 - 
26483         New features for first camera 2 release (API1)
26484     
26485         <ul class="tags_entries">
26486           <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
26487           <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
26488           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
26489           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
26490           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
26491           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
26492           <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
26493           <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
26494           <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
26495           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
26496           <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
26497           <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
26498           <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
26499           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
26500           <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
26501           <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
26502           <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
26503           <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
26504           <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
26505           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
26506           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
26507           <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
26508           <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
26509           <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
26510           <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
26511           <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
26512           <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
26513           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
26514           <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
26515           <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
26516           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
26517           <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
26518           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
26519           <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
26520           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
26521           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
26522           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
26523           <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
26524           <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
26525           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
26526           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
26527           <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
26528           <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
26529           <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
26530           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
26531         </ul>
26532       </li> <!-- tag_V1 -->
26533       <li id="tag_RAW">RAW - 
26534         Needed for useful RAW image processing and DNG file support
26535     
26536         <ul class="tags_entries">
26537           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
26538           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
26539           <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
26540           <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
26541           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
26542           <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
26543           <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
26544           <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
26545           <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
26546           <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
26547           <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
26548           <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
26549           <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
26550           <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
26551           <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
26552           <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
26553           <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
26554           <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
26555           <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
26556           <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
26557           <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
26558           <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
26559           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
26560           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
26561           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
26562           <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
26563           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
26564         </ul>
26565       </li> <!-- tag_RAW -->
26566       <li id="tag_HAL2">HAL2 - 
26567         Entry is only used by camera device HAL 2.x
26568     
26569         <ul class="tags_entries">
26570           <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
26571           <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
26572           <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
26573           <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
26574           <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
26575         </ul>
26576       </li> <!-- tag_HAL2 -->
26577       <li id="tag_FULL">FULL - 
26578         Entry is required for full hardware level devices, and optional for other hardware levels
26579     
26580         <ul class="tags_entries">
26581           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
26582         </ul>
26583       </li> <!-- tag_FULL -->
26584       <li id="tag_DEPTH">DEPTH - 
26585         Entry is required for the depth capability.
26586     
26587         <ul class="tags_entries">
26588           <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
26589           <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
26590           <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
26591           <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
26592           <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
26593           <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
26594           <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
26595           <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
26596         </ul>
26597       </li> <!-- tag_DEPTH -->
26598       <li id="tag_REPROC">REPROC - 
26599         Entry is required for the YUV or PRIVATE reprocessing capability.
26600     
26601         <ul class="tags_entries">
26602           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
26603           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
26604           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
26605           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
26606           <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
26607           <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
26608           <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
26609           <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
26610           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
26611           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
26612         </ul>
26613       </li> <!-- tag_REPROC -->
26614       <li id="tag_FUTURE">FUTURE - 
26615         Entry is  under-specified and is not required for now. This is for book-keeping purpose,
26616         do not implement or use it, it may be revised for future.
26617     
26618         <ul class="tags_entries">
26619           <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
26620           <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
26621           <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
26622           <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
26623           <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
26624           <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
26625           <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
26626           <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
26627           <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
26628           <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
26629           <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
26630           <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
26631           <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
26632           <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
26633           <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
26634           <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
26635           <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
26636           <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
26637           <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
26638           <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
26639           <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
26640         </ul>
26641       </li> <!-- tag_FUTURE -->
26642     </ul>
26643   </div>
26644
26645   [ <a href="#">top</a> ]
26646
26647 </body>
26648 </html>