OSDN Git Service

Camera2: update reprocessing naming
[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
772             <li
773             ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
774             <li
775             ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
776             <li
777             ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
778             <li
779             ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
780             <li
781             ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
782             <li
783             ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
784             <li
785             ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
786             <li
787             ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
788             <li
789             ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
790             <li
791             ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
792             <li
793             ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
794             <li
795             ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
796             <li
797             ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
798             <li
799             ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
800           </ul>
801         </li>
802         <li>
803           <span class="toc_kind_header">dynamic</span>
804           <ul class="toc_section">
805             <li
806             ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
807             <li
808             ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
809             <li
810             ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
811             <li
812             ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
813             <li
814             ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
815             <li
816             ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
817             <li
818             ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
819             <li
820             ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
821             <li
822             ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
823             <li
824             ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
825             <li
826             ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
827             <li
828             ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
829             <li
830             ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
831           </ul>
832         </li>
833       </ul> <!-- toc_section -->
834     </li>
835     <li>
836       <span class="toc_section_header"><a href="#section_shading">shading</a></span>
837       <ul class="toc_section">
838         <li>
839           <span class="toc_kind_header">controls</span>
840           <ul class="toc_section">
841             <li
842             ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
843             <li
844             ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
845           </ul>
846         </li>
847         <li>
848           <span class="toc_kind_header">dynamic</span>
849           <ul class="toc_section">
850             <li
851             ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
852           </ul>
853         </li>
854         <li>
855           <span class="toc_kind_header">static</span>
856           <ul class="toc_section">
857             <li
858             ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
859           </ul>
860         </li>
861       </ul> <!-- toc_section -->
862     </li>
863     <li>
864       <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
865       <ul class="toc_section">
866         <li>
867           <span class="toc_kind_header">controls</span>
868           <ul class="toc_section">
869             <li
870             ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
871             <li
872             ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
873             <li
874             ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
875             <li
876             ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
877             <li
878             ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
879           </ul>
880         </li>
881         <li>
882           <span class="toc_kind_header">static</span>
883           <ul class="toc_section">
884
885             <li
886             ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
887             <li
888             ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
889             <li
890             ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
891             <li
892             ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
893             <li
894             ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
895             <li
896             ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
897             <li
898             ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
899             <li
900             ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
901
902           </ul>
903         </li>
904         <li>
905           <span class="toc_kind_header">dynamic</span>
906           <ul class="toc_section">
907             <li
908             ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
909             <li
910             ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
911             <li
912             ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
913             <li
914             ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
915             <li
916             ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
917             <li
918             ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
919             <li
920             ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
921             <li
922             ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
923             <li
924             ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
925             <li
926             ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
927             <li
928             ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
929             <li
930             ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
931             <li
932                 class="toc_deprecated"
933             ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
934             <li
935                 class="toc_deprecated"
936             ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
937             <li
938             ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
939             <li
940             ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
941             <li
942             ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
943             <li
944             ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
945           </ul>
946         </li>
947       </ul> <!-- toc_section -->
948     </li>
949     <li>
950       <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
951       <ul class="toc_section">
952         <li>
953           <span class="toc_kind_header">controls</span>
954           <ul class="toc_section">
955             <li
956             ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
957             <li
958             ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
959             <li
960             ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
961             <li
962             ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
963             <li
964             ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
965             <li
966             ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
967             <li
968             ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
969           </ul>
970         </li>
971         <li>
972           <span class="toc_kind_header">static</span>
973           <ul class="toc_section">
974             <li
975             ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
976             <li
977             ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
978           </ul>
979         </li>
980         <li>
981           <span class="toc_kind_header">dynamic</span>
982           <ul class="toc_section">
983             <li
984             ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
985             <li
986             ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
987             <li
988             ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
989             <li
990             ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
991             <li
992             ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
993             <li
994             ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
995             <li
996             ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
997           </ul>
998         </li>
999       </ul> <!-- toc_section -->
1000     </li>
1001     <li>
1002       <span class="toc_section_header"><a href="#section_led">led</a></span>
1003       <ul class="toc_section">
1004         <li>
1005           <span class="toc_kind_header">controls</span>
1006           <ul class="toc_section">
1007             <li
1008             ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1009           </ul>
1010         </li>
1011         <li>
1012           <span class="toc_kind_header">dynamic</span>
1013           <ul class="toc_section">
1014             <li
1015             ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1016           </ul>
1017         </li>
1018         <li>
1019           <span class="toc_kind_header">static</span>
1020           <ul class="toc_section">
1021             <li
1022             ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1023           </ul>
1024         </li>
1025       </ul> <!-- toc_section -->
1026     </li>
1027     <li>
1028       <span class="toc_section_header"><a href="#section_info">info</a></span>
1029       <ul class="toc_section">
1030         <li>
1031           <span class="toc_kind_header">static</span>
1032           <ul class="toc_section">
1033             <li
1034             ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1035           </ul>
1036         </li>
1037       </ul> <!-- toc_section -->
1038     </li>
1039     <li>
1040       <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1041       <ul class="toc_section">
1042         <li>
1043           <span class="toc_kind_header">controls</span>
1044           <ul class="toc_section">
1045             <li
1046             ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1047           </ul>
1048         </li>
1049         <li>
1050           <span class="toc_kind_header">dynamic</span>
1051           <ul class="toc_section">
1052             <li
1053             ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1054           </ul>
1055         </li>
1056       </ul> <!-- toc_section -->
1057     </li>
1058     <li>
1059       <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1060       <ul class="toc_section">
1061         <li>
1062           <span class="toc_kind_header">dynamic</span>
1063           <ul class="toc_section">
1064             <li
1065             ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1066           </ul>
1067         </li>
1068         <li>
1069           <span class="toc_kind_header">static</span>
1070           <ul class="toc_section">
1071             <li
1072             ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1073           </ul>
1074         </li>
1075       </ul> <!-- toc_section -->
1076     </li>
1077     <li>
1078       <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1079       <ul class="toc_section">
1080         <li>
1081           <span class="toc_kind_header">controls</span>
1082           <ul class="toc_section">
1083             <li
1084             ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1085           </ul>
1086         </li>
1087         <li>
1088           <span class="toc_kind_header">dynamic</span>
1089           <ul class="toc_section">
1090             <li
1091             ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1092           </ul>
1093         </li>
1094         <li>
1095           <span class="toc_kind_header">static</span>
1096           <ul class="toc_section">
1097             <li
1098             ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1099           </ul>
1100         </li>
1101       </ul> <!-- toc_section -->
1102     </li>
1103     <li>
1104       <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1105       <ul class="toc_section">
1106         <li>
1107           <span class="toc_kind_header">static</span>
1108           <ul class="toc_section">
1109             <li
1110             ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1111             <li
1112             ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1113             <li
1114             ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1115             <li
1116             ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1117             <li
1118             ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1119           </ul>
1120         </li>
1121       </ul> <!-- toc_section -->
1122     </li>
1123   </ul>
1124
1125
1126   <h1>Properties</h1>
1127   <table class="properties">
1128
1129     <thead class="thead_dummy">
1130       <tr>
1131         <th class="th_name">Property Name</th>
1132         <th class="th_type">Type</th>
1133         <th class="th_description">Description</th>
1134         <th class="th_units">Units</th>
1135         <th class="th_range">Range</th>
1136         <th class="th_tags">Tags</th>
1137       </tr>
1138     </thead> <!-- so that the first occurrence of thead is not
1139                          above the first occurrence of tr -->
1140 <!-- <namespace name="android"> -->
1141   <tr><td colspan="6" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1142
1143
1144       <tr><td colspan="6" class="kind">controls</td></tr>
1145
1146       <thead class="entries_header">
1147         <tr>
1148           <th class="th_name">Property Name</th>
1149           <th class="th_type">Type</th>
1150           <th class="th_description">Description</th>
1151           <th class="th_units">Units</th>
1152           <th class="th_range">Range</th>
1153           <th class="th_tags">Tags</th>
1154         </tr>
1155       </thead>
1156
1157       <tbody>
1158
1159         
1160
1161         
1162
1163         
1164
1165         
1166
1167                 
1168           <tr class="entry" id="controls_android.colorCorrection.mode">
1169             <td class="entry_name
1170              " rowspan="5">
1171               android.<wbr/>color<wbr/>Correction.<wbr/>mode
1172             </td>
1173             <td class="entry_type">
1174                 <span class="entry_type_name entry_type_name_enum">byte</span>
1175
1176               <span class="entry_type_visibility"> [public]</span>
1177
1178
1179               <span class="entry_type_hwlevel">[full] </span>
1180
1181
1182
1183                 <ul class="entry_type_enum">
1184                   <li>
1185                     <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1186                     <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1187 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1188 <p>All advanced white balance adjustments (not specified
1189 by our white balance pipeline) must be disabled.<wbr/></p>
1190 <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
1191 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1192 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1193                   </li>
1194                   <li>
1195                     <span class="entry_type_enum_name">FAST</span>
1196                     <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1197 capture rate relative to sensor raw output.<wbr/></p>
1198 <p>Advanced white balance adjustments above and beyond
1199 the specified white balance pipeline may be applied.<wbr/></p>
1200 <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
1201 the camera device uses the last frame's AWB values
1202 (or defaults if AWB has never been run).<wbr/></p></span>
1203                   </li>
1204                   <li>
1205                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
1206                     <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1207 quality but the capture rate might be reduced (relative to sensor
1208 raw output rate)</p>
1209 <p>Advanced white balance adjustments above and beyond
1210 the specified white balance pipeline may be applied.<wbr/></p>
1211 <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
1212 the camera device uses the last frame's AWB values
1213 (or defaults if AWB has never been run).<wbr/></p></span>
1214                   </li>
1215                 </ul>
1216
1217             </td> <!-- entry_type -->
1218
1219             <td class="entry_description">
1220               <p>The mode control selects how the image data is converted from the
1221 sensor's native color into linear sRGB color.<wbr/></p>
1222             </td>
1223
1224             <td class="entry_units">
1225             </td>
1226
1227             <td class="entry_range">
1228             </td>
1229
1230             <td class="entry_tags">
1231             </td>
1232
1233           </tr>
1234           <tr class="entries_header">
1235             <th class="th_details" colspan="5">Details</th>
1236           </tr>
1237           <tr class="entry_cont">
1238             <td class="entry_details" colspan="5">
1239               <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
1240 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1241 application controls how the color mapping is performed.<wbr/></p>
1242 <p>We define the expected processing pipeline below.<wbr/> For consistency
1243 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1244 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1245 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1246 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1247 camera device (in the results) and be roughly correct.<wbr/></p>
1248 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1249 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1250 as what was produced by the camera device in the earlier frame.<wbr/></p>
1251 <p>The expected processing pipeline is as follows:</p>
1252 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1253 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1254 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1255 matrix (applied after demosaic).<wbr/></p>
1256 <p>The 4-channel white-balance gains are defined as:</p>
1257 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1258 </code></pre>
1259 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1260 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1261 These may be identical for a given camera device implementation; if
1262 the camera device does not support a separate gain for even/<wbr/>odd green
1263 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1264 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1265 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1266 <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 ]
1267 </code></pre>
1268 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1269 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1270 <p>with colors as follows:</p>
1271 <pre><code>r' = I0r + I1g + I2b
1272 g' = I3r + I4g + I5b
1273 b' = I6r + I7g + I8b
1274 </code></pre>
1275 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1276 values are clipped to fit within the range.<wbr/></p>
1277             </td>
1278           </tr>
1279
1280           <tr class="entries_header">
1281             <th class="th_details" colspan="5">HAL Implementation Details</th>
1282           </tr>
1283           <tr class="entry_cont">
1284             <td class="entry_details" colspan="5">
1285               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1286 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1287 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1288 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1289             </td>
1290           </tr>
1291
1292           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1293            <!-- end of entry -->
1294         
1295                 
1296           <tr class="entry" id="controls_android.colorCorrection.transform">
1297             <td class="entry_name
1298              " rowspan="3">
1299               android.<wbr/>color<wbr/>Correction.<wbr/>transform
1300             </td>
1301             <td class="entry_type">
1302                 <span class="entry_type_name">rational</span>
1303                 <span class="entry_type_container">x</span>
1304
1305                 <span class="entry_type_array">
1306                   3 x 3
1307                 </span>
1308               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1309
1310
1311               <span class="entry_type_hwlevel">[full] </span>
1312
1313
1314                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1315
1316
1317             </td> <!-- entry_type -->
1318
1319             <td class="entry_description">
1320               <p>A color transform matrix to use to transform
1321 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1322             </td>
1323
1324             <td class="entry_units">
1325               Unitless scale factors
1326             </td>
1327
1328             <td class="entry_range">
1329             </td>
1330
1331             <td class="entry_tags">
1332             </td>
1333
1334           </tr>
1335           <tr class="entries_header">
1336             <th class="th_details" colspan="5">Details</th>
1337           </tr>
1338           <tr class="entry_cont">
1339             <td class="entry_details" colspan="5">
1340               <p>This matrix is either set by the camera device when the request
1341 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1342 directly by the application in the request when the
1343 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1344 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1345 for precision issues; the final rounded matrix should be reported back
1346 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1347 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1348 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1349 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1350 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1351             </td>
1352           </tr>
1353
1354
1355           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1356            <!-- end of entry -->
1357         
1358                 
1359           <tr class="entry" id="controls_android.colorCorrection.gains">
1360             <td class="entry_name
1361              " rowspan="5">
1362               android.<wbr/>color<wbr/>Correction.<wbr/>gains
1363             </td>
1364             <td class="entry_type">
1365                 <span class="entry_type_name">float</span>
1366                 <span class="entry_type_container">x</span>
1367
1368                 <span class="entry_type_array">
1369                   4
1370                 </span>
1371               <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1372
1373
1374               <span class="entry_type_hwlevel">[full] </span>
1375
1376
1377                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1378
1379
1380             </td> <!-- entry_type -->
1381
1382             <td class="entry_description">
1383               <p>Gains applying to Bayer raw color channels for
1384 white-balance.<wbr/></p>
1385             </td>
1386
1387             <td class="entry_units">
1388               Unitless gain factors
1389             </td>
1390
1391             <td class="entry_range">
1392             </td>
1393
1394             <td class="entry_tags">
1395             </td>
1396
1397           </tr>
1398           <tr class="entries_header">
1399             <th class="th_details" colspan="5">Details</th>
1400           </tr>
1401           <tr class="entry_cont">
1402             <td class="entry_details" colspan="5">
1403               <p>These per-channel gains are either set by the camera device
1404 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1405 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1406 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1407 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1408 <p>The gains in the result metadata are the gains actually
1409 applied by the camera device to the current frame.<wbr/></p>
1410 <p>The valid range of gains varies on different devices,<wbr/> but gains
1411 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1412 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1413 this can create color artifacts.<wbr/></p>
1414             </td>
1415           </tr>
1416
1417           <tr class="entries_header">
1418             <th class="th_details" colspan="5">HAL Implementation Details</th>
1419           </tr>
1420           <tr class="entry_cont">
1421             <td class="entry_details" colspan="5">
1422               <p>The 4-channel white-balance gains are defined in
1423 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1424 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1425 is the gain for green pixels on the odd rows.<wbr/></p>
1426 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1427 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1428 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1429             </td>
1430           </tr>
1431
1432           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1433            <!-- end of entry -->
1434         
1435                 
1436           <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1437             <td class="entry_name
1438              " rowspan="3">
1439               android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1440             </td>
1441             <td class="entry_type">
1442                 <span class="entry_type_name entry_type_name_enum">byte</span>
1443
1444               <span class="entry_type_visibility"> [public]</span>
1445
1446
1447               <span class="entry_type_hwlevel">[legacy] </span>
1448
1449
1450
1451                 <ul class="entry_type_enum">
1452                   <li>
1453                     <span class="entry_type_enum_name">OFF</span>
1454                     <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1455                   </li>
1456                   <li>
1457                     <span class="entry_type_enum_name">FAST</span>
1458                     <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1459 relative to sensor raw output.<wbr/></p></span>
1460                   </li>
1461                   <li>
1462                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
1463                     <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1464 reduced (relative to sensor raw output rate)</p></span>
1465                   </li>
1466                 </ul>
1467
1468             </td> <!-- entry_type -->
1469
1470             <td class="entry_description">
1471               <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1472             </td>
1473
1474             <td class="entry_units">
1475             </td>
1476
1477             <td class="entry_range">
1478               <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1479             </td>
1480
1481             <td class="entry_tags">
1482             </td>
1483
1484           </tr>
1485           <tr class="entries_header">
1486             <th class="th_details" colspan="5">Details</th>
1487           </tr>
1488           <tr class="entry_cont">
1489             <td class="entry_details" colspan="5">
1490               <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1491 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1492 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1493 minimize the chromatic artifacts that may occur along the object boundaries in an
1494 image.<wbr/></p>
1495 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1496 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1497 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1498 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1499 applying aberration correction.<wbr/></p>
1500 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1501             </td>
1502           </tr>
1503
1504
1505           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1506            <!-- end of entry -->
1507         
1508         
1509
1510       <!-- end of kind -->
1511       </tbody>
1512       <tr><td colspan="6" class="kind">dynamic</td></tr>
1513
1514       <thead class="entries_header">
1515         <tr>
1516           <th class="th_name">Property Name</th>
1517           <th class="th_type">Type</th>
1518           <th class="th_description">Description</th>
1519           <th class="th_units">Units</th>
1520           <th class="th_range">Range</th>
1521           <th class="th_tags">Tags</th>
1522         </tr>
1523       </thead>
1524
1525       <tbody>
1526
1527         
1528
1529         
1530
1531         
1532
1533         
1534
1535                 
1536           <tr class="entry" id="dynamic_android.colorCorrection.mode">
1537             <td class="entry_name
1538              " rowspan="5">
1539               android.<wbr/>color<wbr/>Correction.<wbr/>mode
1540             </td>
1541             <td class="entry_type">
1542                 <span class="entry_type_name entry_type_name_enum">byte</span>
1543
1544               <span class="entry_type_visibility"> [public]</span>
1545
1546
1547               <span class="entry_type_hwlevel">[full] </span>
1548
1549
1550
1551                 <ul class="entry_type_enum">
1552                   <li>
1553                     <span class="entry_type_enum_name">TRANSFORM_MATRIX</span>
1554                     <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1555 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1556 <p>All advanced white balance adjustments (not specified
1557 by our white balance pipeline) must be disabled.<wbr/></p>
1558 <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
1559 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1560 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1561                   </li>
1562                   <li>
1563                     <span class="entry_type_enum_name">FAST</span>
1564                     <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1565 capture rate relative to sensor raw output.<wbr/></p>
1566 <p>Advanced white balance adjustments above and beyond
1567 the specified white balance pipeline may be applied.<wbr/></p>
1568 <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
1569 the camera device uses the last frame's AWB values
1570 (or defaults if AWB has never been run).<wbr/></p></span>
1571                   </li>
1572                   <li>
1573                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
1574                     <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1575 quality but the capture rate might be reduced (relative to sensor
1576 raw output rate)</p>
1577 <p>Advanced white balance adjustments above and beyond
1578 the specified white balance pipeline may be applied.<wbr/></p>
1579 <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
1580 the camera device uses the last frame's AWB values
1581 (or defaults if AWB has never been run).<wbr/></p></span>
1582                   </li>
1583                 </ul>
1584
1585             </td> <!-- entry_type -->
1586
1587             <td class="entry_description">
1588               <p>The mode control selects how the image data is converted from the
1589 sensor's native color into linear sRGB color.<wbr/></p>
1590             </td>
1591
1592             <td class="entry_units">
1593             </td>
1594
1595             <td class="entry_range">
1596             </td>
1597
1598             <td class="entry_tags">
1599             </td>
1600
1601           </tr>
1602           <tr class="entries_header">
1603             <th class="th_details" colspan="5">Details</th>
1604           </tr>
1605           <tr class="entry_cont">
1606             <td class="entry_details" colspan="5">
1607               <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
1608 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1609 application controls how the color mapping is performed.<wbr/></p>
1610 <p>We define the expected processing pipeline below.<wbr/> For consistency
1611 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1612 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1613 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1614 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1615 camera device (in the results) and be roughly correct.<wbr/></p>
1616 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1617 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1618 as what was produced by the camera device in the earlier frame.<wbr/></p>
1619 <p>The expected processing pipeline is as follows:</p>
1620 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1621 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1622 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1623 matrix (applied after demosaic).<wbr/></p>
1624 <p>The 4-channel white-balance gains are defined as:</p>
1625 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1626 </code></pre>
1627 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1628 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1629 These may be identical for a given camera device implementation; if
1630 the camera device does not support a separate gain for even/<wbr/>odd green
1631 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1632 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1633 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1634 <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 ]
1635 </code></pre>
1636 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1637 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1638 <p>with colors as follows:</p>
1639 <pre><code>r' = I0r + I1g + I2b
1640 g' = I3r + I4g + I5b
1641 b' = I6r + I7g + I8b
1642 </code></pre>
1643 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1644 values are clipped to fit within the range.<wbr/></p>
1645             </td>
1646           </tr>
1647
1648           <tr class="entries_header">
1649             <th class="th_details" colspan="5">HAL Implementation Details</th>
1650           </tr>
1651           <tr class="entry_cont">
1652             <td class="entry_details" colspan="5">
1653               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1654 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1655 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1656 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1657             </td>
1658           </tr>
1659
1660           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1661            <!-- end of entry -->
1662         
1663                 
1664           <tr class="entry" id="dynamic_android.colorCorrection.transform">
1665             <td class="entry_name
1666              " rowspan="3">
1667               android.<wbr/>color<wbr/>Correction.<wbr/>transform
1668             </td>
1669             <td class="entry_type">
1670                 <span class="entry_type_name">rational</span>
1671                 <span class="entry_type_container">x</span>
1672
1673                 <span class="entry_type_array">
1674                   3 x 3
1675                 </span>
1676               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1677
1678
1679               <span class="entry_type_hwlevel">[full] </span>
1680
1681
1682                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1683
1684
1685             </td> <!-- entry_type -->
1686
1687             <td class="entry_description">
1688               <p>A color transform matrix to use to transform
1689 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1690             </td>
1691
1692             <td class="entry_units">
1693               Unitless scale factors
1694             </td>
1695
1696             <td class="entry_range">
1697             </td>
1698
1699             <td class="entry_tags">
1700             </td>
1701
1702           </tr>
1703           <tr class="entries_header">
1704             <th class="th_details" colspan="5">Details</th>
1705           </tr>
1706           <tr class="entry_cont">
1707             <td class="entry_details" colspan="5">
1708               <p>This matrix is either set by the camera device when the request
1709 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1710 directly by the application in the request when the
1711 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1712 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1713 for precision issues; the final rounded matrix should be reported back
1714 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1715 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1716 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1717 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1718 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1719             </td>
1720           </tr>
1721
1722
1723           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1724            <!-- end of entry -->
1725         
1726                 
1727           <tr class="entry" id="dynamic_android.colorCorrection.gains">
1728             <td class="entry_name
1729              " rowspan="5">
1730               android.<wbr/>color<wbr/>Correction.<wbr/>gains
1731             </td>
1732             <td class="entry_type">
1733                 <span class="entry_type_name">float</span>
1734                 <span class="entry_type_container">x</span>
1735
1736                 <span class="entry_type_array">
1737                   4
1738                 </span>
1739               <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1740
1741
1742               <span class="entry_type_hwlevel">[full] </span>
1743
1744
1745                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1746
1747
1748             </td> <!-- entry_type -->
1749
1750             <td class="entry_description">
1751               <p>Gains applying to Bayer raw color channels for
1752 white-balance.<wbr/></p>
1753             </td>
1754
1755             <td class="entry_units">
1756               Unitless gain factors
1757             </td>
1758
1759             <td class="entry_range">
1760             </td>
1761
1762             <td class="entry_tags">
1763             </td>
1764
1765           </tr>
1766           <tr class="entries_header">
1767             <th class="th_details" colspan="5">Details</th>
1768           </tr>
1769           <tr class="entry_cont">
1770             <td class="entry_details" colspan="5">
1771               <p>These per-channel gains are either set by the camera device
1772 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1773 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1774 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1775 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1776 <p>The gains in the result metadata are the gains actually
1777 applied by the camera device to the current frame.<wbr/></p>
1778 <p>The valid range of gains varies on different devices,<wbr/> but gains
1779 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1780 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1781 this can create color artifacts.<wbr/></p>
1782             </td>
1783           </tr>
1784
1785           <tr class="entries_header">
1786             <th class="th_details" colspan="5">HAL Implementation Details</th>
1787           </tr>
1788           <tr class="entry_cont">
1789             <td class="entry_details" colspan="5">
1790               <p>The 4-channel white-balance gains are defined in
1791 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1792 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1793 is the gain for green pixels on the odd rows.<wbr/></p>
1794 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1795 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1796 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1797             </td>
1798           </tr>
1799
1800           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1801            <!-- end of entry -->
1802         
1803                 
1804           <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1805             <td class="entry_name
1806              " rowspan="3">
1807               android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1808             </td>
1809             <td class="entry_type">
1810                 <span class="entry_type_name entry_type_name_enum">byte</span>
1811
1812               <span class="entry_type_visibility"> [public]</span>
1813
1814
1815               <span class="entry_type_hwlevel">[legacy] </span>
1816
1817
1818
1819                 <ul class="entry_type_enum">
1820                   <li>
1821                     <span class="entry_type_enum_name">OFF</span>
1822                     <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1823                   </li>
1824                   <li>
1825                     <span class="entry_type_enum_name">FAST</span>
1826                     <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1827 relative to sensor raw output.<wbr/></p></span>
1828                   </li>
1829                   <li>
1830                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
1831                     <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1832 reduced (relative to sensor raw output rate)</p></span>
1833                   </li>
1834                 </ul>
1835
1836             </td> <!-- entry_type -->
1837
1838             <td class="entry_description">
1839               <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1840             </td>
1841
1842             <td class="entry_units">
1843             </td>
1844
1845             <td class="entry_range">
1846               <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1847             </td>
1848
1849             <td class="entry_tags">
1850             </td>
1851
1852           </tr>
1853           <tr class="entries_header">
1854             <th class="th_details" colspan="5">Details</th>
1855           </tr>
1856           <tr class="entry_cont">
1857             <td class="entry_details" colspan="5">
1858               <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1859 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1860 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1861 minimize the chromatic artifacts that may occur along the object boundaries in an
1862 image.<wbr/></p>
1863 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1864 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1865 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1866 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1867 applying aberration correction.<wbr/></p>
1868 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1869             </td>
1870           </tr>
1871
1872
1873           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1874            <!-- end of entry -->
1875         
1876         
1877
1878       <!-- end of kind -->
1879       </tbody>
1880       <tr><td colspan="6" class="kind">static</td></tr>
1881
1882       <thead class="entries_header">
1883         <tr>
1884           <th class="th_name">Property Name</th>
1885           <th class="th_type">Type</th>
1886           <th class="th_description">Description</th>
1887           <th class="th_units">Units</th>
1888           <th class="th_range">Range</th>
1889           <th class="th_tags">Tags</th>
1890         </tr>
1891       </thead>
1892
1893       <tbody>
1894
1895         
1896
1897         
1898
1899         
1900
1901         
1902
1903                 
1904           <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1905             <td class="entry_name
1906              " rowspan="5">
1907               android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
1908             </td>
1909             <td class="entry_type">
1910                 <span class="entry_type_name">byte</span>
1911                 <span class="entry_type_container">x</span>
1912
1913                 <span class="entry_type_array">
1914                   n
1915                 </span>
1916               <span class="entry_type_visibility"> [public as enumList]</span>
1917
1918
1919               <span class="entry_type_hwlevel">[legacy] </span>
1920
1921
1922                 <div class="entry_type_notes">list of enums</div>
1923
1924
1925             </td> <!-- entry_type -->
1926
1927             <td class="entry_description">
1928               <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
1929 supported by this camera device.<wbr/></p>
1930             </td>
1931
1932             <td class="entry_units">
1933             </td>
1934
1935             <td class="entry_range">
1936               <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
1937             </td>
1938
1939             <td class="entry_tags">
1940               <ul class="entry_tags">
1941                   <li><a href="#tag_V1">V1</a></li>
1942               </ul>
1943             </td>
1944
1945           </tr>
1946           <tr class="entries_header">
1947             <th class="th_details" colspan="5">Details</th>
1948           </tr>
1949           <tr class="entry_cont">
1950             <td class="entry_details" colspan="5">
1951               <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
1952 aberration correction modes are available for a device,<wbr/> this list will solely include
1953 OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
1954 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
1955 OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
1956 <p>LEGACY devices will always only support FAST mode.<wbr/></p>
1957             </td>
1958           </tr>
1959
1960           <tr class="entries_header">
1961             <th class="th_details" colspan="5">HAL Implementation Details</th>
1962           </tr>
1963           <tr class="entry_cont">
1964             <td class="entry_details" colspan="5">
1965               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
1966 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1967 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1968 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
1969             </td>
1970           </tr>
1971
1972           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
1973            <!-- end of entry -->
1974         
1975         
1976
1977       <!-- end of kind -->
1978       </tbody>
1979
1980   <!-- end of section -->
1981   <tr><td colspan="6" id="section_control" class="section">control</td></tr>
1982
1983
1984       <tr><td colspan="6" class="kind">controls</td></tr>
1985
1986       <thead class="entries_header">
1987         <tr>
1988           <th class="th_name">Property Name</th>
1989           <th class="th_type">Type</th>
1990           <th class="th_description">Description</th>
1991           <th class="th_units">Units</th>
1992           <th class="th_range">Range</th>
1993           <th class="th_tags">Tags</th>
1994         </tr>
1995       </thead>
1996
1997       <tbody>
1998
1999         
2000
2001         
2002
2003         
2004
2005         
2006
2007                 
2008           <tr class="entry" id="controls_android.control.aeAntibandingMode">
2009             <td class="entry_name
2010              " rowspan="5">
2011               android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2012             </td>
2013             <td class="entry_type">
2014                 <span class="entry_type_name entry_type_name_enum">byte</span>
2015
2016               <span class="entry_type_visibility"> [public]</span>
2017
2018
2019               <span class="entry_type_hwlevel">[legacy] </span>
2020
2021
2022
2023                 <ul class="entry_type_enum">
2024                   <li>
2025                     <span class="entry_type_enum_name">OFF</span>
2026                     <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2027 avoid banding problems.<wbr/></p></span>
2028                   </li>
2029                   <li>
2030                     <span class="entry_type_enum_name">50HZ</span>
2031                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2032 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2033                   </li>
2034                   <li>
2035                     <span class="entry_type_enum_name">60HZ</span>
2036                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2037 avoid banding problems with 60Hz illumination
2038 sources.<wbr/></p></span>
2039                   </li>
2040                   <li>
2041                     <span class="entry_type_enum_name">AUTO</span>
2042                     <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2043 antibanding routine to the current illumination
2044 condition.<wbr/> This is the default mode if AUTO is
2045 available on given camera device.<wbr/></p></span>
2046                   </li>
2047                 </ul>
2048
2049             </td> <!-- entry_type -->
2050
2051             <td class="entry_description">
2052               <p>The desired setting for the camera device's auto-exposure
2053 algorithm's antibanding compensation.<wbr/></p>
2054             </td>
2055
2056             <td class="entry_units">
2057             </td>
2058
2059             <td class="entry_range">
2060               <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2061             </td>
2062
2063             <td class="entry_tags">
2064               <ul class="entry_tags">
2065                   <li><a href="#tag_BC">BC</a></li>
2066               </ul>
2067             </td>
2068
2069           </tr>
2070           <tr class="entries_header">
2071             <th class="th_details" colspan="5">Details</th>
2072           </tr>
2073           <tr class="entry_cont">
2074             <td class="entry_details" colspan="5">
2075               <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2076 lights,<wbr/> flicker at the rate of the power supply frequency
2077 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2078 typically not noticeable to a person,<wbr/> it can be visible to
2079 a camera device.<wbr/> If a camera sets its exposure time to the
2080 wrong value,<wbr/> the flicker may become visible in the
2081 viewfinder as flicker or in a final captured image,<wbr/> as a
2082 set of variable-brightness bands across the image.<wbr/></p>
2083 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
2084 include antibanding routines that ensure that the chosen
2085 exposure value will not cause such banding.<wbr/> The choice of
2086 exposure time depends on the rate of flicker,<wbr/> which the
2087 camera device can detect automatically,<wbr/> or the expected
2088 rate can be selected by the application using this
2089 control.<wbr/></p>
2090 <p>A given camera device may not support all of the possible
2091 options for the antibanding mode.<wbr/> The
2092 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2093 the available modes for a given camera device.<wbr/></p>
2094 <p>AUTO mode is the default if it is available on given
2095 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2096 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2097 and 60HZ will be available.<wbr/></p>
2098 <p>If manual exposure control is enabled (by setting
2099 <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/>
2100 then this setting has no effect,<wbr/> and the application must
2101 ensure it selects exposure times that do not cause banding
2102 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2103 the application in this.<wbr/></p>
2104             </td>
2105           </tr>
2106
2107           <tr class="entries_header">
2108             <th class="th_details" colspan="5">HAL Implementation Details</th>
2109           </tr>
2110           <tr class="entry_cont">
2111             <td class="entry_details" colspan="5">
2112               <p>For all capture request templates,<wbr/> this field must be set
2113 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2114 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
2115 60HZ must be available.<wbr/></p>
2116 <p>If manual exposure control is enabled (by setting
2117 <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/>
2118 then the exposure values provided by the application must not be
2119 adjusted for antibanding.<wbr/></p>
2120             </td>
2121           </tr>
2122
2123           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2124            <!-- end of entry -->
2125         
2126                 
2127           <tr class="entry" id="controls_android.control.aeExposureCompensation">
2128             <td class="entry_name
2129              " rowspan="3">
2130               android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2131             </td>
2132             <td class="entry_type">
2133                 <span class="entry_type_name">int32</span>
2134
2135               <span class="entry_type_visibility"> [public]</span>
2136
2137
2138               <span class="entry_type_hwlevel">[legacy] </span>
2139
2140
2141
2142
2143             </td> <!-- entry_type -->
2144
2145             <td class="entry_description">
2146               <p>Adjustment to auto-exposure (AE) target image
2147 brightness.<wbr/></p>
2148             </td>
2149
2150             <td class="entry_units">
2151               Compensation steps
2152             </td>
2153
2154             <td class="entry_range">
2155               <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2156             </td>
2157
2158             <td class="entry_tags">
2159               <ul class="entry_tags">
2160                   <li><a href="#tag_BC">BC</a></li>
2161               </ul>
2162             </td>
2163
2164           </tr>
2165           <tr class="entries_header">
2166             <th class="th_details" colspan="5">Details</th>
2167           </tr>
2168           <tr class="entry_cont">
2169             <td class="entry_details" colspan="5">
2170               <p>The adjustment is measured as a count of steps,<wbr/> with the
2171 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2172 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2173 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2174 will mean an exposure compensation of +2 EV; -3 will mean an
2175 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2176 of image brightness.<wbr/> Note that this control will only be
2177 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2178 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2179 <p>In the event of exposure compensation value being changed,<wbr/> camera device
2180 may take several frames to reach the newly requested exposure target.<wbr/>
2181 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2182 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
2183 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2184 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2185             </td>
2186           </tr>
2187
2188
2189           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2190            <!-- end of entry -->
2191         
2192                 
2193           <tr class="entry" id="controls_android.control.aeLock">
2194             <td class="entry_name
2195              " rowspan="3">
2196               android.<wbr/>control.<wbr/>ae<wbr/>Lock
2197             </td>
2198             <td class="entry_type">
2199                 <span class="entry_type_name entry_type_name_enum">byte</span>
2200
2201               <span class="entry_type_visibility"> [public as boolean]</span>
2202
2203
2204               <span class="entry_type_hwlevel">[legacy] </span>
2205
2206
2207
2208                 <ul class="entry_type_enum">
2209                   <li>
2210                     <span class="entry_type_enum_name">OFF</span>
2211                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2212 is free to update its parameters.<wbr/></p></span>
2213                   </li>
2214                   <li>
2215                     <span class="entry_type_enum_name">ON</span>
2216                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2217 must not update the exposure and sensitivity parameters
2218 while the lock is active.<wbr/></p>
2219 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2220 will still take effect while auto-exposure is locked.<wbr/></p>
2221 <p>Some rare LEGACY devices may not support
2222 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2223                   </li>
2224                 </ul>
2225
2226             </td> <!-- entry_type -->
2227
2228             <td class="entry_description">
2229               <p>Whether auto-exposure (AE) is currently locked to its latest
2230 calculated values.<wbr/></p>
2231             </td>
2232
2233             <td class="entry_units">
2234             </td>
2235
2236             <td class="entry_range">
2237             </td>
2238
2239             <td class="entry_tags">
2240               <ul class="entry_tags">
2241                   <li><a href="#tag_BC">BC</a></li>
2242               </ul>
2243             </td>
2244
2245           </tr>
2246           <tr class="entries_header">
2247             <th class="th_details" colspan="5">Details</th>
2248           </tr>
2249           <tr class="entry_cont">
2250             <td class="entry_details" colspan="5">
2251               <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2252 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2253 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
2254 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2255 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2256 <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
2257 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2258 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2259 when AE is already locked,<wbr/> the camera device will not change the exposure time
2260 (<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>)
2261 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2262 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2263 <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/>
2264 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2265 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2266 the AE if AE is locked by the camera device internally during precapture metering
2267 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2268 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2269 will never succeed in a sequence of preview requests where AE lock is always set
2270 to <code>false</code>.<wbr/></p>
2271 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2272 get locked do not necessarily correspond to the settings that were present in the
2273 latest capture result received from the camera device,<wbr/> since additional captures
2274 and AE updates may have occurred even before the result was sent out.<wbr/> If an
2275 application is switching between automatic and manual control and wishes to eliminate
2276 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2277 <ol>
2278 <li>Starting in auto-AE mode:</li>
2279 <li>Lock AE</li>
2280 <li>Wait for the first result to be output that has the AE locked</li>
2281 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2282 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2283 </ol>
2284 <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>
2285             </td>
2286           </tr>
2287
2288
2289           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2290            <!-- end of entry -->
2291         
2292                 
2293           <tr class="entry" id="controls_android.control.aeMode">
2294             <td class="entry_name
2295              " rowspan="3">
2296               android.<wbr/>control.<wbr/>ae<wbr/>Mode
2297             </td>
2298             <td class="entry_type">
2299                 <span class="entry_type_name entry_type_name_enum">byte</span>
2300
2301               <span class="entry_type_visibility"> [public]</span>
2302
2303
2304               <span class="entry_type_hwlevel">[legacy] </span>
2305
2306
2307
2308                 <ul class="entry_type_enum">
2309                   <li>
2310                     <span class="entry_type_enum_name">OFF</span>
2311                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2312 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2313 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2314 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2315 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2316 a flash unit for this camera device.<wbr/></p>
2317 <p>Note that auto-white balance (AWB) and auto-focus (AF)
2318 behavior is device dependent when AE is in OFF mode.<wbr/>
2319 To have consistent behavior across different devices,<wbr/>
2320 it is recommended to either set AWB and AF to OFF mode
2321 or lock AWB and AF before setting AE to OFF.<wbr/>
2322 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/>
2323 <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>
2324 for more details.<wbr/></p>
2325 <p>LEGACY devices do not support the OFF mode and will
2326 override attempts to use this value to ON.<wbr/></p></span>
2327                   </li>
2328                   <li>
2329                     <span class="entry_type_enum_name">ON</span>
2330                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2331 with no flash control.<wbr/></p>
2332 <p>The application's values for
2333 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2334 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2335 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2336 application has control over the various
2337 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2338                   </li>
2339                   <li>
2340                     <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
2341                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2342 the camera's flash unit,<wbr/> firing it in low-light
2343 conditions.<wbr/></p>
2344 <p>The flash may be fired during a precapture sequence
2345 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2346 may be fired for captures for which the
2347 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2348 STILL_<wbr/>CAPTURE</p></span>
2349                   </li>
2350                   <li>
2351                     <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
2352                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2353 the camera's flash unit,<wbr/> always firing it for still
2354 captures.<wbr/></p>
2355 <p>The flash may be fired during a precapture sequence
2356 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2357 will always be fired for captures for which the
2358 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2359 STILL_<wbr/>CAPTURE</p></span>
2360                   </li>
2361                   <li>
2362                     <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
2363                     <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2364 reduction.<wbr/></p>
2365 <p>If deemed necessary by the camera device,<wbr/> a red eye
2366 reduction flash will fire during the precapture
2367 sequence.<wbr/></p></span>
2368                   </li>
2369                 </ul>
2370
2371             </td> <!-- entry_type -->
2372
2373             <td class="entry_description">
2374               <p>The desired mode for the camera device's
2375 auto-exposure routine.<wbr/></p>
2376             </td>
2377
2378             <td class="entry_units">
2379             </td>
2380
2381             <td class="entry_range">
2382               <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2383             </td>
2384
2385             <td class="entry_tags">
2386               <ul class="entry_tags">
2387                   <li><a href="#tag_BC">BC</a></li>
2388               </ul>
2389             </td>
2390
2391           </tr>
2392           <tr class="entries_header">
2393             <th class="th_details" colspan="5">Details</th>
2394           </tr>
2395           <tr class="entry_cont">
2396             <td class="entry_details" colspan="5">
2397               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2398 AUTO.<wbr/></p>
2399 <p>When set to any of the ON modes,<wbr/> the camera device's
2400 auto-exposure routine is enabled,<wbr/> overriding the
2401 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2402 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2403 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2404 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2405 is selected,<wbr/> the camera device's flash unit controls are
2406 also overridden.<wbr/></p>
2407 <p>The FLASH modes are only available if the camera device
2408 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>
2409 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
2410 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2411 <p>When set to any of the ON modes,<wbr/> the values chosen by the
2412 camera device auto-exposure routine for the overridden
2413 fields for a given capture will be available in its
2414 CaptureResult.<wbr/></p>
2415             </td>
2416           </tr>
2417
2418
2419           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2420            <!-- end of entry -->
2421         
2422                 
2423           <tr class="entry" id="controls_android.control.aeRegions">
2424             <td class="entry_name
2425              " rowspan="5">
2426               android.<wbr/>control.<wbr/>ae<wbr/>Regions
2427             </td>
2428             <td class="entry_type">
2429                 <span class="entry_type_name">int32</span>
2430                 <span class="entry_type_container">x</span>
2431
2432                 <span class="entry_type_array">
2433                   5 x area_count
2434                 </span>
2435               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2436
2437
2438
2439
2440
2441
2442             </td> <!-- entry_type -->
2443
2444             <td class="entry_description">
2445               <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2446             </td>
2447
2448             <td class="entry_units">
2449               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2450             </td>
2451
2452             <td class="entry_range">
2453               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2454 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2455             </td>
2456
2457             <td class="entry_tags">
2458               <ul class="entry_tags">
2459                   <li><a href="#tag_BC">BC</a></li>
2460               </ul>
2461             </td>
2462
2463           </tr>
2464           <tr class="entries_header">
2465             <th class="th_details" colspan="5">Details</th>
2466           </tr>
2467           <tr class="entry_cont">
2468             <td class="entry_details" colspan="5">
2469               <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2470 Otherwise will always be present.<wbr/></p>
2471 <p>The maximum number of regions supported by the device is determined by the value
2472 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2473 <p>The coordinate system is based on the active pixel array,<wbr/>
2474 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2475 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2476 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2477 bottom-right pixel in the active pixel array.<wbr/></p>
2478 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2479 for every pixel in the area.<wbr/> This means that a large metering area
2480 with the same weight as a smaller area will have more effect in
2481 the metering result.<wbr/> Metering areas can partially overlap and the
2482 camera device will add the weights in the overlap region.<wbr/></p>
2483 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2484 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2485 weight is ignored.<wbr/></p>
2486 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2487 camera device.<wbr/></p>
2488 <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
2489 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2490 region and output only the intersection rectangle as the metering region in the result
2491 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
2492 not reported in the result metadata.<wbr/></p>
2493             </td>
2494           </tr>
2495
2496           <tr class="entries_header">
2497             <th class="th_details" colspan="5">HAL Implementation Details</th>
2498           </tr>
2499           <tr class="entry_cont">
2500             <td class="entry_details" colspan="5">
2501               <p>The HAL level representation of MeteringRectangle[] is a
2502 int[5 * area_<wbr/>count].<wbr/>
2503 Every five elements represent a metering region of
2504 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2505 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2506 exclusive on xmax and ymax.<wbr/></p>
2507             </td>
2508           </tr>
2509
2510           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2511            <!-- end of entry -->
2512         
2513                 
2514           <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2515             <td class="entry_name
2516              " rowspan="3">
2517               android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2518             </td>
2519             <td class="entry_type">
2520                 <span class="entry_type_name">int32</span>
2521                 <span class="entry_type_container">x</span>
2522
2523                 <span class="entry_type_array">
2524                   2
2525                 </span>
2526               <span class="entry_type_visibility"> [public as rangeInt]</span>
2527
2528
2529               <span class="entry_type_hwlevel">[legacy] </span>
2530
2531
2532
2533
2534             </td> <!-- entry_type -->
2535
2536             <td class="entry_description">
2537               <p>Range over which the auto-exposure routine can
2538 adjust the capture frame rate to maintain good
2539 exposure.<wbr/></p>
2540             </td>
2541
2542             <td class="entry_units">
2543               Frames per second (FPS)
2544             </td>
2545
2546             <td class="entry_range">
2547               <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>
2548             </td>
2549
2550             <td class="entry_tags">
2551               <ul class="entry_tags">
2552                   <li><a href="#tag_BC">BC</a></li>
2553               </ul>
2554             </td>
2555
2556           </tr>
2557           <tr class="entries_header">
2558             <th class="th_details" colspan="5">Details</th>
2559           </tr>
2560           <tr class="entry_cont">
2561             <td class="entry_details" colspan="5">
2562               <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2563 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2564 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2565             </td>
2566           </tr>
2567
2568
2569           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2570            <!-- end of entry -->
2571         
2572                 
2573           <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2574             <td class="entry_name
2575              " rowspan="3">
2576               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2577             </td>
2578             <td class="entry_type">
2579                 <span class="entry_type_name entry_type_name_enum">byte</span>
2580
2581               <span class="entry_type_visibility"> [public]</span>
2582
2583
2584               <span class="entry_type_hwlevel">[limited] </span>
2585
2586
2587
2588                 <ul class="entry_type_enum">
2589                   <li>
2590                     <span class="entry_type_enum_name">IDLE</span>
2591                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2592                   </li>
2593                   <li>
2594                     <span class="entry_type_enum_name">START</span>
2595                     <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2596 by the camera device.<wbr/></p>
2597 <p>The exact effect of the precapture trigger depends on
2598 the current AE mode and state.<wbr/></p></span>
2599                   </li>
2600                   <li>
2601                     <span class="entry_type_enum_name">CANCEL</span>
2602                     <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2603 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2604 initial state.<wbr/></p></span>
2605                   </li>
2606                 </ul>
2607
2608             </td> <!-- entry_type -->
2609
2610             <td class="entry_description">
2611               <p>Whether the camera device will trigger a precapture
2612 metering sequence when it processes this request.<wbr/></p>
2613             </td>
2614
2615             <td class="entry_units">
2616             </td>
2617
2618             <td class="entry_range">
2619             </td>
2620
2621             <td class="entry_tags">
2622               <ul class="entry_tags">
2623                   <li><a href="#tag_BC">BC</a></li>
2624               </ul>
2625             </td>
2626
2627           </tr>
2628           <tr class="entries_header">
2629             <th class="th_details" colspan="5">Details</th>
2630           </tr>
2631           <tr class="entry_cont">
2632             <td class="entry_details" colspan="5">
2633               <p>This entry is normally set to IDLE,<wbr/> or is not
2634 included at all in the request settings.<wbr/> When included and
2635 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2636 precapture metering sequence.<wbr/></p>
2637 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
2638 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2639 If a precapture metering sequence is already completed,<wbr/> and the camera
2640 device has implicitly locked the AE for subsequent still capture,<wbr/> the
2641 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2642 <p>The precapture sequence should be triggered before starting a
2643 high-quality still capture for final metering decisions to
2644 be made,<wbr/> and for firing pre-capture flash pulses to estimate
2645 scene brightness and required final capture flash power,<wbr/> when
2646 the flash is enabled.<wbr/></p>
2647 <p>Normally,<wbr/> this entry should be set to START for only a
2648 single request,<wbr/> and the application should wait until the
2649 sequence completes before starting a new one.<wbr/></p>
2650 <p>When a precapture metering sequence is finished,<wbr/> the camera device
2651 may lock the auto-exposure routine internally to be able to accurately expose the
2652 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2653 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2654 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2655 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
2656 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
2657 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2658 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2659 internally locked AE if the application doesn't submit a still capture request after
2660 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2661 be used in devices that have earlier API levels.<wbr/></p>
2662 <p>The exact effect of auto-exposure (AE) precapture trigger
2663 depends on the current AE mode and state; see
2664 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2665 details.<wbr/></p>
2666 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2667 capturing a high-resolution JPEG image will automatically trigger a
2668 precapture sequence before the high-resolution capture,<wbr/> including
2669 potentially firing a pre-capture flash.<wbr/></p>
2670             </td>
2671           </tr>
2672
2673
2674           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2675            <!-- end of entry -->
2676         
2677                 
2678           <tr class="entry" id="controls_android.control.afMode">
2679             <td class="entry_name
2680              " rowspan="5">
2681               android.<wbr/>control.<wbr/>af<wbr/>Mode
2682             </td>
2683             <td class="entry_type">
2684                 <span class="entry_type_name entry_type_name_enum">byte</span>
2685
2686               <span class="entry_type_visibility"> [public]</span>
2687
2688
2689               <span class="entry_type_hwlevel">[legacy] </span>
2690
2691
2692
2693                 <ul class="entry_type_enum">
2694                   <li>
2695                     <span class="entry_type_enum_name">OFF</span>
2696                     <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2697 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2698 application.<wbr/></p></span>
2699                   </li>
2700                   <li>
2701                     <span class="entry_type_enum_name">AUTO</span>
2702                     <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2703 <p>In this mode,<wbr/> the lens does not move unless
2704 the autofocus trigger action is called.<wbr/> When that trigger
2705 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2706 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2707 <p>Always supported if lens is not fixed focus.<wbr/></p>
2708 <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
2709 is fixed-focus.<wbr/></p>
2710 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2711 and sets the AF state to INACTIVE.<wbr/></p></span>
2712                   </li>
2713                   <li>
2714                     <span class="entry_type_enum_name">MACRO</span>
2715                     <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2716 <p>In this mode,<wbr/> the lens does not move unless the
2717 autofocus trigger action is called.<wbr/> When that trigger is
2718 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2719 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2720 mode is optimized for focusing on objects very close to
2721 the camera.<wbr/></p>
2722 <p>When that trigger is activated,<wbr/> AF will transition to
2723 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2724 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2725 position to default,<wbr/> and sets the AF state to
2726 INACTIVE.<wbr/></p></span>
2727                   </li>
2728                   <li>
2729                     <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
2730                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2731 position continually to attempt to provide a
2732 constantly-in-focus image stream.<wbr/></p>
2733 <p>The focusing behavior should be suitable for good quality
2734 video recording; typically this means slower focus
2735 movement and no overshoots.<wbr/> When the AF trigger is not
2736 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2737 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2738 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2739 the algorithm should immediately transition into
2740 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2741 lens position until a cancel AF trigger is received.<wbr/></p>
2742 <p>Once cancel is received,<wbr/> the algorithm should transition
2743 back to INACTIVE and resume passive scan.<wbr/> Note that this
2744 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2745 ongoing PASSIVE_<wbr/>SCAN must immediately be
2746 canceled.<wbr/></p></span>
2747                   </li>
2748                   <li>
2749                     <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
2750                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2751 position continually to attempt to provide a
2752 constantly-in-focus image stream.<wbr/></p>
2753 <p>The focusing behavior should be suitable for still image
2754 capture; typically this means focusing as fast as
2755 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2756 algorithm should start in INACTIVE state,<wbr/> and then
2757 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2758 appropriate as it attempts to maintain focus.<wbr/> When the AF
2759 trigger is activated,<wbr/> the algorithm should finish its
2760 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2761 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2762 lens position until a cancel AF trigger is received.<wbr/></p>
2763 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
2764 should transition back to INACTIVE and then act as if it
2765 has just been started.<wbr/></p></span>
2766                   </li>
2767                   <li>
2768                     <span class="entry_type_enum_name">EDOF</span>
2769                     <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2770 <p>The camera device will produce images with an extended
2771 depth of field automatically; no special focusing
2772 operations need to be done before taking a picture.<wbr/></p>
2773 <p>AF triggers are ignored,<wbr/> and the AF state will always be
2774 INACTIVE.<wbr/></p></span>
2775                   </li>
2776                 </ul>
2777
2778             </td> <!-- entry_type -->
2779
2780             <td class="entry_description">
2781               <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2782 mode it is set to.<wbr/></p>
2783             </td>
2784
2785             <td class="entry_units">
2786             </td>
2787
2788             <td class="entry_range">
2789               <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2790             </td>
2791
2792             <td class="entry_tags">
2793               <ul class="entry_tags">
2794                   <li><a href="#tag_BC">BC</a></li>
2795               </ul>
2796             </td>
2797
2798           </tr>
2799           <tr class="entries_header">
2800             <th class="th_details" colspan="5">Details</th>
2801           </tr>
2802           <tr class="entry_cont">
2803             <td class="entry_details" colspan="5">
2804               <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2805 (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
2806 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2807 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
2808 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>
2809 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2810 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2811 in result metadata.<wbr/></p>
2812             </td>
2813           </tr>
2814
2815           <tr class="entries_header">
2816             <th class="th_details" colspan="5">HAL Implementation Details</th>
2817           </tr>
2818           <tr class="entry_cont">
2819             <td class="entry_details" colspan="5">
2820               <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2821 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
2822 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2823 <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
2824 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2825 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2826 the same focal plane remains in focus.<wbr/></p>
2827 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2828 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2829 (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
2830 same lock behavior as above.<wbr/></p>
2831 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2832 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/>
2833 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2834 manual control.<wbr/></p>
2835 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2836 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
2837 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
2838 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
2839 that will arise on camera modules with open-loop VCMs.<wbr/></p>
2840             </td>
2841           </tr>
2842
2843           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2844            <!-- end of entry -->
2845         
2846                 
2847           <tr class="entry" id="controls_android.control.afRegions">
2848             <td class="entry_name
2849              " rowspan="5">
2850               android.<wbr/>control.<wbr/>af<wbr/>Regions
2851             </td>
2852             <td class="entry_type">
2853                 <span class="entry_type_name">int32</span>
2854                 <span class="entry_type_container">x</span>
2855
2856                 <span class="entry_type_array">
2857                   5 x area_count
2858                 </span>
2859               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2860
2861
2862
2863
2864
2865
2866             </td> <!-- entry_type -->
2867
2868             <td class="entry_description">
2869               <p>List of metering areas to use for auto-focus.<wbr/></p>
2870             </td>
2871
2872             <td class="entry_units">
2873               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2874             </td>
2875
2876             <td class="entry_range">
2877               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2878 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2879             </td>
2880
2881             <td class="entry_tags">
2882               <ul class="entry_tags">
2883                   <li><a href="#tag_BC">BC</a></li>
2884               </ul>
2885             </td>
2886
2887           </tr>
2888           <tr class="entries_header">
2889             <th class="th_details" colspan="5">Details</th>
2890           </tr>
2891           <tr class="entry_cont">
2892             <td class="entry_details" colspan="5">
2893               <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
2894 Otherwise will always be present.<wbr/></p>
2895 <p>The maximum number of focus areas supported by the device is determined by the value
2896 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
2897 <p>The coordinate system is based on the active pixel array,<wbr/>
2898 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2899 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2900 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2901 bottom-right pixel in the active pixel array.<wbr/></p>
2902 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2903 for every pixel in the area.<wbr/> This means that a large metering area
2904 with the same weight as a smaller area will have more effect in
2905 the metering result.<wbr/> Metering areas can partially overlap and the
2906 camera device will add the weights in the overlap region.<wbr/></p>
2907 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
2908 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
2909 ignored.<wbr/></p>
2910 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2911 camera device.<wbr/></p>
2912 <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
2913 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2914 region and output only the intersection rectangle as the metering region in the result
2915 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
2916 not reported in the result metadata.<wbr/></p>
2917             </td>
2918           </tr>
2919
2920           <tr class="entries_header">
2921             <th class="th_details" colspan="5">HAL Implementation Details</th>
2922           </tr>
2923           <tr class="entry_cont">
2924             <td class="entry_details" colspan="5">
2925               <p>The HAL level representation of MeteringRectangle[] is a
2926 int[5 * area_<wbr/>count].<wbr/>
2927 Every five elements represent a metering region of
2928 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2929 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2930 exclusive on xmax and ymax.<wbr/></p>
2931             </td>
2932           </tr>
2933
2934           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
2935            <!-- end of entry -->
2936         
2937                 
2938           <tr class="entry" id="controls_android.control.afTrigger">
2939             <td class="entry_name
2940              " rowspan="3">
2941               android.<wbr/>control.<wbr/>af<wbr/>Trigger
2942             </td>
2943             <td class="entry_type">
2944                 <span class="entry_type_name entry_type_name_enum">byte</span>
2945
2946               <span class="entry_type_visibility"> [public]</span>
2947
2948
2949               <span class="entry_type_hwlevel">[legacy] </span>
2950
2951
2952
2953                 <ul class="entry_type_enum">
2954                   <li>
2955                     <span class="entry_type_enum_name">IDLE</span>
2956                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2957                   </li>
2958                   <li>
2959                     <span class="entry_type_enum_name">START</span>
2960                     <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
2961                   </li>
2962                   <li>
2963                     <span class="entry_type_enum_name">CANCEL</span>
2964                     <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
2965 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
2966                   </li>
2967                 </ul>
2968
2969             </td> <!-- entry_type -->
2970
2971             <td class="entry_description">
2972               <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
2973             </td>
2974
2975             <td class="entry_units">
2976             </td>
2977
2978             <td class="entry_range">
2979             </td>
2980
2981             <td class="entry_tags">
2982               <ul class="entry_tags">
2983                   <li><a href="#tag_BC">BC</a></li>
2984               </ul>
2985             </td>
2986
2987           </tr>
2988           <tr class="entries_header">
2989             <th class="th_details" colspan="5">Details</th>
2990           </tr>
2991           <tr class="entry_cont">
2992             <td class="entry_details" colspan="5">
2993               <p>This entry is normally set to IDLE,<wbr/> or is not
2994 included at all in the request settings.<wbr/></p>
2995 <p>When included and set to START,<wbr/> the camera device will trigger the
2996 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
2997 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
2998 and return to its initial AF state.<wbr/></p>
2999 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3000 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3001 START for multiple captures in a row means restarting the AF operation over
3002 and over again.<wbr/></p>
3003 <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>
3004             </td>
3005           </tr>
3006
3007
3008           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3009            <!-- end of entry -->
3010         
3011                 
3012           <tr class="entry" id="controls_android.control.awbLock">
3013             <td class="entry_name
3014              " rowspan="3">
3015               android.<wbr/>control.<wbr/>awb<wbr/>Lock
3016             </td>
3017             <td class="entry_type">
3018                 <span class="entry_type_name entry_type_name_enum">byte</span>
3019
3020               <span class="entry_type_visibility"> [public as boolean]</span>
3021
3022
3023               <span class="entry_type_hwlevel">[legacy] </span>
3024
3025
3026
3027                 <ul class="entry_type_enum">
3028                   <li>
3029                     <span class="entry_type_enum_name">OFF</span>
3030                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3031 algorithm is free to update its parameters if in AUTO
3032 mode.<wbr/></p></span>
3033                   </li>
3034                   <li>
3035                     <span class="entry_type_enum_name">ON</span>
3036                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3037 algorithm will not update its parameters while the lock
3038 is active.<wbr/></p></span>
3039                   </li>
3040                 </ul>
3041
3042             </td> <!-- entry_type -->
3043
3044             <td class="entry_description">
3045               <p>Whether auto-white balance (AWB) is currently locked to its
3046 latest calculated values.<wbr/></p>
3047             </td>
3048
3049             <td class="entry_units">
3050             </td>
3051
3052             <td class="entry_range">
3053             </td>
3054
3055             <td class="entry_tags">
3056               <ul class="entry_tags">
3057                   <li><a href="#tag_BC">BC</a></li>
3058               </ul>
3059             </td>
3060
3061           </tr>
3062           <tr class="entries_header">
3063             <th class="th_details" colspan="5">Details</th>
3064           </tr>
3065           <tr class="entry_cont">
3066             <td class="entry_details" colspan="5">
3067               <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3068 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3069 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3070 get locked do not necessarily correspond to the settings that were present in the
3071 latest capture result received from the camera device,<wbr/> since additional captures
3072 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3073 application is switching between automatic and manual control and wishes to eliminate
3074 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3075 <ol>
3076 <li>Starting in auto-AWB mode:</li>
3077 <li>Lock AWB</li>
3078 <li>Wait for the first result to be output that has the AWB locked</li>
3079 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3080 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3081 </ol>
3082 <p>Note that AWB lock is only meaningful when
3083 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3084 AWB is already fixed to a specific setting.<wbr/></p>
3085 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3086             </td>
3087           </tr>
3088
3089
3090           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3091            <!-- end of entry -->
3092         
3093                 
3094           <tr class="entry" id="controls_android.control.awbMode">
3095             <td class="entry_name
3096              " rowspan="3">
3097               android.<wbr/>control.<wbr/>awb<wbr/>Mode
3098             </td>
3099             <td class="entry_type">
3100                 <span class="entry_type_name entry_type_name_enum">byte</span>
3101
3102               <span class="entry_type_visibility"> [public]</span>
3103
3104
3105               <span class="entry_type_hwlevel">[legacy] </span>
3106
3107
3108
3109                 <ul class="entry_type_enum">
3110                   <li>
3111                     <span class="entry_type_enum_name">OFF</span>
3112                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3113 <p>The application-selected color transform matrix
3114 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3115 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3116 device for manual white balance control.<wbr/></p></span>
3117                   </li>
3118                   <li>
3119                     <span class="entry_type_enum_name">AUTO</span>
3120                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3121 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3122 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3123 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3124 values used by the camera device for the transform and gains
3125 will be available in the capture result for this request.<wbr/></p></span>
3126                   </li>
3127                   <li>
3128                     <span class="entry_type_enum_name">INCANDESCENT</span>
3129                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3130 the camera device uses incandescent light as the assumed scene
3131 illumination for white balance.<wbr/></p>
3132 <p>While the exact white balance transforms are up to the
3133 camera device,<wbr/> they will approximately match the CIE
3134 standard illuminant A.<wbr/></p>
3135 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3136 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3137 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3138 values used by the camera device for the transform and gains
3139 will be available in the capture result for this request.<wbr/></p></span>
3140                   </li>
3141                   <li>
3142                     <span class="entry_type_enum_name">FLUORESCENT</span>
3143                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3144 the camera device uses fluorescent light as the assumed scene
3145 illumination for white balance.<wbr/></p>
3146 <p>While the exact white balance transforms are up to the
3147 camera device,<wbr/> they will approximately match the CIE
3148 standard illuminant F2.<wbr/></p>
3149 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3150 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3151 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3152 values used by the camera device for the transform and gains
3153 will be available in the capture result for this request.<wbr/></p></span>
3154                   </li>
3155                   <li>
3156                     <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
3157                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3158 the camera device uses warm fluorescent light as the assumed scene
3159 illumination for white balance.<wbr/></p>
3160 <p>While the exact white balance transforms are up to the
3161 camera device,<wbr/> they will approximately match the CIE
3162 standard illuminant F4.<wbr/></p>
3163 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3164 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3165 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3166 values used by the camera device for the transform and gains
3167 will be available in the capture result for this request.<wbr/></p></span>
3168                   </li>
3169                   <li>
3170                     <span class="entry_type_enum_name">DAYLIGHT</span>
3171                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3172 the camera device uses daylight light as the assumed scene
3173 illumination for white balance.<wbr/></p>
3174 <p>While the exact white balance transforms are up to the
3175 camera device,<wbr/> they will approximately match the CIE
3176 standard illuminant D65.<wbr/></p>
3177 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3178 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3179 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3180 values used by the camera device for the transform and gains
3181 will be available in the capture result for this request.<wbr/></p></span>
3182                   </li>
3183                   <li>
3184                     <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
3185                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3186 the camera device uses cloudy daylight light as the assumed scene
3187 illumination for white balance.<wbr/></p>
3188 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3189 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3190 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3191 values used by the camera device for the transform and gains
3192 will be available in the capture result for this request.<wbr/></p></span>
3193                   </li>
3194                   <li>
3195                     <span class="entry_type_enum_name">TWILIGHT</span>
3196                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3197 the camera device uses twilight light as the assumed scene
3198 illumination for white balance.<wbr/></p>
3199 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3200 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3201 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3202 values used by the camera device for the transform and gains
3203 will be available in the capture result for this request.<wbr/></p></span>
3204                   </li>
3205                   <li>
3206                     <span class="entry_type_enum_name">SHADE</span>
3207                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3208 the camera device uses shade light as the assumed scene
3209 illumination for white balance.<wbr/></p>
3210 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3211 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3212 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3213 values used by the camera device for the transform and gains
3214 will be available in the capture result for this request.<wbr/></p></span>
3215                   </li>
3216                 </ul>
3217
3218             </td> <!-- entry_type -->
3219
3220             <td class="entry_description">
3221               <p>Whether auto-white balance (AWB) is currently setting the color
3222 transform fields,<wbr/> and what its illumination target
3223 is.<wbr/></p>
3224             </td>
3225
3226             <td class="entry_units">
3227             </td>
3228
3229             <td class="entry_range">
3230               <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3231             </td>
3232
3233             <td class="entry_tags">
3234               <ul class="entry_tags">
3235                   <li><a href="#tag_BC">BC</a></li>
3236               </ul>
3237             </td>
3238
3239           </tr>
3240           <tr class="entries_header">
3241             <th class="th_details" colspan="5">Details</th>
3242           </tr>
3243           <tr class="entry_cont">
3244             <td class="entry_details" colspan="5">
3245               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3246 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3247 routine is enabled,<wbr/> overriding the application's selected
3248 <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
3249 <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>
3250 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3251 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
3252 setting AE mode to OFF.<wbr/></p>
3253 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3254 routine is disabled.<wbr/> The application manually controls the white
3255 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>
3256 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3257 <p>When set to any other modes,<wbr/> the camera device's auto-white
3258 balance routine is disabled.<wbr/> The camera device uses each
3259 particular illumination target for white balance
3260 adjustment.<wbr/> The application's values for
3261 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3262 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3263 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3264             </td>
3265           </tr>
3266
3267
3268           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3269            <!-- end of entry -->
3270         
3271                 
3272           <tr class="entry" id="controls_android.control.awbRegions">
3273             <td class="entry_name
3274              " rowspan="5">
3275               android.<wbr/>control.<wbr/>awb<wbr/>Regions
3276             </td>
3277             <td class="entry_type">
3278                 <span class="entry_type_name">int32</span>
3279                 <span class="entry_type_container">x</span>
3280
3281                 <span class="entry_type_array">
3282                   5 x area_count
3283                 </span>
3284               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3285
3286
3287
3288
3289
3290
3291             </td> <!-- entry_type -->
3292
3293             <td class="entry_description">
3294               <p>List of metering areas to use for auto-white-balance illuminant
3295 estimation.<wbr/></p>
3296             </td>
3297
3298             <td class="entry_units">
3299               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3300             </td>
3301
3302             <td class="entry_range">
3303               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3304 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3305             </td>
3306
3307             <td class="entry_tags">
3308               <ul class="entry_tags">
3309                   <li><a href="#tag_BC">BC</a></li>
3310               </ul>
3311             </td>
3312
3313           </tr>
3314           <tr class="entries_header">
3315             <th class="th_details" colspan="5">Details</th>
3316           </tr>
3317           <tr class="entry_cont">
3318             <td class="entry_details" colspan="5">
3319               <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3320 Otherwise will always be present.<wbr/></p>
3321 <p>The maximum number of regions supported by the device is determined by the value
3322 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3323 <p>The coordinate system is based on the active pixel array,<wbr/>
3324 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3325 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3326 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3327 bottom-right pixel in the active pixel array.<wbr/></p>
3328 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3329 for every pixel in the area.<wbr/> This means that a large metering area
3330 with the same weight as a smaller area will have more effect in
3331 the metering result.<wbr/> Metering areas can partially overlap and the
3332 camera device will add the weights in the overlap region.<wbr/></p>
3333 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3334 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
3335 0 weight is ignored.<wbr/></p>
3336 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3337 camera device.<wbr/></p>
3338 <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
3339 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3340 region and output only the intersection rectangle as the metering region in the result
3341 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3342 not reported in the result metadata.<wbr/></p>
3343             </td>
3344           </tr>
3345
3346           <tr class="entries_header">
3347             <th class="th_details" colspan="5">HAL Implementation Details</th>
3348           </tr>
3349           <tr class="entry_cont">
3350             <td class="entry_details" colspan="5">
3351               <p>The HAL level representation of MeteringRectangle[] is a
3352 int[5 * area_<wbr/>count].<wbr/>
3353 Every five elements represent a metering region of
3354 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3355 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3356 exclusive on xmax and ymax.<wbr/></p>
3357             </td>
3358           </tr>
3359
3360           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3361            <!-- end of entry -->
3362         
3363                 
3364           <tr class="entry" id="controls_android.control.captureIntent">
3365             <td class="entry_name
3366              " rowspan="3">
3367               android.<wbr/>control.<wbr/>capture<wbr/>Intent
3368             </td>
3369             <td class="entry_type">
3370                 <span class="entry_type_name entry_type_name_enum">byte</span>
3371
3372               <span class="entry_type_visibility"> [public]</span>
3373
3374
3375               <span class="entry_type_hwlevel">[legacy] </span>
3376
3377
3378
3379                 <ul class="entry_type_enum">
3380                   <li>
3381                     <span class="entry_type_enum_name">CUSTOM</span>
3382                     <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3383 categories.<wbr/> The camera device will default to preview-like
3384 behavior.<wbr/></p></span>
3385                   </li>
3386                   <li>
3387                     <span class="entry_type_enum_name">PREVIEW</span>
3388                     <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3389 <p>The precapture trigger may be used to start off a metering
3390 w/<wbr/>flash sequence.<wbr/></p></span>
3391                   </li>
3392                   <li>
3393                     <span class="entry_type_enum_name">STILL_CAPTURE</span>
3394                     <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3395 use case.<wbr/></p>
3396 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3397                   </li>
3398                   <li>
3399                     <span class="entry_type_enum_name">VIDEO_RECORD</span>
3400                     <span class="entry_type_enum_notes"><p>This request is for a video recording
3401 use case.<wbr/></p></span>
3402                   </li>
3403                   <li>
3404                     <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
3405                     <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3406 image while recording video) use case.<wbr/></p>
3407 <p>The camera device should take the highest-quality image
3408 possible (given the other settings) without disrupting the
3409 frame rate of video recording.<wbr/>  </p></span>
3410                   </li>
3411                   <li>
3412                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
3413                     <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3414 application will stream full-resolution images and
3415 reprocess one or several later for a final
3416 capture.<wbr/></p></span>
3417                   </li>
3418                   <li>
3419                     <span class="entry_type_enum_name">MANUAL</span>
3420                     <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3421 the applications want to directly control the capture parameters.<wbr/></p>
3422 <p>For example,<wbr/> the application may wish to manually control
3423 <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>
3424                   </li>
3425                 </ul>
3426
3427             </td> <!-- entry_type -->
3428
3429             <td class="entry_description">
3430               <p>Information to the camera device 3A (auto-exposure,<wbr/>
3431 auto-focus,<wbr/> auto-white balance) routines about the purpose
3432 of this capture,<wbr/> to help the camera device to decide optimal 3A
3433 strategy.<wbr/></p>
3434             </td>
3435
3436             <td class="entry_units">
3437             </td>
3438
3439             <td class="entry_range">
3440             </td>
3441
3442             <td class="entry_tags">
3443               <ul class="entry_tags">
3444                   <li><a href="#tag_BC">BC</a></li>
3445               </ul>
3446             </td>
3447
3448           </tr>
3449           <tr class="entries_header">
3450             <th class="th_details" colspan="5">Details</th>
3451           </tr>
3452           <tr class="entry_cont">
3453             <td class="entry_details" colspan="5">
3454               <p>This control (except for MANUAL) is only effective if
3455 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3456 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
3457 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
3458 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
3459 always supported.<wbr/></p>
3460             </td>
3461           </tr>
3462
3463
3464           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3465            <!-- end of entry -->
3466         
3467                 
3468           <tr class="entry" id="controls_android.control.effectMode">
3469             <td class="entry_name
3470              " rowspan="3">
3471               android.<wbr/>control.<wbr/>effect<wbr/>Mode
3472             </td>
3473             <td class="entry_type">
3474                 <span class="entry_type_name entry_type_name_enum">byte</span>
3475
3476               <span class="entry_type_visibility"> [public]</span>
3477
3478
3479               <span class="entry_type_hwlevel">[legacy] </span>
3480
3481
3482
3483                 <ul class="entry_type_enum">
3484                   <li>
3485                     <span class="entry_type_enum_name">OFF</span>
3486                     <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3487                   </li>
3488                   <li>
3489                     <span class="entry_type_enum_name">MONO</span>
3490                     <span class="entry_type_enum_optional">[optional]</span>
3491                     <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3492 a single color.<wbr/></p>
3493 <p>This will typically be grayscale.<wbr/></p></span>
3494                   </li>
3495                   <li>
3496                     <span class="entry_type_enum_name">NEGATIVE</span>
3497                     <span class="entry_type_enum_optional">[optional]</span>
3498                     <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3499 are inverted.<wbr/></p></span>
3500                   </li>
3501                   <li>
3502                     <span class="entry_type_enum_name">SOLARIZE</span>
3503                     <span class="entry_type_enum_optional">[optional]</span>
3504                     <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3505 image is wholly or partially reversed in
3506 tone.<wbr/></p></span>
3507                   </li>
3508                   <li>
3509                     <span class="entry_type_enum_name">SEPIA</span>
3510                     <span class="entry_type_enum_optional">[optional]</span>
3511                     <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3512 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3513                   </li>
3514                   <li>
3515                     <span class="entry_type_enum_name">POSTERIZE</span>
3516                     <span class="entry_type_enum_optional">[optional]</span>
3517                     <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3518 discrete regions of tone rather than a continuous
3519 gradient of tones.<wbr/></p></span>
3520                   </li>
3521                   <li>
3522                     <span class="entry_type_enum_name">WHITEBOARD</span>
3523                     <span class="entry_type_enum_optional">[optional]</span>
3524                     <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3525 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3526                   </li>
3527                   <li>
3528                     <span class="entry_type_enum_name">BLACKBOARD</span>
3529                     <span class="entry_type_enum_optional">[optional]</span>
3530                     <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3531 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3532                   </li>
3533                   <li>
3534                     <span class="entry_type_enum_name">AQUA</span>
3535                     <span class="entry_type_enum_optional">[optional]</span>
3536                     <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3537                   </li>
3538                 </ul>
3539
3540             </td> <!-- entry_type -->
3541
3542             <td class="entry_description">
3543               <p>A special color effect to apply.<wbr/></p>
3544             </td>
3545
3546             <td class="entry_units">
3547             </td>
3548
3549             <td class="entry_range">
3550               <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3551             </td>
3552
3553             <td class="entry_tags">
3554               <ul class="entry_tags">
3555                   <li><a href="#tag_BC">BC</a></li>
3556               </ul>
3557             </td>
3558
3559           </tr>
3560           <tr class="entries_header">
3561             <th class="th_details" colspan="5">Details</th>
3562           </tr>
3563           <tr class="entry_cont">
3564             <td class="entry_details" colspan="5">
3565               <p>When this mode is set,<wbr/> a color effect will be applied
3566 to images produced by the camera device.<wbr/> The interpretation
3567 and implementation of these color effects is left to the
3568 implementor of the camera device,<wbr/> and should not be
3569 depended on to be consistent (or present) across all
3570 devices.<wbr/></p>
3571             </td>
3572           </tr>
3573
3574
3575           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3576            <!-- end of entry -->
3577         
3578                 
3579           <tr class="entry" id="controls_android.control.mode">
3580             <td class="entry_name
3581              " rowspan="3">
3582               android.<wbr/>control.<wbr/>mode
3583             </td>
3584             <td class="entry_type">
3585                 <span class="entry_type_name entry_type_name_enum">byte</span>
3586
3587               <span class="entry_type_visibility"> [public]</span>
3588
3589
3590               <span class="entry_type_hwlevel">[legacy] </span>
3591
3592
3593
3594                 <ul class="entry_type_enum">
3595                   <li>
3596                     <span class="entry_type_enum_name">OFF</span>
3597                     <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3598 <p>All control by the device's metering and focusing (3A)
3599 routines is disabled,<wbr/> and no other settings in
3600 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3601 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3602 device to select post-processing values for processing
3603 blocks that do not allow for manual control,<wbr/> or are not
3604 exposed by the camera API.<wbr/></p>
3605 <p>However,<wbr/> the camera device's 3A routines may continue to
3606 collect statistics and update their internal state so that
3607 when control is switched to AUTO mode,<wbr/> good control values
3608 can be immediately applied.<wbr/></p></span>
3609                   </li>
3610                   <li>
3611                     <span class="entry_type_enum_name">AUTO</span>
3612                     <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3613 <p>Manual control of capture parameters is disabled.<wbr/> All
3614 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3615 effect.<wbr/></p></span>
3616                   </li>
3617                   <li>
3618                     <span class="entry_type_enum_name">USE_SCENE_MODE</span>
3619                     <span class="entry_type_enum_optional">[optional]</span>
3620                     <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3621 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3622 control.<wbr/>afMode controls; the camera device will ignore
3623 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3624 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still
3625 active.<wbr/>  This setting can only be used if scene mode is
3626 supported (i.<wbr/>e.<wbr/> <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3627 contain some modes other than DISABLED).<wbr/></p></span>
3628                   </li>
3629                   <li>
3630                     <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
3631                     <span class="entry_type_enum_optional">[optional]</span>
3632                     <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3633 used by camera device background auto-exposure,<wbr/> auto-white balance and
3634 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3635 <p>Specifically,<wbr/> the 3A routines are locked to the last
3636 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3637 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3638 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3639 discarded by the camera device.<wbr/></p></span>
3640                   </li>
3641                 </ul>
3642
3643             </td> <!-- entry_type -->
3644
3645             <td class="entry_description">
3646               <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3647 routines.<wbr/></p>
3648             </td>
3649
3650             <td class="entry_units">
3651             </td>
3652
3653             <td class="entry_range">
3654               <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3655             </td>
3656
3657             <td class="entry_tags">
3658               <ul class="entry_tags">
3659                   <li><a href="#tag_BC">BC</a></li>
3660               </ul>
3661             </td>
3662
3663           </tr>
3664           <tr class="entries_header">
3665             <th class="th_details" colspan="5">Details</th>
3666           </tr>
3667           <tr class="entry_cont">
3668             <td class="entry_details" colspan="5">
3669               <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3670 by the camera device is disabled.<wbr/> The application must set the fields for
3671 capture parameters itself.<wbr/></p>
3672 <p>When set to AUTO,<wbr/> the individual algorithm controls in
3673 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>
3674 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3675 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
3676 one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
3677 as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
3678 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
3679 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3680 is that this frame will not be used by camera device background 3A statistics
3681 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3682 where the application doesn't want a 3A manual control capture to affect
3683 the subsequent auto 3A capture results.<wbr/></p>
3684             </td>
3685           </tr>
3686
3687
3688           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3689            <!-- end of entry -->
3690         
3691                 
3692           <tr class="entry" id="controls_android.control.sceneMode">
3693             <td class="entry_name
3694              " rowspan="5">
3695               android.<wbr/>control.<wbr/>scene<wbr/>Mode
3696             </td>
3697             <td class="entry_type">
3698                 <span class="entry_type_name entry_type_name_enum">byte</span>
3699
3700               <span class="entry_type_visibility"> [public]</span>
3701
3702
3703               <span class="entry_type_hwlevel">[legacy] </span>
3704
3705
3706
3707                 <ul class="entry_type_enum">
3708                   <li>
3709                     <span class="entry_type_enum_name">DISABLED</span>
3710                     <span class="entry_type_enum_value">0</span>
3711                     <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3712                   </li>
3713                   <li>
3714                     <span class="entry_type_enum_name">FACE_PRIORITY</span>
3715                     <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3716 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3717 auto-exposure routines.<wbr/></p>
3718 <p>If face detection statistics are disabled
3719 (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/>
3720 this should still operate correctly (but will not return
3721 face detection statistics to the framework).<wbr/></p>
3722 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3723 <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>
3724 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3725                   </li>
3726                   <li>
3727                     <span class="entry_type_enum_name">ACTION</span>
3728                     <span class="entry_type_enum_optional">[optional]</span>
3729                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3730 <p>Similar to SPORTS.<wbr/></p></span>
3731                   </li>
3732                   <li>
3733                     <span class="entry_type_enum_name">PORTRAIT</span>
3734                     <span class="entry_type_enum_optional">[optional]</span>
3735                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3736                   </li>
3737                   <li>
3738                     <span class="entry_type_enum_name">LANDSCAPE</span>
3739                     <span class="entry_type_enum_optional">[optional]</span>
3740                     <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3741                   </li>
3742                   <li>
3743                     <span class="entry_type_enum_name">NIGHT</span>
3744                     <span class="entry_type_enum_optional">[optional]</span>
3745                     <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3746                   </li>
3747                   <li>
3748                     <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
3749                     <span class="entry_type_enum_optional">[optional]</span>
3750                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3751 settings.<wbr/></p></span>
3752                   </li>
3753                   <li>
3754                     <span class="entry_type_enum_name">THEATRE</span>
3755                     <span class="entry_type_enum_optional">[optional]</span>
3756                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3757 remain off.<wbr/></p></span>
3758                   </li>
3759                   <li>
3760                     <span class="entry_type_enum_name">BEACH</span>
3761                     <span class="entry_type_enum_optional">[optional]</span>
3762                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3763                   </li>
3764                   <li>
3765                     <span class="entry_type_enum_name">SNOW</span>
3766                     <span class="entry_type_enum_optional">[optional]</span>
3767                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3768                   </li>
3769                   <li>
3770                     <span class="entry_type_enum_name">SUNSET</span>
3771                     <span class="entry_type_enum_optional">[optional]</span>
3772                     <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3773                   </li>
3774                   <li>
3775                     <span class="entry_type_enum_name">STEADYPHOTO</span>
3776                     <span class="entry_type_enum_optional">[optional]</span>
3777                     <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
3778 device motion (for example: due to hand shake).<wbr/></p></span>
3779                   </li>
3780                   <li>
3781                     <span class="entry_type_enum_name">FIREWORKS</span>
3782                     <span class="entry_type_enum_optional">[optional]</span>
3783                     <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
3784                   </li>
3785                   <li>
3786                     <span class="entry_type_enum_name">SPORTS</span>
3787                     <span class="entry_type_enum_optional">[optional]</span>
3788                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
3789 <p>Similar to ACTION.<wbr/></p></span>
3790                   </li>
3791                   <li>
3792                     <span class="entry_type_enum_name">PARTY</span>
3793                     <span class="entry_type_enum_optional">[optional]</span>
3794                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
3795 people.<wbr/></p></span>
3796                   </li>
3797                   <li>
3798                     <span class="entry_type_enum_name">CANDLELIGHT</span>
3799                     <span class="entry_type_enum_optional">[optional]</span>
3800                     <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
3801 is a flame.<wbr/></p></span>
3802                   </li>
3803                   <li>
3804                     <span class="entry_type_enum_name">BARCODE</span>
3805                     <span class="entry_type_enum_optional">[optional]</span>
3806                     <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
3807 for use by camera applications that wish to read the
3808 barcode value.<wbr/></p></span>
3809                   </li>
3810                   <li>
3811                     <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
3812                     <span class="entry_type_enum_optional">[optional]</span>
3813                     <span class="entry_type_enum_notes"><p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
3814 <p>The supported high speed video sizes and fps ranges are specified in
3815 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
3816 output frame rates,<wbr/> the application is only allowed to select video size
3817 and fps range combinations listed in this static metadata.<wbr/> The fps range
3818 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
3819 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
3820 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
3821 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
3822 and post-processing parameters is possible.<wbr/> All other controls operate the
3823 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
3824 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
3825 <ul>
3826 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
3827 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
3828 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
3829 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
3830 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
3831 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
3832 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
3833 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
3834 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
3835 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
3836 </ul>
3837 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
3838 <ul>
3839 <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>
3840 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
3841 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
3842 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
3843 </ul>
3844 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
3845 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
3846 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
3847 the application need check if the video encoder is capable of supporting the
3848 high frame rate for a given video size,<wbr/> or it will end up with lower recording
3849 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
3850 rate will be bounded by the screen refresh rate.<wbr/></p>
3851 <p>The camera device will only support up to 2 output high speed streams
3852 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
3853 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
3854 <ul>
3855 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
3856 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
3857 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>
3858 <li>The stream sizes are selected from the sizes reported by
3859 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
3860 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
3861 </ul>
3862 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
3863 <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/>
3864 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
3865 and the returned capture result metadata will give the fps range choosen
3866 by the camera device.<wbr/></p>
3867 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
3868 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
3869 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
3870                   </li>
3871                   <li>
3872                     <span class="entry_type_enum_name">HDR</span>
3873                     <span class="entry_type_enum_optional">[optional]</span>
3874                     <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
3875 <p>In this scene mode,<wbr/> the camera device captures images
3876 that keep a larger range of scene illumination levels
3877 visible in the final image.<wbr/> For example,<wbr/> when taking a
3878 picture of a object in front of a bright window,<wbr/> both
3879 the object and the scene through the window may be
3880 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
3881 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
3882 HDR mode generally takes much longer to capture a single
3883 image,<wbr/> has no user control,<wbr/> and may have other artifacts
3884 depending on the HDR method used.<wbr/></p>
3885 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
3886 than regular captures.<wbr/></p>
3887 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
3888 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
3889 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
3890 using a high dynamic range capture technique.<wbr/>  On LEGACY
3891 devices,<wbr/> captures that target a JPEG-format output will
3892 be captured with HDR,<wbr/> and the capture intent is not
3893 relevant.<wbr/></p>
3894 <p>The HDR capture may involve the device capturing a burst
3895 of images internally and combining them into one,<wbr/> or it
3896 may involve the device using specialized high dynamic
3897 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
3898 produced in response to a capture request submitted
3899 while in HDR mode.<wbr/></p>
3900 <p>Since substantial post-processing is generally needed to
3901 produce an HDR image,<wbr/> only YUV and JPEG outputs are
3902 supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only
3903 JPEG outputs are supported for LEGACY HDR
3904 captures.<wbr/> Using a RAW output for HDR capture is not
3905 supported.<wbr/></p></span>
3906                   </li>
3907                 </ul>
3908
3909             </td> <!-- entry_type -->
3910
3911             <td class="entry_description">
3912               <p>Control for which scene mode is currently active.<wbr/></p>
3913             </td>
3914
3915             <td class="entry_units">
3916             </td>
3917
3918             <td class="entry_range">
3919               <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
3920             </td>
3921
3922             <td class="entry_tags">
3923               <ul class="entry_tags">
3924                   <li><a href="#tag_BC">BC</a></li>
3925               </ul>
3926             </td>
3927
3928           </tr>
3929           <tr class="entries_header">
3930             <th class="th_details" colspan="5">Details</th>
3931           </tr>
3932           <tr class="entry_cont">
3933             <td class="entry_details" colspan="5">
3934               <p>Scene modes are custom camera modes optimized for a certain set of conditions and
3935 capture settings.<wbr/></p>
3936 <p>This is the mode that that is active when
3937 <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/>
3938 these modes will disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3939 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> while in use.<wbr/></p>
3940 <p>The interpretation and implementation of these scene modes is left
3941 to the implementor of the camera device.<wbr/> Their behavior will not be
3942 consistent across all devices,<wbr/> and any given device may only implement
3943 a subset of these modes.<wbr/></p>
3944             </td>
3945           </tr>
3946
3947           <tr class="entries_header">
3948             <th class="th_details" colspan="5">HAL Implementation Details</th>
3949           </tr>
3950           <tr class="entry_cont">
3951             <td class="entry_details" colspan="5">
3952               <p>HAL implementations that include scene modes are expected to provide
3953 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3954 <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
3955 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
3956 <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/>
3957 the HAL must list supported video size and fps range in
3958 <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/>
3959 1280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
3960 mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
3961 requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/></p>
3962             </td>
3963           </tr>
3964
3965           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
3966            <!-- end of entry -->
3967         
3968                 
3969           <tr class="entry" id="controls_android.control.videoStabilizationMode">
3970             <td class="entry_name
3971              " rowspan="3">
3972               android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
3973             </td>
3974             <td class="entry_type">
3975                 <span class="entry_type_name entry_type_name_enum">byte</span>
3976
3977               <span class="entry_type_visibility"> [public]</span>
3978
3979
3980               <span class="entry_type_hwlevel">[legacy] </span>
3981
3982
3983
3984                 <ul class="entry_type_enum">
3985                   <li>
3986                     <span class="entry_type_enum_name">OFF</span>
3987                     <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
3988                   </li>
3989                   <li>
3990                     <span class="entry_type_enum_name">ON</span>
3991                     <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
3992                   </li>
3993                 </ul>
3994
3995             </td> <!-- entry_type -->
3996
3997             <td class="entry_description">
3998               <p>Whether video stabilization is
3999 active.<wbr/></p>
4000             </td>
4001
4002             <td class="entry_units">
4003             </td>
4004
4005             <td class="entry_range">
4006             </td>
4007
4008             <td class="entry_tags">
4009               <ul class="entry_tags">
4010                   <li><a href="#tag_BC">BC</a></li>
4011               </ul>
4012             </td>
4013
4014           </tr>
4015           <tr class="entries_header">
4016             <th class="th_details" colspan="5">Details</th>
4017           </tr>
4018           <tr class="entry_cont">
4019             <td class="entry_details" colspan="5">
4020               <p>Video stabilization automatically translates and scales images from
4021 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4022 <p>If enabled,<wbr/> video stabilization can modify the
4023 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4024 <p>Switching between different video stabilization modes may take several
4025 frames to initialize,<wbr/> the camera device will report the current mode
4026 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4027 the video stabilization modes in the first several capture results may
4028 still be "OFF",<wbr/> and it will become "ON" when the initialization is
4029 done.<wbr/></p>
4030 <p>If a camera device supports both this mode and OIS
4031 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4032 produce undesirable interaction,<wbr/> so it is recommended not to enable
4033 both at the same time.<wbr/></p>
4034             </td>
4035           </tr>
4036
4037
4038           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4039            <!-- end of entry -->
4040         
4041         
4042
4043       <!-- end of kind -->
4044       </tbody>
4045       <tr><td colspan="6" class="kind">static</td></tr>
4046
4047       <thead class="entries_header">
4048         <tr>
4049           <th class="th_name">Property Name</th>
4050           <th class="th_type">Type</th>
4051           <th class="th_description">Description</th>
4052           <th class="th_units">Units</th>
4053           <th class="th_range">Range</th>
4054           <th class="th_tags">Tags</th>
4055         </tr>
4056       </thead>
4057
4058       <tbody>
4059
4060         
4061
4062         
4063
4064         
4065
4066         
4067
4068                 
4069           <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4070             <td class="entry_name
4071              " rowspan="3">
4072               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4073             </td>
4074             <td class="entry_type">
4075                 <span class="entry_type_name">byte</span>
4076                 <span class="entry_type_container">x</span>
4077
4078                 <span class="entry_type_array">
4079                   n
4080                 </span>
4081               <span class="entry_type_visibility"> [public as enumList]</span>
4082
4083
4084               <span class="entry_type_hwlevel">[legacy] </span>
4085
4086
4087                 <div class="entry_type_notes">list of enums</div>
4088
4089
4090             </td> <!-- entry_type -->
4091
4092             <td class="entry_description">
4093               <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
4094 supported by this camera device.<wbr/></p>
4095             </td>
4096
4097             <td class="entry_units">
4098             </td>
4099
4100             <td class="entry_range">
4101               <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4102             </td>
4103
4104             <td class="entry_tags">
4105               <ul class="entry_tags">
4106                   <li><a href="#tag_BC">BC</a></li>
4107               </ul>
4108             </td>
4109
4110           </tr>
4111           <tr class="entries_header">
4112             <th class="th_details" colspan="5">Details</th>
4113           </tr>
4114           <tr class="entry_cont">
4115             <td class="entry_details" colspan="5">
4116               <p>Not all of the auto-exposure anti-banding modes may be
4117 supported by a given camera device.<wbr/> This field lists the
4118 valid anti-banding modes that the application may request
4119 for this camera device with the
4120 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4121             </td>
4122           </tr>
4123
4124
4125           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4126            <!-- end of entry -->
4127         
4128                 
4129           <tr class="entry" id="static_android.control.aeAvailableModes">
4130             <td class="entry_name
4131              " rowspan="3">
4132               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4133             </td>
4134             <td class="entry_type">
4135                 <span class="entry_type_name">byte</span>
4136                 <span class="entry_type_container">x</span>
4137
4138                 <span class="entry_type_array">
4139                   n
4140                 </span>
4141               <span class="entry_type_visibility"> [public as enumList]</span>
4142
4143
4144               <span class="entry_type_hwlevel">[legacy] </span>
4145
4146
4147                 <div class="entry_type_notes">list of enums</div>
4148
4149
4150             </td> <!-- entry_type -->
4151
4152             <td class="entry_description">
4153               <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
4154 device.<wbr/></p>
4155             </td>
4156
4157             <td class="entry_units">
4158             </td>
4159
4160             <td class="entry_range">
4161               <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4162             </td>
4163
4164             <td class="entry_tags">
4165               <ul class="entry_tags">
4166                   <li><a href="#tag_BC">BC</a></li>
4167               </ul>
4168             </td>
4169
4170           </tr>
4171           <tr class="entries_header">
4172             <th class="th_details" colspan="5">Details</th>
4173           </tr>
4174           <tr class="entry_cont">
4175             <td class="entry_details" colspan="5">
4176               <p>Not all the auto-exposure modes may be supported by a
4177 given camera device,<wbr/> especially if no flash unit is
4178 available.<wbr/> This entry lists the valid modes for
4179 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4180 <p>All camera devices support ON,<wbr/> and all camera devices with flash
4181 units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4182 <p>FULL mode camera devices always support OFF mode,<wbr/>
4183 which enables application control of camera exposure time,<wbr/>
4184 sensitivity,<wbr/> and frame duration.<wbr/></p>
4185 <p>LEGACY mode camera devices never support OFF mode.<wbr/>
4186 LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4187 capability.<wbr/></p>
4188             </td>
4189           </tr>
4190
4191
4192           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4193            <!-- end of entry -->
4194         
4195                 
4196           <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4197             <td class="entry_name
4198              " rowspan="3">
4199               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4200             </td>
4201             <td class="entry_type">
4202                 <span class="entry_type_name">int32</span>
4203                 <span class="entry_type_container">x</span>
4204
4205                 <span class="entry_type_array">
4206                   2 x n
4207                 </span>
4208               <span class="entry_type_visibility"> [public as rangeInt]</span>
4209
4210
4211               <span class="entry_type_hwlevel">[legacy] </span>
4212
4213
4214                 <div class="entry_type_notes">list of pairs of frame rates</div>
4215
4216
4217             </td> <!-- entry_type -->
4218
4219             <td class="entry_description">
4220               <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
4221 this camera device.<wbr/></p>
4222             </td>
4223
4224             <td class="entry_units">
4225               Frames per second (FPS)
4226             </td>
4227
4228             <td class="entry_range">
4229             </td>
4230
4231             <td class="entry_tags">
4232               <ul class="entry_tags">
4233                   <li><a href="#tag_BC">BC</a></li>
4234               </ul>
4235             </td>
4236
4237           </tr>
4238           <tr class="entries_header">
4239             <th class="th_details" colspan="5">Details</th>
4240           </tr>
4241           <tr class="entry_cont">
4242             <td class="entry_details" colspan="5">
4243               <p>For devices at the LIMITED level or above,<wbr/> this list will include at least (30,<wbr/> 30) for
4244 constant-framerate recording.<wbr/></p>
4245             </td>
4246           </tr>
4247
4248
4249           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4250            <!-- end of entry -->
4251         
4252                 
4253           <tr class="entry" id="static_android.control.aeCompensationRange">
4254             <td class="entry_name
4255              " rowspan="1">
4256               android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4257             </td>
4258             <td class="entry_type">
4259                 <span class="entry_type_name">int32</span>
4260                 <span class="entry_type_container">x</span>
4261
4262                 <span class="entry_type_array">
4263                   2
4264                 </span>
4265               <span class="entry_type_visibility"> [public as rangeInt]</span>
4266
4267
4268               <span class="entry_type_hwlevel">[legacy] </span>
4269
4270
4271
4272
4273             </td> <!-- entry_type -->
4274
4275             <td class="entry_description">
4276               <p>Maximum and minimum exposure compensation values for
4277 <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/>
4278 that are supported by this camera device.<wbr/></p>
4279             </td>
4280
4281             <td class="entry_units">
4282             </td>
4283
4284             <td class="entry_range">
4285               <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4286 <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4287 compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4288 <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>
4289 <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>
4290 <p>LEGACY devices may support a smaller range than this.<wbr/></p>
4291             </td>
4292
4293             <td class="entry_tags">
4294               <ul class="entry_tags">
4295                   <li><a href="#tag_BC">BC</a></li>
4296               </ul>
4297             </td>
4298
4299           </tr>
4300
4301
4302           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4303            <!-- end of entry -->
4304         
4305                 
4306           <tr class="entry" id="static_android.control.aeCompensationStep">
4307             <td class="entry_name
4308              " rowspan="5">
4309               android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4310             </td>
4311             <td class="entry_type">
4312                 <span class="entry_type_name">rational</span>
4313
4314               <span class="entry_type_visibility"> [public]</span>
4315
4316
4317               <span class="entry_type_hwlevel">[legacy] </span>
4318
4319
4320
4321
4322             </td> <!-- entry_type -->
4323
4324             <td class="entry_description">
4325               <p>Smallest step by which the exposure compensation
4326 can be changed.<wbr/></p>
4327             </td>
4328
4329             <td class="entry_units">
4330               Exposure Value (EV)
4331             </td>
4332
4333             <td class="entry_range">
4334             </td>
4335
4336             <td class="entry_tags">
4337               <ul class="entry_tags">
4338                   <li><a href="#tag_BC">BC</a></li>
4339               </ul>
4340             </td>
4341
4342           </tr>
4343           <tr class="entries_header">
4344             <th class="th_details" colspan="5">Details</th>
4345           </tr>
4346           <tr class="entry_cont">
4347             <td class="entry_details" colspan="5">
4348               <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
4349 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
4350 that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4351 <p>One unit of EV compensation changes the brightness of the captured image by a factor
4352 of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4353             </td>
4354           </tr>
4355
4356           <tr class="entries_header">
4357             <th class="th_details" colspan="5">HAL Implementation Details</th>
4358           </tr>
4359           <tr class="entry_cont">
4360             <td class="entry_details" colspan="5">
4361               <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4362             </td>
4363           </tr>
4364
4365           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4366            <!-- end of entry -->
4367         
4368                 
4369           <tr class="entry" id="static_android.control.afAvailableModes">
4370             <td class="entry_name
4371              " rowspan="3">
4372               android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4373             </td>
4374             <td class="entry_type">
4375                 <span class="entry_type_name">byte</span>
4376                 <span class="entry_type_container">x</span>
4377
4378                 <span class="entry_type_array">
4379                   n
4380                 </span>
4381               <span class="entry_type_visibility"> [public as enumList]</span>
4382
4383
4384               <span class="entry_type_hwlevel">[legacy] </span>
4385
4386
4387                 <div class="entry_type_notes">List of enums</div>
4388
4389
4390             </td> <!-- entry_type -->
4391
4392             <td class="entry_description">
4393               <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4394 supported by this camera device.<wbr/></p>
4395             </td>
4396
4397             <td class="entry_units">
4398             </td>
4399
4400             <td class="entry_range">
4401               <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4402             </td>
4403
4404             <td class="entry_tags">
4405               <ul class="entry_tags">
4406                   <li><a href="#tag_BC">BC</a></li>
4407               </ul>
4408             </td>
4409
4410           </tr>
4411           <tr class="entries_header">
4412             <th class="th_details" colspan="5">Details</th>
4413           </tr>
4414           <tr class="entry_cont">
4415             <td class="entry_details" colspan="5">
4416               <p>Not all the auto-focus modes may be supported by a
4417 given camera device.<wbr/> This entry lists the valid modes for
4418 <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4419 <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4420 camera devices with adjustable focuser units
4421 (<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>
4422 <p>LEGACY devices will support OFF mode only if they support
4423 focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4424 <code>0.<wbr/>0f</code>).<wbr/></p>
4425             </td>
4426           </tr>
4427
4428
4429           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4430            <!-- end of entry -->
4431         
4432                 
4433           <tr class="entry" id="static_android.control.availableEffects">
4434             <td class="entry_name
4435              " rowspan="3">
4436               android.<wbr/>control.<wbr/>available<wbr/>Effects
4437             </td>
4438             <td class="entry_type">
4439                 <span class="entry_type_name">byte</span>
4440                 <span class="entry_type_container">x</span>
4441
4442                 <span class="entry_type_array">
4443                   n
4444                 </span>
4445               <span class="entry_type_visibility"> [public as enumList]</span>
4446
4447
4448               <span class="entry_type_hwlevel">[legacy] </span>
4449
4450
4451                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4452
4453
4454             </td> <!-- entry_type -->
4455
4456             <td class="entry_description">
4457               <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
4458 device.<wbr/></p>
4459             </td>
4460
4461             <td class="entry_units">
4462             </td>
4463
4464             <td class="entry_range">
4465               <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4466             </td>
4467
4468             <td class="entry_tags">
4469               <ul class="entry_tags">
4470                   <li><a href="#tag_BC">BC</a></li>
4471               </ul>
4472             </td>
4473
4474           </tr>
4475           <tr class="entries_header">
4476             <th class="th_details" colspan="5">Details</th>
4477           </tr>
4478           <tr class="entry_cont">
4479             <td class="entry_details" colspan="5">
4480               <p>This list contains the color effect modes that can be applied to
4481 images produced by the camera device.<wbr/>
4482 Implementations are not expected to be consistent across all devices.<wbr/>
4483 If no color effect modes are available for a device,<wbr/> this will only list
4484 OFF.<wbr/></p>
4485 <p>A color effect will only be applied if
4486 <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
4487 <p>This control has no effect on the operation of other control routines such
4488 as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
4489             </td>
4490           </tr>
4491
4492
4493           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4494            <!-- end of entry -->
4495         
4496                 
4497           <tr class="entry" id="static_android.control.availableSceneModes">
4498             <td class="entry_name
4499              " rowspan="3">
4500               android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
4501             </td>
4502             <td class="entry_type">
4503                 <span class="entry_type_name">byte</span>
4504                 <span class="entry_type_container">x</span>
4505
4506                 <span class="entry_type_array">
4507                   n
4508                 </span>
4509               <span class="entry_type_visibility"> [public as enumList]</span>
4510
4511
4512               <span class="entry_type_hwlevel">[legacy] </span>
4513
4514
4515                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
4516
4517
4518             </td> <!-- entry_type -->
4519
4520             <td class="entry_description">
4521               <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
4522 device.<wbr/></p>
4523             </td>
4524
4525             <td class="entry_units">
4526             </td>
4527
4528             <td class="entry_range">
4529               <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
4530             </td>
4531
4532             <td class="entry_tags">
4533               <ul class="entry_tags">
4534                   <li><a href="#tag_BC">BC</a></li>
4535               </ul>
4536             </td>
4537
4538           </tr>
4539           <tr class="entries_header">
4540             <th class="th_details" colspan="5">Details</th>
4541           </tr>
4542           <tr class="entry_cont">
4543             <td class="entry_details" colspan="5">
4544               <p>This list contains scene modes that can be set for the camera device.<wbr/>
4545 Only scene modes that have been fully implemented for the
4546 camera device may be included here.<wbr/> Implementations are not expected
4547 to be consistent across all devices.<wbr/></p>
4548 <p>If no scene modes are supported by the camera device,<wbr/> this
4549 will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
4550 <p>FACE_<wbr/>PRIORITY is always listed if face detection is
4551 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;
4552 0</code>).<wbr/></p>
4553             </td>
4554           </tr>
4555
4556
4557           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4558            <!-- end of entry -->
4559         
4560                 
4561           <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
4562             <td class="entry_name
4563              " rowspan="3">
4564               android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
4565             </td>
4566             <td class="entry_type">
4567                 <span class="entry_type_name">byte</span>
4568                 <span class="entry_type_container">x</span>
4569
4570                 <span class="entry_type_array">
4571                   n
4572                 </span>
4573               <span class="entry_type_visibility"> [public as enumList]</span>
4574
4575
4576               <span class="entry_type_hwlevel">[legacy] </span>
4577
4578
4579                 <div class="entry_type_notes">List of enums.<wbr/></div>
4580
4581
4582             </td> <!-- entry_type -->
4583
4584             <td class="entry_description">
4585               <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
4586 that are supported by this camera device.<wbr/></p>
4587             </td>
4588
4589             <td class="entry_units">
4590             </td>
4591
4592             <td class="entry_range">
4593               <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
4594             </td>
4595
4596             <td class="entry_tags">
4597               <ul class="entry_tags">
4598                   <li><a href="#tag_BC">BC</a></li>
4599               </ul>
4600             </td>
4601
4602           </tr>
4603           <tr class="entries_header">
4604             <th class="th_details" colspan="5">Details</th>
4605           </tr>
4606           <tr class="entry_cont">
4607             <td class="entry_details" colspan="5">
4608               <p>OFF will always be listed.<wbr/></p>
4609             </td>
4610           </tr>
4611
4612
4613           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4614            <!-- end of entry -->
4615         
4616                 
4617           <tr class="entry" id="static_android.control.awbAvailableModes">
4618             <td class="entry_name
4619              " rowspan="3">
4620               android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
4621             </td>
4622             <td class="entry_type">
4623                 <span class="entry_type_name">byte</span>
4624                 <span class="entry_type_container">x</span>
4625
4626                 <span class="entry_type_array">
4627                   n
4628                 </span>
4629               <span class="entry_type_visibility"> [public as enumList]</span>
4630
4631
4632               <span class="entry_type_hwlevel">[legacy] </span>
4633
4634
4635                 <div class="entry_type_notes">List of enums</div>
4636
4637
4638             </td> <!-- entry_type -->
4639
4640             <td class="entry_description">
4641               <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
4642 camera device.<wbr/></p>
4643             </td>
4644
4645             <td class="entry_units">
4646             </td>
4647
4648             <td class="entry_range">
4649               <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
4650             </td>
4651
4652             <td class="entry_tags">
4653               <ul class="entry_tags">
4654                   <li><a href="#tag_BC">BC</a></li>
4655               </ul>
4656             </td>
4657
4658           </tr>
4659           <tr class="entries_header">
4660             <th class="th_details" colspan="5">Details</th>
4661           </tr>
4662           <tr class="entry_cont">
4663             <td class="entry_details" colspan="5">
4664               <p>Not all the auto-white-balance modes may be supported by a
4665 given camera device.<wbr/> This entry lists the valid modes for
4666 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
4667 <p>All camera devices will support ON mode.<wbr/></p>
4668 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
4669 mode,<wbr/> which enables application control of white balance,<wbr/> by using
4670 <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
4671 mode camera devices.<wbr/></p>
4672             </td>
4673           </tr>
4674
4675
4676           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4677            <!-- end of entry -->
4678         
4679                 
4680           <tr class="entry" id="static_android.control.maxRegions">
4681             <td class="entry_name
4682              " rowspan="1">
4683               android.<wbr/>control.<wbr/>max<wbr/>Regions
4684             </td>
4685             <td class="entry_type">
4686                 <span class="entry_type_name">int32</span>
4687                 <span class="entry_type_container">x</span>
4688
4689                 <span class="entry_type_array">
4690                   3
4691                 </span>
4692               <span class="entry_type_visibility"> [hidden]</span>
4693
4694
4695               <span class="entry_type_hwlevel">[legacy] </span>
4696
4697
4698
4699
4700             </td> <!-- entry_type -->
4701
4702             <td class="entry_description">
4703               <p>List of the maximum number of regions that can be used for metering in
4704 auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
4705 this corresponds to the the maximum number of elements in
4706 <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/>
4707 and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
4708             </td>
4709
4710             <td class="entry_units">
4711             </td>
4712
4713             <td class="entry_range">
4714               <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
4715 this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
4716 <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
4717             </td>
4718
4719             <td class="entry_tags">
4720               <ul class="entry_tags">
4721                   <li><a href="#tag_BC">BC</a></li>
4722               </ul>
4723             </td>
4724
4725           </tr>
4726
4727
4728           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4729            <!-- end of entry -->
4730         
4731                 
4732           <tr class="entry" id="static_android.control.maxRegionsAe">
4733             <td class="entry_name
4734              " rowspan="5">
4735               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
4736             </td>
4737             <td class="entry_type">
4738                 <span class="entry_type_name">int32</span>
4739
4740               <span class="entry_type_visibility"> [public]</span>
4741
4742               <span class="entry_type_synthetic">[synthetic] </span>
4743
4744               <span class="entry_type_hwlevel">[legacy] </span>
4745
4746
4747
4748
4749             </td> <!-- entry_type -->
4750
4751             <td class="entry_description">
4752               <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
4753 routine.<wbr/></p>
4754             </td>
4755
4756             <td class="entry_units">
4757             </td>
4758
4759             <td class="entry_range">
4760               <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
4761 value will be &gt;= 1.<wbr/></p>
4762             </td>
4763
4764             <td class="entry_tags">
4765             </td>
4766
4767           </tr>
4768           <tr class="entries_header">
4769             <th class="th_details" colspan="5">Details</th>
4770           </tr>
4771           <tr class="entry_cont">
4772             <td class="entry_details" colspan="5">
4773               <p>This corresponds to the the maximum allowed number of elements in
4774 <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
4775             </td>
4776           </tr>
4777
4778           <tr class="entries_header">
4779             <th class="th_details" colspan="5">HAL Implementation Details</th>
4780           </tr>
4781           <tr class="entry_cont">
4782             <td class="entry_details" colspan="5">
4783               <p>This entry is private to the framework.<wbr/> Fill in
4784 maxRegions to have this entry be automatically populated.<wbr/></p>
4785             </td>
4786           </tr>
4787
4788           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4789            <!-- end of entry -->
4790         
4791                 
4792           <tr class="entry" id="static_android.control.maxRegionsAwb">
4793             <td class="entry_name
4794              " rowspan="5">
4795               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
4796             </td>
4797             <td class="entry_type">
4798                 <span class="entry_type_name">int32</span>
4799
4800               <span class="entry_type_visibility"> [public]</span>
4801
4802               <span class="entry_type_synthetic">[synthetic] </span>
4803
4804               <span class="entry_type_hwlevel">[legacy] </span>
4805
4806
4807
4808
4809             </td> <!-- entry_type -->
4810
4811             <td class="entry_description">
4812               <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
4813 routine.<wbr/></p>
4814             </td>
4815
4816             <td class="entry_units">
4817             </td>
4818
4819             <td class="entry_range">
4820               <p>Value will be &gt;= 0.<wbr/></p>
4821             </td>
4822
4823             <td class="entry_tags">
4824             </td>
4825
4826           </tr>
4827           <tr class="entries_header">
4828             <th class="th_details" colspan="5">Details</th>
4829           </tr>
4830           <tr class="entry_cont">
4831             <td class="entry_details" colspan="5">
4832               <p>This corresponds to the the maximum allowed number of elements in
4833 <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
4834             </td>
4835           </tr>
4836
4837           <tr class="entries_header">
4838             <th class="th_details" colspan="5">HAL Implementation Details</th>
4839           </tr>
4840           <tr class="entry_cont">
4841             <td class="entry_details" colspan="5">
4842               <p>This entry is private to the framework.<wbr/> Fill in
4843 maxRegions to have this entry be automatically populated.<wbr/></p>
4844             </td>
4845           </tr>
4846
4847           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4848            <!-- end of entry -->
4849         
4850                 
4851           <tr class="entry" id="static_android.control.maxRegionsAf">
4852             <td class="entry_name
4853              " rowspan="5">
4854               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
4855             </td>
4856             <td class="entry_type">
4857                 <span class="entry_type_name">int32</span>
4858
4859               <span class="entry_type_visibility"> [public]</span>
4860
4861               <span class="entry_type_synthetic">[synthetic] </span>
4862
4863               <span class="entry_type_hwlevel">[legacy] </span>
4864
4865
4866
4867
4868             </td> <!-- entry_type -->
4869
4870             <td class="entry_description">
4871               <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
4872             </td>
4873
4874             <td class="entry_units">
4875             </td>
4876
4877             <td class="entry_range">
4878               <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
4879 value will be &gt;= 1.<wbr/></p>
4880             </td>
4881
4882             <td class="entry_tags">
4883             </td>
4884
4885           </tr>
4886           <tr class="entries_header">
4887             <th class="th_details" colspan="5">Details</th>
4888           </tr>
4889           <tr class="entry_cont">
4890             <td class="entry_details" colspan="5">
4891               <p>This corresponds to the the maximum allowed number of elements in
4892 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
4893             </td>
4894           </tr>
4895
4896           <tr class="entries_header">
4897             <th class="th_details" colspan="5">HAL Implementation Details</th>
4898           </tr>
4899           <tr class="entry_cont">
4900             <td class="entry_details" colspan="5">
4901               <p>This entry is private to the framework.<wbr/> Fill in
4902 maxRegions to have this entry be automatically populated.<wbr/></p>
4903             </td>
4904           </tr>
4905
4906           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4907            <!-- end of entry -->
4908         
4909                 
4910           <tr class="entry" id="static_android.control.sceneModeOverrides">
4911             <td class="entry_name
4912              " rowspan="5">
4913               android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
4914             </td>
4915             <td class="entry_type">
4916                 <span class="entry_type_name">byte</span>
4917                 <span class="entry_type_container">x</span>
4918
4919                 <span class="entry_type_array">
4920                   3 x length(availableSceneModes)
4921                 </span>
4922               <span class="entry_type_visibility"> [system]</span>
4923
4924
4925               <span class="entry_type_hwlevel">[limited] </span>
4926
4927
4928
4929
4930             </td> <!-- entry_type -->
4931
4932             <td class="entry_description">
4933               <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
4934 settings to use with each available scene mode.<wbr/></p>
4935             </td>
4936
4937             <td class="entry_units">
4938             </td>
4939
4940             <td class="entry_range">
4941               <p>For each available scene mode,<wbr/> the list must contain three
4942 entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4943 <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
4944 by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
4945 where aeMode has the lowest index position.<wbr/></p>
4946             </td>
4947
4948             <td class="entry_tags">
4949               <ul class="entry_tags">
4950                   <li><a href="#tag_BC">BC</a></li>
4951               </ul>
4952             </td>
4953
4954           </tr>
4955           <tr class="entries_header">
4956             <th class="th_details" colspan="5">Details</th>
4957           </tr>
4958           <tr class="entry_cont">
4959             <td class="entry_details" colspan="5">
4960               <p>When a scene mode is enabled,<wbr/> the camera device is expected
4961 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/>
4962 and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
4963 that scene mode.<wbr/></p>
4964 <p>The order of this list matches that of availableSceneModes,<wbr/>
4965 with 3 entries for each mode.<wbr/>  The overrides listed
4966 for FACE_<wbr/>PRIORITY are ignored,<wbr/> since for that
4967 mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4968 <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
4969 used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
4970 is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY
4971 overrides should be set to 0.<wbr/></p>
4972 <p>For example,<wbr/> if availableSceneModes contains
4973 <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
4974 expects sceneModeOverrides to have 9 entries formatted like:
4975 <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
4976 ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
4977             </td>
4978           </tr>
4979
4980           <tr class="entries_header">
4981             <th class="th_details" colspan="5">HAL Implementation Details</th>
4982           </tr>
4983           <tr class="entry_cont">
4984             <td class="entry_details" colspan="5">
4985               <p>To maintain backward compatibility,<wbr/> this list will be made available
4986 in the static metadata of the camera service.<wbr/>  The camera service will
4987 use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4988 <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
4989 mode other than FACE_<wbr/>PRIORITY.<wbr/></p>
4990             </td>
4991           </tr>
4992
4993           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
4994            <!-- end of entry -->
4995         
4996                 
4997           <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
4998             <td class="entry_name
4999              " rowspan="5">
5000               android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5001             </td>
5002             <td class="entry_type">
5003                 <span class="entry_type_name">int32</span>
5004                 <span class="entry_type_container">x</span>
5005
5006                 <span class="entry_type_array">
5007                   4 x n
5008                 </span>
5009               <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5010
5011
5012               <span class="entry_type_hwlevel">[limited] </span>
5013
5014
5015
5016
5017             </td> <!-- entry_type -->
5018
5019             <td class="entry_description">
5020               <p>List of available high speed video size and fps range configurations
5021 supported by the camera device,<wbr/> in the format of (width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max).<wbr/></p>
5022             </td>
5023
5024             <td class="entry_units">
5025             </td>
5026
5027             <td class="entry_range">
5028               <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 60fps.<wbr/></p>
5029             </td>
5030
5031             <td class="entry_tags">
5032               <ul class="entry_tags">
5033                   <li><a href="#tag_V1">V1</a></li>
5034               </ul>
5035             </td>
5036
5037           </tr>
5038           <tr class="entries_header">
5039             <th class="th_details" colspan="5">Details</th>
5040           </tr>
5041           <tr class="entry_cont">
5042             <td class="entry_details" colspan="5">
5043               <p>When HIGH_<wbr/>SPEED_<wbr/>VIDEO is supported in <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>,<wbr/> this metadata
5044 will list the supported high speed video size and fps range configurations.<wbr/> All the sizes
5045 listed in this configuration will be a subset of the sizes reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a> for processed
5046 non-stalling formats.<wbr/></p>
5047 <p>For the high speed video use case,<wbr/> where the application will set
5048 <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> to HIGH_<wbr/>SPEED_<wbr/>VIDEO in capture requests,<wbr/> the application must
5049 select the video size and fps range from this metadata to configure the recording and
5050 preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5051 to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5052 configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5053 by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5054 recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5055 must select one unique size from this metadata to use.<wbr/> Otherwise a request error might
5056 occur.<wbr/></p>
5057 <p>For normal video recording use case,<wbr/> where some application will NOT set
5058 <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a> to HIGH_<wbr/>SPEED_<wbr/>VIDEO in capture requests,<wbr/> the fps ranges
5059 reported in this metadata must not be used to setup capture requests,<wbr/> or it will cause
5060 request error.<wbr/></p>
5061             </td>
5062           </tr>
5063
5064           <tr class="entries_header">
5065             <th class="th_details" colspan="5">HAL Implementation Details</th>
5066           </tr>
5067           <tr class="entry_cont">
5068             <td class="entry_details" colspan="5">
5069               <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5070 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5071 Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5072 of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5073 <p>Since the HIGH_<wbr/>SPEED_<wbr/>VIDEO mode may be turned on for preview view only case,<wbr/> the preview
5074 fps is bounded by device refresh rate (e.<wbr/>g.<wbr/> 60fps).<wbr/> For a given resolution,<wbr/> it is
5075 recommended that this list includes some fps ranges (e.<wbr/>g.<wbr/> [30,<wbr/> 60]) that is suitable
5076 for preview only streaming case.<wbr/></p>
5077             </td>
5078           </tr>
5079
5080           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5081            <!-- end of entry -->
5082         
5083                 
5084           <tr class="entry" id="static_android.control.aeLockAvailable">
5085             <td class="entry_name
5086              " rowspan="3">
5087               android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5088             </td>
5089             <td class="entry_type">
5090                 <span class="entry_type_name entry_type_name_enum">byte</span>
5091
5092               <span class="entry_type_visibility"> [public as boolean]</span>
5093
5094
5095               <span class="entry_type_hwlevel">[legacy] </span>
5096
5097
5098
5099                 <ul class="entry_type_enum">
5100                   <li>
5101                     <span class="entry_type_enum_name">FALSE</span>
5102                   </li>
5103                   <li>
5104                     <span class="entry_type_enum_name">TRUE</span>
5105                   </li>
5106                 </ul>
5107
5108             </td> <!-- entry_type -->
5109
5110             <td class="entry_description">
5111               <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5112             </td>
5113
5114             <td class="entry_units">
5115             </td>
5116
5117             <td class="entry_range">
5118             </td>
5119
5120             <td class="entry_tags">
5121               <ul class="entry_tags">
5122                   <li><a href="#tag_BC">BC</a></li>
5123               </ul>
5124             </td>
5125
5126           </tr>
5127           <tr class="entries_header">
5128             <th class="th_details" colspan="5">Details</th>
5129           </tr>
5130           <tr class="entry_cont">
5131             <td class="entry_details" colspan="5">
5132               <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5133 list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5134             </td>
5135           </tr>
5136
5137
5138           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5139            <!-- end of entry -->
5140         
5141                 
5142           <tr class="entry" id="static_android.control.awbLockAvailable">
5143             <td class="entry_name
5144              " rowspan="3">
5145               android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5146             </td>
5147             <td class="entry_type">
5148                 <span class="entry_type_name entry_type_name_enum">byte</span>
5149
5150               <span class="entry_type_visibility"> [public as boolean]</span>
5151
5152
5153               <span class="entry_type_hwlevel">[legacy] </span>
5154
5155
5156
5157                 <ul class="entry_type_enum">
5158                   <li>
5159                     <span class="entry_type_enum_name">FALSE</span>
5160                   </li>
5161                   <li>
5162                     <span class="entry_type_enum_name">TRUE</span>
5163                   </li>
5164                 </ul>
5165
5166             </td> <!-- entry_type -->
5167
5168             <td class="entry_description">
5169               <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5170             </td>
5171
5172             <td class="entry_units">
5173             </td>
5174
5175             <td class="entry_range">
5176             </td>
5177
5178             <td class="entry_tags">
5179               <ul class="entry_tags">
5180                   <li><a href="#tag_BC">BC</a></li>
5181               </ul>
5182             </td>
5183
5184           </tr>
5185           <tr class="entries_header">
5186             <th class="th_details" colspan="5">Details</th>
5187           </tr>
5188           <tr class="entry_cont">
5189             <td class="entry_details" colspan="5">
5190               <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5191 always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5192             </td>
5193           </tr>
5194
5195
5196           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5197            <!-- end of entry -->
5198         
5199                 
5200           <tr class="entry" id="static_android.control.availableModes">
5201             <td class="entry_name
5202              " rowspan="3">
5203               android.<wbr/>control.<wbr/>available<wbr/>Modes
5204             </td>
5205             <td class="entry_type">
5206                 <span class="entry_type_name">byte</span>
5207                 <span class="entry_type_container">x</span>
5208
5209                 <span class="entry_type_array">
5210                   n
5211                 </span>
5212               <span class="entry_type_visibility"> [public as enumList]</span>
5213
5214
5215               <span class="entry_type_hwlevel">[legacy] </span>
5216
5217
5218                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5219
5220
5221             </td> <!-- entry_type -->
5222
5223             <td class="entry_description">
5224               <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5225 device.<wbr/></p>
5226             </td>
5227
5228             <td class="entry_units">
5229             </td>
5230
5231             <td class="entry_range">
5232               <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5233             </td>
5234
5235             <td class="entry_tags">
5236             </td>
5237
5238           </tr>
5239           <tr class="entries_header">
5240             <th class="th_details" colspan="5">Details</th>
5241           </tr>
5242           <tr class="entry_cont">
5243             <td class="entry_details" colspan="5">
5244               <p>This list contains control modes that can be set for the camera device.<wbr/>
5245 LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5246 devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5247             </td>
5248           </tr>
5249
5250
5251           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5252            <!-- end of entry -->
5253         
5254         
5255
5256       <!-- end of kind -->
5257       </tbody>
5258       <tr><td colspan="6" class="kind">dynamic</td></tr>
5259
5260       <thead class="entries_header">
5261         <tr>
5262           <th class="th_name">Property Name</th>
5263           <th class="th_type">Type</th>
5264           <th class="th_description">Description</th>
5265           <th class="th_units">Units</th>
5266           <th class="th_range">Range</th>
5267           <th class="th_tags">Tags</th>
5268         </tr>
5269       </thead>
5270
5271       <tbody>
5272
5273         
5274
5275         
5276
5277         
5278
5279         
5280
5281                 
5282           <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5283             <td class="entry_name
5284                 entry_name_deprecated
5285              " rowspan="3">
5286               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5287             </td>
5288             <td class="entry_type">
5289                 <span class="entry_type_name">int32</span>
5290
5291               <span class="entry_type_visibility"> [system]</span>
5292
5293
5294
5295               <span class="entry_type_deprecated">[deprecated] </span>
5296
5297
5298
5299             </td> <!-- entry_type -->
5300
5301             <td class="entry_description">
5302               <p>The ID sent with the latest
5303 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
5304             </td>
5305
5306             <td class="entry_units">
5307             </td>
5308
5309             <td class="entry_range">
5310               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5311             </td>
5312
5313             <td class="entry_tags">
5314             </td>
5315
5316           </tr>
5317           <tr class="entries_header">
5318             <th class="th_details" colspan="5">Details</th>
5319           </tr>
5320           <tr class="entry_cont">
5321             <td class="entry_details" colspan="5">
5322               <p>Must be 0 if no
5323 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5324 by HAL.<wbr/> Always updated even if AE algorithm ignores the
5325 trigger</p>
5326             </td>
5327           </tr>
5328
5329
5330           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5331            <!-- end of entry -->
5332         
5333                 
5334           <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
5335             <td class="entry_name
5336              " rowspan="5">
5337               android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
5338             </td>
5339             <td class="entry_type">
5340                 <span class="entry_type_name entry_type_name_enum">byte</span>
5341
5342               <span class="entry_type_visibility"> [public]</span>
5343
5344
5345               <span class="entry_type_hwlevel">[legacy] </span>
5346
5347
5348
5349                 <ul class="entry_type_enum">
5350                   <li>
5351                     <span class="entry_type_enum_name">OFF</span>
5352                     <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
5353 avoid banding problems.<wbr/></p></span>
5354                   </li>
5355                   <li>
5356                     <span class="entry_type_enum_name">50HZ</span>
5357                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5358 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
5359                   </li>
5360                   <li>
5361                     <span class="entry_type_enum_name">60HZ</span>
5362                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
5363 avoid banding problems with 60Hz illumination
5364 sources.<wbr/></p></span>
5365                   </li>
5366                   <li>
5367                     <span class="entry_type_enum_name">AUTO</span>
5368                     <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
5369 antibanding routine to the current illumination
5370 condition.<wbr/> This is the default mode if AUTO is
5371 available on given camera device.<wbr/></p></span>
5372                   </li>
5373                 </ul>
5374
5375             </td> <!-- entry_type -->
5376
5377             <td class="entry_description">
5378               <p>The desired setting for the camera device's auto-exposure
5379 algorithm's antibanding compensation.<wbr/></p>
5380             </td>
5381
5382             <td class="entry_units">
5383             </td>
5384
5385             <td class="entry_range">
5386               <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
5387             </td>
5388
5389             <td class="entry_tags">
5390               <ul class="entry_tags">
5391                   <li><a href="#tag_BC">BC</a></li>
5392               </ul>
5393             </td>
5394
5395           </tr>
5396           <tr class="entries_header">
5397             <th class="th_details" colspan="5">Details</th>
5398           </tr>
5399           <tr class="entry_cont">
5400             <td class="entry_details" colspan="5">
5401               <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
5402 lights,<wbr/> flicker at the rate of the power supply frequency
5403 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
5404 typically not noticeable to a person,<wbr/> it can be visible to
5405 a camera device.<wbr/> If a camera sets its exposure time to the
5406 wrong value,<wbr/> the flicker may become visible in the
5407 viewfinder as flicker or in a final captured image,<wbr/> as a
5408 set of variable-brightness bands across the image.<wbr/></p>
5409 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
5410 include antibanding routines that ensure that the chosen
5411 exposure value will not cause such banding.<wbr/> The choice of
5412 exposure time depends on the rate of flicker,<wbr/> which the
5413 camera device can detect automatically,<wbr/> or the expected
5414 rate can be selected by the application using this
5415 control.<wbr/></p>
5416 <p>A given camera device may not support all of the possible
5417 options for the antibanding mode.<wbr/> The
5418 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
5419 the available modes for a given camera device.<wbr/></p>
5420 <p>AUTO mode is the default if it is available on given
5421 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
5422 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
5423 and 60HZ will be available.<wbr/></p>
5424 <p>If manual exposure control is enabled (by setting
5425 <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/>
5426 then this setting has no effect,<wbr/> and the application must
5427 ensure it selects exposure times that do not cause banding
5428 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
5429 the application in this.<wbr/></p>
5430             </td>
5431           </tr>
5432
5433           <tr class="entries_header">
5434             <th class="th_details" colspan="5">HAL Implementation Details</th>
5435           </tr>
5436           <tr class="entry_cont">
5437             <td class="entry_details" colspan="5">
5438               <p>For all capture request templates,<wbr/> this field must be set
5439 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
5440 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
5441 60HZ must be available.<wbr/></p>
5442 <p>If manual exposure control is enabled (by setting
5443 <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/>
5444 then the exposure values provided by the application must not be
5445 adjusted for antibanding.<wbr/></p>
5446             </td>
5447           </tr>
5448
5449           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5450            <!-- end of entry -->
5451         
5452                 
5453           <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
5454             <td class="entry_name
5455              " rowspan="3">
5456               android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
5457             </td>
5458             <td class="entry_type">
5459                 <span class="entry_type_name">int32</span>
5460
5461               <span class="entry_type_visibility"> [public]</span>
5462
5463
5464               <span class="entry_type_hwlevel">[legacy] </span>
5465
5466
5467
5468
5469             </td> <!-- entry_type -->
5470
5471             <td class="entry_description">
5472               <p>Adjustment to auto-exposure (AE) target image
5473 brightness.<wbr/></p>
5474             </td>
5475
5476             <td class="entry_units">
5477               Compensation steps
5478             </td>
5479
5480             <td class="entry_range">
5481               <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
5482             </td>
5483
5484             <td class="entry_tags">
5485               <ul class="entry_tags">
5486                   <li><a href="#tag_BC">BC</a></li>
5487               </ul>
5488             </td>
5489
5490           </tr>
5491           <tr class="entries_header">
5492             <th class="th_details" colspan="5">Details</th>
5493           </tr>
5494           <tr class="entry_cont">
5495             <td class="entry_details" colspan="5">
5496               <p>The adjustment is measured as a count of steps,<wbr/> with the
5497 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
5498 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
5499 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
5500 will mean an exposure compensation of +2 EV; -3 will mean an
5501 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
5502 of image brightness.<wbr/> Note that this control will only be
5503 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
5504 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
5505 <p>In the event of exposure compensation value being changed,<wbr/> camera device
5506 may take several frames to reach the newly requested exposure target.<wbr/>
5507 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
5508 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
5509 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
5510 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
5511             </td>
5512           </tr>
5513
5514
5515           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5516            <!-- end of entry -->
5517         
5518                 
5519           <tr class="entry" id="dynamic_android.control.aeLock">
5520             <td class="entry_name
5521              " rowspan="3">
5522               android.<wbr/>control.<wbr/>ae<wbr/>Lock
5523             </td>
5524             <td class="entry_type">
5525                 <span class="entry_type_name entry_type_name_enum">byte</span>
5526
5527               <span class="entry_type_visibility"> [public as boolean]</span>
5528
5529
5530               <span class="entry_type_hwlevel">[legacy] </span>
5531
5532
5533
5534                 <ul class="entry_type_enum">
5535                   <li>
5536                     <span class="entry_type_enum_name">OFF</span>
5537                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
5538 is free to update its parameters.<wbr/></p></span>
5539                   </li>
5540                   <li>
5541                     <span class="entry_type_enum_name">ON</span>
5542                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
5543 must not update the exposure and sensitivity parameters
5544 while the lock is active.<wbr/></p>
5545 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
5546 will still take effect while auto-exposure is locked.<wbr/></p>
5547 <p>Some rare LEGACY devices may not support
5548 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
5549                   </li>
5550                 </ul>
5551
5552             </td> <!-- entry_type -->
5553
5554             <td class="entry_description">
5555               <p>Whether auto-exposure (AE) is currently locked to its latest
5556 calculated values.<wbr/></p>
5557             </td>
5558
5559             <td class="entry_units">
5560             </td>
5561
5562             <td class="entry_range">
5563             </td>
5564
5565             <td class="entry_tags">
5566               <ul class="entry_tags">
5567                   <li><a href="#tag_BC">BC</a></li>
5568               </ul>
5569             </td>
5570
5571           </tr>
5572           <tr class="entries_header">
5573             <th class="th_details" colspan="5">Details</th>
5574           </tr>
5575           <tr class="entry_cont">
5576             <td class="entry_details" colspan="5">
5577               <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
5578 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
5579 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
5580 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
5581 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
5582 <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
5583 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
5584 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
5585 when AE is already locked,<wbr/> the camera device will not change the exposure time
5586 (<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>)
5587 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
5588 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
5589 <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/>
5590 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
5591 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
5592 the AE if AE is locked by the camera device internally during precapture metering
5593 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
5594 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
5595 will never succeed in a sequence of preview requests where AE lock is always set
5596 to <code>false</code>.<wbr/></p>
5597 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
5598 get locked do not necessarily correspond to the settings that were present in the
5599 latest capture result received from the camera device,<wbr/> since additional captures
5600 and AE updates may have occurred even before the result was sent out.<wbr/> If an
5601 application is switching between automatic and manual control and wishes to eliminate
5602 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
5603 <ol>
5604 <li>Starting in auto-AE mode:</li>
5605 <li>Lock AE</li>
5606 <li>Wait for the first result to be output that has the AE locked</li>
5607 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
5608 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
5609 </ol>
5610 <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>
5611             </td>
5612           </tr>
5613
5614
5615           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5616            <!-- end of entry -->
5617         
5618                 
5619           <tr class="entry" id="dynamic_android.control.aeMode">
5620             <td class="entry_name
5621              " rowspan="3">
5622               android.<wbr/>control.<wbr/>ae<wbr/>Mode
5623             </td>
5624             <td class="entry_type">
5625                 <span class="entry_type_name entry_type_name_enum">byte</span>
5626
5627               <span class="entry_type_visibility"> [public]</span>
5628
5629
5630               <span class="entry_type_hwlevel">[legacy] </span>
5631
5632
5633
5634                 <ul class="entry_type_enum">
5635                   <li>
5636                     <span class="entry_type_enum_name">OFF</span>
5637                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
5638 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5639 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
5640 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
5641 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
5642 a flash unit for this camera device.<wbr/></p>
5643 <p>Note that auto-white balance (AWB) and auto-focus (AF)
5644 behavior is device dependent when AE is in OFF mode.<wbr/>
5645 To have consistent behavior across different devices,<wbr/>
5646 it is recommended to either set AWB and AF to OFF mode
5647 or lock AWB and AF before setting AE to OFF.<wbr/>
5648 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/>
5649 <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>
5650 for more details.<wbr/></p>
5651 <p>LEGACY devices do not support the OFF mode and will
5652 override attempts to use this value to ON.<wbr/></p></span>
5653                   </li>
5654                   <li>
5655                     <span class="entry_type_enum_name">ON</span>
5656                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
5657 with no flash control.<wbr/></p>
5658 <p>The application's values for
5659 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5660 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
5661 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
5662 application has control over the various
5663 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
5664                   </li>
5665                   <li>
5666                     <span class="entry_type_enum_name">ON_AUTO_FLASH</span>
5667                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
5668 the camera's flash unit,<wbr/> firing it in low-light
5669 conditions.<wbr/></p>
5670 <p>The flash may be fired during a precapture sequence
5671 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
5672 may be fired for captures for which the
5673 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
5674 STILL_<wbr/>CAPTURE</p></span>
5675                   </li>
5676                   <li>
5677                     <span class="entry_type_enum_name">ON_ALWAYS_FLASH</span>
5678                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
5679 the camera's flash unit,<wbr/> always firing it for still
5680 captures.<wbr/></p>
5681 <p>The flash may be fired during a precapture sequence
5682 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
5683 will always be fired for captures for which the
5684 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
5685 STILL_<wbr/>CAPTURE</p></span>
5686                   </li>
5687                   <li>
5688                     <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE</span>
5689                     <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
5690 reduction.<wbr/></p>
5691 <p>If deemed necessary by the camera device,<wbr/> a red eye
5692 reduction flash will fire during the precapture
5693 sequence.<wbr/></p></span>
5694                   </li>
5695                 </ul>
5696
5697             </td> <!-- entry_type -->
5698
5699             <td class="entry_description">
5700               <p>The desired mode for the camera device's
5701 auto-exposure routine.<wbr/></p>
5702             </td>
5703
5704             <td class="entry_units">
5705             </td>
5706
5707             <td class="entry_range">
5708               <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
5709             </td>
5710
5711             <td class="entry_tags">
5712               <ul class="entry_tags">
5713                   <li><a href="#tag_BC">BC</a></li>
5714               </ul>
5715             </td>
5716
5717           </tr>
5718           <tr class="entries_header">
5719             <th class="th_details" colspan="5">Details</th>
5720           </tr>
5721           <tr class="entry_cont">
5722             <td class="entry_details" colspan="5">
5723               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
5724 AUTO.<wbr/></p>
5725 <p>When set to any of the ON modes,<wbr/> the camera device's
5726 auto-exposure routine is enabled,<wbr/> overriding the
5727 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
5728 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
5729 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
5730 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
5731 is selected,<wbr/> the camera device's flash unit controls are
5732 also overridden.<wbr/></p>
5733 <p>The FLASH modes are only available if the camera device
5734 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>
5735 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
5736 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
5737 <p>When set to any of the ON modes,<wbr/> the values chosen by the
5738 camera device auto-exposure routine for the overridden
5739 fields for a given capture will be available in its
5740 CaptureResult.<wbr/></p>
5741             </td>
5742           </tr>
5743
5744
5745           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5746            <!-- end of entry -->
5747         
5748                 
5749           <tr class="entry" id="dynamic_android.control.aeRegions">
5750             <td class="entry_name
5751              " rowspan="5">
5752               android.<wbr/>control.<wbr/>ae<wbr/>Regions
5753             </td>
5754             <td class="entry_type">
5755                 <span class="entry_type_name">int32</span>
5756                 <span class="entry_type_container">x</span>
5757
5758                 <span class="entry_type_array">
5759                   5 x area_count
5760                 </span>
5761               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
5762
5763
5764
5765
5766
5767
5768             </td> <!-- entry_type -->
5769
5770             <td class="entry_description">
5771               <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
5772             </td>
5773
5774             <td class="entry_units">
5775               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
5776             </td>
5777
5778             <td class="entry_range">
5779               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
5780 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
5781             </td>
5782
5783             <td class="entry_tags">
5784               <ul class="entry_tags">
5785                   <li><a href="#tag_BC">BC</a></li>
5786               </ul>
5787             </td>
5788
5789           </tr>
5790           <tr class="entries_header">
5791             <th class="th_details" colspan="5">Details</th>
5792           </tr>
5793           <tr class="entry_cont">
5794             <td class="entry_details" colspan="5">
5795               <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
5796 Otherwise will always be present.<wbr/></p>
5797 <p>The maximum number of regions supported by the device is determined by the value
5798 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
5799 <p>The coordinate system is based on the active pixel array,<wbr/>
5800 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
5801 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
5802 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
5803 bottom-right pixel in the active pixel array.<wbr/></p>
5804 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
5805 for every pixel in the area.<wbr/> This means that a large metering area
5806 with the same weight as a smaller area will have more effect in
5807 the metering result.<wbr/> Metering areas can partially overlap and the
5808 camera device will add the weights in the overlap region.<wbr/></p>
5809 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
5810 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
5811 weight is ignored.<wbr/></p>
5812 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
5813 camera device.<wbr/></p>
5814 <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
5815 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
5816 region and output only the intersection rectangle as the metering region in the result
5817 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
5818 not reported in the result metadata.<wbr/></p>
5819             </td>
5820           </tr>
5821
5822           <tr class="entries_header">
5823             <th class="th_details" colspan="5">HAL Implementation Details</th>
5824           </tr>
5825           <tr class="entry_cont">
5826             <td class="entry_details" colspan="5">
5827               <p>The HAL level representation of MeteringRectangle[] is a
5828 int[5 * area_<wbr/>count].<wbr/>
5829 Every five elements represent a metering region of
5830 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
5831 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
5832 exclusive on xmax and ymax.<wbr/></p>
5833             </td>
5834           </tr>
5835
5836           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5837            <!-- end of entry -->
5838         
5839                 
5840           <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
5841             <td class="entry_name
5842              " rowspan="3">
5843               android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
5844             </td>
5845             <td class="entry_type">
5846                 <span class="entry_type_name">int32</span>
5847                 <span class="entry_type_container">x</span>
5848
5849                 <span class="entry_type_array">
5850                   2
5851                 </span>
5852               <span class="entry_type_visibility"> [public as rangeInt]</span>
5853
5854
5855               <span class="entry_type_hwlevel">[legacy] </span>
5856
5857
5858
5859
5860             </td> <!-- entry_type -->
5861
5862             <td class="entry_description">
5863               <p>Range over which the auto-exposure routine can
5864 adjust the capture frame rate to maintain good
5865 exposure.<wbr/></p>
5866             </td>
5867
5868             <td class="entry_units">
5869               Frames per second (FPS)
5870             </td>
5871
5872             <td class="entry_range">
5873               <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>
5874             </td>
5875
5876             <td class="entry_tags">
5877               <ul class="entry_tags">
5878                   <li><a href="#tag_BC">BC</a></li>
5879               </ul>
5880             </td>
5881
5882           </tr>
5883           <tr class="entries_header">
5884             <th class="th_details" colspan="5">Details</th>
5885           </tr>
5886           <tr class="entry_cont">
5887             <td class="entry_details" colspan="5">
5888               <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
5889 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
5890 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
5891             </td>
5892           </tr>
5893
5894
5895           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
5896            <!-- end of entry -->
5897         
5898                 
5899           <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
5900             <td class="entry_name
5901              " rowspan="3">
5902               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
5903             </td>
5904             <td class="entry_type">
5905                 <span class="entry_type_name entry_type_name_enum">byte</span>
5906
5907               <span class="entry_type_visibility"> [public]</span>
5908
5909
5910               <span class="entry_type_hwlevel">[limited] </span>
5911
5912
5913
5914                 <ul class="entry_type_enum">
5915                   <li>
5916                     <span class="entry_type_enum_name">IDLE</span>
5917                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
5918                   </li>
5919                   <li>
5920                     <span class="entry_type_enum_name">START</span>
5921                     <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
5922 by the camera device.<wbr/></p>
5923 <p>The exact effect of the precapture trigger depends on
5924 the current AE mode and state.<wbr/></p></span>
5925                   </li>
5926                   <li>
5927                     <span class="entry_type_enum_name">CANCEL</span>
5928                     <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
5929 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
5930 initial state.<wbr/></p></span>
5931                   </li>
5932                 </ul>
5933
5934             </td> <!-- entry_type -->
5935
5936             <td class="entry_description">
5937               <p>Whether the camera device will trigger a precapture
5938 metering sequence when it processes this request.<wbr/></p>
5939             </td>
5940
5941             <td class="entry_units">
5942             </td>
5943
5944             <td class="entry_range">
5945             </td>
5946
5947             <td class="entry_tags">
5948               <ul class="entry_tags">
5949                   <li><a href="#tag_BC">BC</a></li>
5950               </ul>
5951             </td>
5952
5953           </tr>
5954           <tr class="entries_header">
5955             <th class="th_details" colspan="5">Details</th>
5956           </tr>
5957           <tr class="entry_cont">
5958             <td class="entry_details" colspan="5">
5959               <p>This entry is normally set to IDLE,<wbr/> or is not
5960 included at all in the request settings.<wbr/> When included and
5961 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
5962 precapture metering sequence.<wbr/></p>
5963 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
5964 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
5965 If a precapture metering sequence is already completed,<wbr/> and the camera
5966 device has implicitly locked the AE for subsequent still capture,<wbr/> the
5967 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
5968 <p>The precapture sequence should be triggered before starting a
5969 high-quality still capture for final metering decisions to
5970 be made,<wbr/> and for firing pre-capture flash pulses to estimate
5971 scene brightness and required final capture flash power,<wbr/> when
5972 the flash is enabled.<wbr/></p>
5973 <p>Normally,<wbr/> this entry should be set to START for only a
5974 single request,<wbr/> and the application should wait until the
5975 sequence completes before starting a new one.<wbr/></p>
5976 <p>When a precapture metering sequence is finished,<wbr/> the camera device
5977 may lock the auto-exposure routine internally to be able to accurately expose the
5978 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
5979 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
5980 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
5981 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
5982 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
5983 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
5984 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
5985 internally locked AE if the application doesn't submit a still capture request after
5986 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
5987 be used in devices that have earlier API levels.<wbr/></p>
5988 <p>The exact effect of auto-exposure (AE) precapture trigger
5989 depends on the current AE mode and state; see
5990 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
5991 details.<wbr/></p>
5992 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
5993 capturing a high-resolution JPEG image will automatically trigger a
5994 precapture sequence before the high-resolution capture,<wbr/> including
5995 potentially firing a pre-capture flash.<wbr/></p>
5996             </td>
5997           </tr>
5998
5999
6000           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6001            <!-- end of entry -->
6002         
6003                 
6004           <tr class="entry" id="dynamic_android.control.aeState">
6005             <td class="entry_name
6006              " rowspan="3">
6007               android.<wbr/>control.<wbr/>ae<wbr/>State
6008             </td>
6009             <td class="entry_type">
6010                 <span class="entry_type_name entry_type_name_enum">byte</span>
6011
6012               <span class="entry_type_visibility"> [public]</span>
6013
6014
6015               <span class="entry_type_hwlevel">[limited] </span>
6016
6017
6018
6019                 <ul class="entry_type_enum">
6020                   <li>
6021                     <span class="entry_type_enum_name">INACTIVE</span>
6022                     <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6023 <p>When a camera device is opened,<wbr/> it starts in
6024 this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6025 this state in capture result.<wbr/></p></span>
6026                   </li>
6027                   <li>
6028                     <span class="entry_type_enum_name">SEARCHING</span>
6029                     <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6030 for the current scene.<wbr/></p>
6031 <p>This is a transient state,<wbr/> the camera device may skip
6032 reporting this state in capture result.<wbr/></p></span>
6033                   </li>
6034                   <li>
6035                     <span class="entry_type_enum_name">CONVERGED</span>
6036                     <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6037 current scene.<wbr/></p></span>
6038                   </li>
6039                   <li>
6040                     <span class="entry_type_enum_name">LOCKED</span>
6041                     <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6042                   </li>
6043                   <li>
6044                     <span class="entry_type_enum_name">FLASH_REQUIRED</span>
6045                     <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6046 needs to be fired for good quality still
6047 capture.<wbr/></p></span>
6048                   </li>
6049                   <li>
6050                     <span class="entry_type_enum_name">PRECAPTURE</span>
6051                     <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6052 and is currently executing it.<wbr/></p>
6053 <p>Precapture can be triggered through setting
6054 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6055 active and completed (if it causes camera device internal AE lock) precapture
6056 metering sequence can be canceled through setting
6057 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6058 <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6059 or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6060 state,<wbr/> the camera device may skip reporting this state in
6061 capture result.<wbr/></p></span>
6062                   </li>
6063                 </ul>
6064
6065             </td> <!-- entry_type -->
6066
6067             <td class="entry_description">
6068               <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6069             </td>
6070
6071             <td class="entry_units">
6072             </td>
6073
6074             <td class="entry_range">
6075             </td>
6076
6077             <td class="entry_tags">
6078             </td>
6079
6080           </tr>
6081           <tr class="entries_header">
6082             <th class="th_details" colspan="5">Details</th>
6083           </tr>
6084           <tr class="entry_cont">
6085             <td class="entry_details" colspan="5">
6086               <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6087 resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6088 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
6089 the algorithm states to INACTIVE.<wbr/></p>
6090 <p>The camera device can do several state transitions between two results,<wbr/> if it is
6091 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6092 seen in a result.<wbr/></p>
6093 <p>The state in the result is the state for this image (in sync with this image): if
6094 AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6095 be good to use.<wbr/></p>
6096 <p>Below are state transition tables for different AE modes.<wbr/></p>
6097 <table>
6098 <thead>
6099 <tr>
6100 <th align="center">State</th>
6101 <th align="center">Transition Cause</th>
6102 <th align="center">New State</th>
6103 <th align="center">Notes</th>
6104 </tr>
6105 </thead>
6106 <tbody>
6107 <tr>
6108 <td align="center">INACTIVE</td>
6109 <td align="center"></td>
6110 <td align="center">INACTIVE</td>
6111 <td align="center">Camera device auto exposure algorithm is disabled</td>
6112 </tr>
6113 </tbody>
6114 </table>
6115 <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON_<wbr/>*:</p>
6116 <table>
6117 <thead>
6118 <tr>
6119 <th align="center">State</th>
6120 <th align="center">Transition Cause</th>
6121 <th align="center">New State</th>
6122 <th align="center">Notes</th>
6123 </tr>
6124 </thead>
6125 <tbody>
6126 <tr>
6127 <td align="center">INACTIVE</td>
6128 <td align="center">Camera device initiates AE scan</td>
6129 <td align="center">SEARCHING</td>
6130 <td align="center">Values changing</td>
6131 </tr>
6132 <tr>
6133 <td align="center">INACTIVE</td>
6134 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6135 <td align="center">LOCKED</td>
6136 <td align="center">Values locked</td>
6137 </tr>
6138 <tr>
6139 <td align="center">SEARCHING</td>
6140 <td align="center">Camera device finishes AE scan</td>
6141 <td align="center">CONVERGED</td>
6142 <td align="center">Good values,<wbr/> not changing</td>
6143 </tr>
6144 <tr>
6145 <td align="center">SEARCHING</td>
6146 <td align="center">Camera device finishes AE scan</td>
6147 <td align="center">FLASH_<wbr/>REQUIRED</td>
6148 <td align="center">Converged but too dark w/<wbr/>o flash</td>
6149 </tr>
6150 <tr>
6151 <td align="center">SEARCHING</td>
6152 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6153 <td align="center">LOCKED</td>
6154 <td align="center">Values locked</td>
6155 </tr>
6156 <tr>
6157 <td align="center">CONVERGED</td>
6158 <td align="center">Camera device initiates AE scan</td>
6159 <td align="center">SEARCHING</td>
6160 <td align="center">Values changing</td>
6161 </tr>
6162 <tr>
6163 <td align="center">CONVERGED</td>
6164 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6165 <td align="center">LOCKED</td>
6166 <td align="center">Values locked</td>
6167 </tr>
6168 <tr>
6169 <td align="center">FLASH_<wbr/>REQUIRED</td>
6170 <td align="center">Camera device initiates AE scan</td>
6171 <td align="center">SEARCHING</td>
6172 <td align="center">Values changing</td>
6173 </tr>
6174 <tr>
6175 <td align="center">FLASH_<wbr/>REQUIRED</td>
6176 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6177 <td align="center">LOCKED</td>
6178 <td align="center">Values locked</td>
6179 </tr>
6180 <tr>
6181 <td align="center">LOCKED</td>
6182 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6183 <td align="center">SEARCHING</td>
6184 <td align="center">Values not good after unlock</td>
6185 </tr>
6186 <tr>
6187 <td align="center">LOCKED</td>
6188 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6189 <td align="center">CONVERGED</td>
6190 <td align="center">Values good after unlock</td>
6191 </tr>
6192 <tr>
6193 <td align="center">LOCKED</td>
6194 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6195 <td align="center">FLASH_<wbr/>REQUIRED</td>
6196 <td align="center">Exposure good,<wbr/> but too dark</td>
6197 </tr>
6198 <tr>
6199 <td align="center">PRECAPTURE</td>
6200 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6201 <td align="center">CONVERGED</td>
6202 <td align="center">Ready for high-quality capture</td>
6203 </tr>
6204 <tr>
6205 <td align="center">PRECAPTURE</td>
6206 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6207 <td align="center">LOCKED</td>
6208 <td align="center">Ready for high-quality capture</td>
6209 </tr>
6210 <tr>
6211 <td align="center">LOCKED</td>
6212 <td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6213 <td align="center">LOCKED</td>
6214 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6215 </tr>
6216 <tr>
6217 <td align="center">LOCKED</td>
6218 <td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6219 <td align="center">LOCKED</td>
6220 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6221 </tr>
6222 <tr>
6223 <td align="center">Any state (excluding LOCKED)</td>
6224 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6225 <td align="center">PRECAPTURE</td>
6226 <td align="center">Start AE precapture metering sequence</td>
6227 </tr>
6228 <tr>
6229 <td align="center">Any state (excluding LOCKED)</td>
6230 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
6231 <td align="center">INACTIVE</td>
6232 <td align="center">Currently active precapture metering sequence is canceled</td>
6233 </tr>
6234 </tbody>
6235 </table>
6236 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6237 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6238 can be skipped in that manner is called a transient state.<wbr/></p>
6239 <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON_<wbr/>*),<wbr/> in addition to the state transitions
6240 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6241 transient states between two results.<wbr/> See below table for examples:</p>
6242 <table>
6243 <thead>
6244 <tr>
6245 <th align="center">State</th>
6246 <th align="center">Transition Cause</th>
6247 <th align="center">New State</th>
6248 <th align="center">Notes</th>
6249 </tr>
6250 </thead>
6251 <tbody>
6252 <tr>
6253 <td align="center">INACTIVE</td>
6254 <td align="center">Camera device finished AE scan</td>
6255 <td align="center">CONVERGED</td>
6256 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6257 </tr>
6258 <tr>
6259 <td align="center">Any state (excluding LOCKED)</td>
6260 <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>
6261 <td align="center">FLASH_<wbr/>REQUIRED</td>
6262 <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>
6263 </tr>
6264 <tr>
6265 <td align="center">Any state (excluding LOCKED)</td>
6266 <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>
6267 <td align="center">CONVERGED</td>
6268 <td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
6269 </tr>
6270 <tr>
6271 <td align="center">Any state (excluding LOCKED)</td>
6272 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6273 <td align="center">FLASH_<wbr/>REQUIRED</td>
6274 <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>
6275 </tr>
6276 <tr>
6277 <td align="center">Any state (excluding LOCKED)</td>
6278 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6279 <td align="center">CONVERGED</td>
6280 <td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
6281 </tr>
6282 <tr>
6283 <td align="center">CONVERGED</td>
6284 <td align="center">Camera device finished AE scan</td>
6285 <td align="center">FLASH_<wbr/>REQUIRED</td>
6286 <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>
6287 </tr>
6288 <tr>
6289 <td align="center">FLASH_<wbr/>REQUIRED</td>
6290 <td align="center">Camera device finished AE scan</td>
6291 <td align="center">CONVERGED</td>
6292 <td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
6293 </tr>
6294 </tbody>
6295 </table>
6296             </td>
6297           </tr>
6298
6299
6300           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6301            <!-- end of entry -->
6302         
6303                 
6304           <tr class="entry" id="dynamic_android.control.afMode">
6305             <td class="entry_name
6306              " rowspan="5">
6307               android.<wbr/>control.<wbr/>af<wbr/>Mode
6308             </td>
6309             <td class="entry_type">
6310                 <span class="entry_type_name entry_type_name_enum">byte</span>
6311
6312               <span class="entry_type_visibility"> [public]</span>
6313
6314
6315               <span class="entry_type_hwlevel">[legacy] </span>
6316
6317
6318
6319                 <ul class="entry_type_enum">
6320                   <li>
6321                     <span class="entry_type_enum_name">OFF</span>
6322                     <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
6323 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
6324 application.<wbr/></p></span>
6325                   </li>
6326                   <li>
6327                     <span class="entry_type_enum_name">AUTO</span>
6328                     <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
6329 <p>In this mode,<wbr/> the lens does not move unless
6330 the autofocus trigger action is called.<wbr/> When that trigger
6331 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6332 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
6333 <p>Always supported if lens is not fixed focus.<wbr/></p>
6334 <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
6335 is fixed-focus.<wbr/></p>
6336 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
6337 and sets the AF state to INACTIVE.<wbr/></p></span>
6338                   </li>
6339                   <li>
6340                     <span class="entry_type_enum_name">MACRO</span>
6341                     <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
6342 <p>In this mode,<wbr/> the lens does not move unless the
6343 autofocus trigger action is called.<wbr/> When that trigger is
6344 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
6345 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
6346 mode is optimized for focusing on objects very close to
6347 the camera.<wbr/></p>
6348 <p>When that trigger is activated,<wbr/> AF will transition to
6349 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
6350 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
6351 position to default,<wbr/> and sets the AF state to
6352 INACTIVE.<wbr/></p></span>
6353                   </li>
6354                   <li>
6355                     <span class="entry_type_enum_name">CONTINUOUS_VIDEO</span>
6356                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6357 position continually to attempt to provide a
6358 constantly-in-focus image stream.<wbr/></p>
6359 <p>The focusing behavior should be suitable for good quality
6360 video recording; typically this means slower focus
6361 movement and no overshoots.<wbr/> When the AF trigger is not
6362 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
6363 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
6364 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
6365 the algorithm should immediately transition into
6366 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6367 lens position until a cancel AF trigger is received.<wbr/></p>
6368 <p>Once cancel is received,<wbr/> the algorithm should transition
6369 back to INACTIVE and resume passive scan.<wbr/> Note that this
6370 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
6371 ongoing PASSIVE_<wbr/>SCAN must immediately be
6372 canceled.<wbr/></p></span>
6373                   </li>
6374                   <li>
6375                     <span class="entry_type_enum_name">CONTINUOUS_PICTURE</span>
6376                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
6377 position continually to attempt to provide a
6378 constantly-in-focus image stream.<wbr/></p>
6379 <p>The focusing behavior should be suitable for still image
6380 capture; typically this means focusing as fast as
6381 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
6382 algorithm should start in INACTIVE state,<wbr/> and then
6383 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
6384 appropriate as it attempts to maintain focus.<wbr/> When the AF
6385 trigger is activated,<wbr/> the algorithm should finish its
6386 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
6387 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
6388 lens position until a cancel AF trigger is received.<wbr/></p>
6389 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
6390 should transition back to INACTIVE and then act as if it
6391 has just been started.<wbr/></p></span>
6392                   </li>
6393                   <li>
6394                     <span class="entry_type_enum_name">EDOF</span>
6395                     <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
6396 <p>The camera device will produce images with an extended
6397 depth of field automatically; no special focusing
6398 operations need to be done before taking a picture.<wbr/></p>
6399 <p>AF triggers are ignored,<wbr/> and the AF state will always be
6400 INACTIVE.<wbr/></p></span>
6401                   </li>
6402                 </ul>
6403
6404             </td> <!-- entry_type -->
6405
6406             <td class="entry_description">
6407               <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
6408 mode it is set to.<wbr/></p>
6409             </td>
6410
6411             <td class="entry_units">
6412             </td>
6413
6414             <td class="entry_range">
6415               <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
6416             </td>
6417
6418             <td class="entry_tags">
6419               <ul class="entry_tags">
6420                   <li><a href="#tag_BC">BC</a></li>
6421               </ul>
6422             </td>
6423
6424           </tr>
6425           <tr class="entries_header">
6426             <th class="th_details" colspan="5">Details</th>
6427           </tr>
6428           <tr class="entry_cont">
6429             <td class="entry_details" colspan="5">
6430               <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
6431 (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
6432 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
6433 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
6434 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>
6435 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
6436 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
6437 in result metadata.<wbr/></p>
6438             </td>
6439           </tr>
6440
6441           <tr class="entries_header">
6442             <th class="th_details" colspan="5">HAL Implementation Details</th>
6443           </tr>
6444           <tr class="entry_cont">
6445             <td class="entry_details" colspan="5">
6446               <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
6447 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
6448 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
6449 <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
6450 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
6451 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
6452 the same focal plane remains in focus.<wbr/></p>
6453 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
6454 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
6455 (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
6456 same lock behavior as above.<wbr/></p>
6457 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
6458 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/>
6459 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
6460 manual control.<wbr/></p>
6461 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
6462 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
6463 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
6464 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
6465 that will arise on camera modules with open-loop VCMs.<wbr/></p>
6466             </td>
6467           </tr>
6468
6469           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6470            <!-- end of entry -->
6471         
6472                 
6473           <tr class="entry" id="dynamic_android.control.afRegions">
6474             <td class="entry_name
6475              " rowspan="5">
6476               android.<wbr/>control.<wbr/>af<wbr/>Regions
6477             </td>
6478             <td class="entry_type">
6479                 <span class="entry_type_name">int32</span>
6480                 <span class="entry_type_container">x</span>
6481
6482                 <span class="entry_type_array">
6483                   5 x area_count
6484                 </span>
6485               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6486
6487
6488
6489
6490
6491
6492             </td> <!-- entry_type -->
6493
6494             <td class="entry_description">
6495               <p>List of metering areas to use for auto-focus.<wbr/></p>
6496             </td>
6497
6498             <td class="entry_units">
6499               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6500             </td>
6501
6502             <td class="entry_range">
6503               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6504 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6505             </td>
6506
6507             <td class="entry_tags">
6508               <ul class="entry_tags">
6509                   <li><a href="#tag_BC">BC</a></li>
6510               </ul>
6511             </td>
6512
6513           </tr>
6514           <tr class="entries_header">
6515             <th class="th_details" colspan="5">Details</th>
6516           </tr>
6517           <tr class="entry_cont">
6518             <td class="entry_details" colspan="5">
6519               <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
6520 Otherwise will always be present.<wbr/></p>
6521 <p>The maximum number of focus areas supported by the device is determined by the value
6522 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
6523 <p>The coordinate system is based on the active pixel array,<wbr/>
6524 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6525 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6526 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6527 bottom-right pixel in the active pixel array.<wbr/></p>
6528 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6529 for every pixel in the area.<wbr/> This means that a large metering area
6530 with the same weight as a smaller area will have more effect in
6531 the metering result.<wbr/> Metering areas can partially overlap and the
6532 camera device will add the weights in the overlap region.<wbr/></p>
6533 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
6534 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
6535 ignored.<wbr/></p>
6536 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6537 camera device.<wbr/></p>
6538 <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
6539 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6540 region and output only the intersection rectangle as the metering region in the result
6541 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
6542 not reported in the result metadata.<wbr/></p>
6543             </td>
6544           </tr>
6545
6546           <tr class="entries_header">
6547             <th class="th_details" colspan="5">HAL Implementation Details</th>
6548           </tr>
6549           <tr class="entry_cont">
6550             <td class="entry_details" colspan="5">
6551               <p>The HAL level representation of MeteringRectangle[] is a
6552 int[5 * area_<wbr/>count].<wbr/>
6553 Every five elements represent a metering region of
6554 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6555 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6556 exclusive on xmax and ymax.<wbr/></p>
6557             </td>
6558           </tr>
6559
6560           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6561            <!-- end of entry -->
6562         
6563                 
6564           <tr class="entry" id="dynamic_android.control.afTrigger">
6565             <td class="entry_name
6566              " rowspan="3">
6567               android.<wbr/>control.<wbr/>af<wbr/>Trigger
6568             </td>
6569             <td class="entry_type">
6570                 <span class="entry_type_name entry_type_name_enum">byte</span>
6571
6572               <span class="entry_type_visibility"> [public]</span>
6573
6574
6575               <span class="entry_type_hwlevel">[legacy] </span>
6576
6577
6578
6579                 <ul class="entry_type_enum">
6580                   <li>
6581                     <span class="entry_type_enum_name">IDLE</span>
6582                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6583                   </li>
6584                   <li>
6585                     <span class="entry_type_enum_name">START</span>
6586                     <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
6587                   </li>
6588                   <li>
6589                     <span class="entry_type_enum_name">CANCEL</span>
6590                     <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
6591 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
6592                   </li>
6593                 </ul>
6594
6595             </td> <!-- entry_type -->
6596
6597             <td class="entry_description">
6598               <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
6599             </td>
6600
6601             <td class="entry_units">
6602             </td>
6603
6604             <td class="entry_range">
6605             </td>
6606
6607             <td class="entry_tags">
6608               <ul class="entry_tags">
6609                   <li><a href="#tag_BC">BC</a></li>
6610               </ul>
6611             </td>
6612
6613           </tr>
6614           <tr class="entries_header">
6615             <th class="th_details" colspan="5">Details</th>
6616           </tr>
6617           <tr class="entry_cont">
6618             <td class="entry_details" colspan="5">
6619               <p>This entry is normally set to IDLE,<wbr/> or is not
6620 included at all in the request settings.<wbr/></p>
6621 <p>When included and set to START,<wbr/> the camera device will trigger the
6622 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
6623 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
6624 and return to its initial AF state.<wbr/></p>
6625 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
6626 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
6627 START for multiple captures in a row means restarting the AF operation over
6628 and over again.<wbr/></p>
6629 <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>
6630             </td>
6631           </tr>
6632
6633
6634           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
6635            <!-- end of entry -->
6636         
6637                 
6638           <tr class="entry" id="dynamic_android.control.afState">
6639             <td class="entry_name
6640              " rowspan="3">
6641               android.<wbr/>control.<wbr/>af<wbr/>State
6642             </td>
6643             <td class="entry_type">
6644                 <span class="entry_type_name entry_type_name_enum">byte</span>
6645
6646               <span class="entry_type_visibility"> [public]</span>
6647
6648
6649               <span class="entry_type_hwlevel">[legacy] </span>
6650
6651
6652
6653                 <ul class="entry_type_enum">
6654                   <li>
6655                     <span class="entry_type_enum_name">INACTIVE</span>
6656                     <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
6657 to scan.<wbr/></p>
6658 <p>When a camera device is opened,<wbr/> it starts in this
6659 state.<wbr/> This is a transient state,<wbr/> the camera device may
6660 skip reporting this state in capture
6661 result.<wbr/></p></span>
6662                   </li>
6663                   <li>
6664                     <span class="entry_type_enum_name">PASSIVE_SCAN</span>
6665                     <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
6666 camera device in a continuous autofocus mode.<wbr/></p>
6667 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
6668 state,<wbr/> the camera device may skip reporting this state in
6669 capture result.<wbr/></p></span>
6670                   </li>
6671                   <li>
6672                     <span class="entry_type_enum_name">PASSIVE_FOCUSED</span>
6673                     <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
6674 restart scanning at any time.<wbr/></p>
6675 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
6676 state,<wbr/> the camera device may skip reporting this state in
6677 capture result.<wbr/></p></span>
6678                   </li>
6679                   <li>
6680                     <span class="entry_type_enum_name">ACTIVE_SCAN</span>
6681                     <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
6682 triggered by AF trigger.<wbr/></p>
6683 <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
6684 state,<wbr/> the camera device may skip reporting this state in
6685 capture result.<wbr/></p></span>
6686                   </li>
6687                   <li>
6688                     <span class="entry_type_enum_name">FOCUSED_LOCKED</span>
6689                     <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
6690 focus.<wbr/></p>
6691 <p>This state is reached only after an explicit START AF trigger has been
6692 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
6693 <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
6694 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>
6695                   </li>
6696                   <li>
6697                     <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED</span>
6698                     <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
6699 focus.<wbr/></p>
6700 <p>This state is reached only after an explicit START AF trigger has been
6701 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
6702 <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
6703 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>
6704                   </li>
6705                   <li>
6706                     <span class="entry_type_enum_name">PASSIVE_UNFOCUSED</span>
6707                     <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
6708 and may restart scanning at any time.<wbr/></p>
6709 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
6710 device may skip reporting this state in capture result.<wbr/></p>
6711 <p>LEGACY camera devices do not support this state.<wbr/> When a passive
6712 scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
6713                   </li>
6714                 </ul>
6715
6716             </td> <!-- entry_type -->
6717
6718             <td class="entry_description">
6719               <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
6720             </td>
6721
6722             <td class="entry_units">
6723             </td>
6724
6725             <td class="entry_range">
6726             </td>
6727
6728             <td class="entry_tags">
6729             </td>
6730
6731           </tr>
6732           <tr class="entries_header">
6733             <th class="th_details" colspan="5">Details</th>
6734           </tr>
6735           <tr class="entry_cont">
6736             <td class="entry_details" colspan="5">
6737               <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
6738 resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6739 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
6740 the algorithm states to INACTIVE.<wbr/></p>
6741 <p>The camera device can do several state transitions between two results,<wbr/> if it is
6742 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6743 seen in a result.<wbr/></p>
6744 <p>The state in the result is the state for this image (in sync with this image): if
6745 AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
6746 be sharp.<wbr/></p>
6747 <p>Below are state transition tables for different AF modes.<wbr/></p>
6748 <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>
6749 <table>
6750 <thead>
6751 <tr>
6752 <th align="center">State</th>
6753 <th align="center">Transition Cause</th>
6754 <th align="center">New State</th>
6755 <th align="center">Notes</th>
6756 </tr>
6757 </thead>
6758 <tbody>
6759 <tr>
6760 <td align="center">INACTIVE</td>
6761 <td align="center"></td>
6762 <td align="center">INACTIVE</td>
6763 <td align="center">Never changes</td>
6764 </tr>
6765 </tbody>
6766 </table>
6767 <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>
6768 <table>
6769 <thead>
6770 <tr>
6771 <th align="center">State</th>
6772 <th align="center">Transition Cause</th>
6773 <th align="center">New State</th>
6774 <th align="center">Notes</th>
6775 </tr>
6776 </thead>
6777 <tbody>
6778 <tr>
6779 <td align="center">INACTIVE</td>
6780 <td align="center">AF_<wbr/>TRIGGER</td>
6781 <td align="center">ACTIVE_<wbr/>SCAN</td>
6782 <td align="center">Start AF sweep,<wbr/> Lens now moving</td>
6783 </tr>
6784 <tr>
6785 <td align="center">ACTIVE_<wbr/>SCAN</td>
6786 <td align="center">AF sweep done</td>
6787 <td align="center">FOCUSED_<wbr/>LOCKED</td>
6788 <td align="center">Focused,<wbr/> Lens now locked</td>
6789 </tr>
6790 <tr>
6791 <td align="center">ACTIVE_<wbr/>SCAN</td>
6792 <td align="center">AF sweep done</td>
6793 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6794 <td align="center">Not focused,<wbr/> Lens now locked</td>
6795 </tr>
6796 <tr>
6797 <td align="center">ACTIVE_<wbr/>SCAN</td>
6798 <td align="center">AF_<wbr/>CANCEL</td>
6799 <td align="center">INACTIVE</td>
6800 <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
6801 </tr>
6802 <tr>
6803 <td align="center">FOCUSED_<wbr/>LOCKED</td>
6804 <td align="center">AF_<wbr/>CANCEL</td>
6805 <td align="center">INACTIVE</td>
6806 <td align="center">Cancel/<wbr/>reset AF</td>
6807 </tr>
6808 <tr>
6809 <td align="center">FOCUSED_<wbr/>LOCKED</td>
6810 <td align="center">AF_<wbr/>TRIGGER</td>
6811 <td align="center">ACTIVE_<wbr/>SCAN</td>
6812 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
6813 </tr>
6814 <tr>
6815 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6816 <td align="center">AF_<wbr/>CANCEL</td>
6817 <td align="center">INACTIVE</td>
6818 <td align="center">Cancel/<wbr/>reset AF</td>
6819 </tr>
6820 <tr>
6821 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6822 <td align="center">AF_<wbr/>TRIGGER</td>
6823 <td align="center">ACTIVE_<wbr/>SCAN</td>
6824 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
6825 </tr>
6826 <tr>
6827 <td align="center">Any state</td>
6828 <td align="center">Mode change</td>
6829 <td align="center">INACTIVE</td>
6830 <td align="center"></td>
6831 </tr>
6832 </tbody>
6833 </table>
6834 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6835 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6836 can be skipped in that manner is called a transient state.<wbr/></p>
6837 <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
6838 state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
6839 one or more transient states between two results.<wbr/> See below table for examples:</p>
6840 <table>
6841 <thead>
6842 <tr>
6843 <th align="center">State</th>
6844 <th align="center">Transition Cause</th>
6845 <th align="center">New State</th>
6846 <th align="center">Notes</th>
6847 </tr>
6848 </thead>
6849 <tbody>
6850 <tr>
6851 <td align="center">INACTIVE</td>
6852 <td align="center">AF_<wbr/>TRIGGER</td>
6853 <td align="center">FOCUSED_<wbr/>LOCKED</td>
6854 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
6855 </tr>
6856 <tr>
6857 <td align="center">INACTIVE</td>
6858 <td align="center">AF_<wbr/>TRIGGER</td>
6859 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6860 <td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
6861 </tr>
6862 <tr>
6863 <td align="center">FOCUSED_<wbr/>LOCKED</td>
6864 <td align="center">AF_<wbr/>TRIGGER</td>
6865 <td align="center">FOCUSED_<wbr/>LOCKED</td>
6866 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
6867 </tr>
6868 <tr>
6869 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6870 <td align="center">AF_<wbr/>TRIGGER</td>
6871 <td align="center">FOCUSED_<wbr/>LOCKED</td>
6872 <td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
6873 </tr>
6874 </tbody>
6875 </table>
6876 <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>
6877 <table>
6878 <thead>
6879 <tr>
6880 <th align="center">State</th>
6881 <th align="center">Transition Cause</th>
6882 <th align="center">New State</th>
6883 <th align="center">Notes</th>
6884 </tr>
6885 </thead>
6886 <tbody>
6887 <tr>
6888 <td align="center">INACTIVE</td>
6889 <td align="center">Camera device initiates new scan</td>
6890 <td align="center">PASSIVE_<wbr/>SCAN</td>
6891 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
6892 </tr>
6893 <tr>
6894 <td align="center">INACTIVE</td>
6895 <td align="center">AF_<wbr/>TRIGGER</td>
6896 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6897 <td align="center">AF state query,<wbr/> Lens now locked</td>
6898 </tr>
6899 <tr>
6900 <td align="center">PASSIVE_<wbr/>SCAN</td>
6901 <td align="center">Camera device completes current scan</td>
6902 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
6903 <td align="center">End AF scan,<wbr/> Lens now locked</td>
6904 </tr>
6905 <tr>
6906 <td align="center">PASSIVE_<wbr/>SCAN</td>
6907 <td align="center">Camera device fails current scan</td>
6908 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
6909 <td align="center">End AF scan,<wbr/> Lens now locked</td>
6910 </tr>
6911 <tr>
6912 <td align="center">PASSIVE_<wbr/>SCAN</td>
6913 <td align="center">AF_<wbr/>TRIGGER</td>
6914 <td align="center">FOCUSED_<wbr/>LOCKED</td>
6915 <td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
6916 </tr>
6917 <tr>
6918 <td align="center">PASSIVE_<wbr/>SCAN</td>
6919 <td align="center">AF_<wbr/>TRIGGER</td>
6920 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6921 <td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
6922 </tr>
6923 <tr>
6924 <td align="center">PASSIVE_<wbr/>SCAN</td>
6925 <td align="center">AF_<wbr/>CANCEL</td>
6926 <td align="center">INACTIVE</td>
6927 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
6928 </tr>
6929 <tr>
6930 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
6931 <td align="center">Camera device initiates new scan</td>
6932 <td align="center">PASSIVE_<wbr/>SCAN</td>
6933 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
6934 </tr>
6935 <tr>
6936 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
6937 <td align="center">Camera device initiates new scan</td>
6938 <td align="center">PASSIVE_<wbr/>SCAN</td>
6939 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
6940 </tr>
6941 <tr>
6942 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
6943 <td align="center">AF_<wbr/>TRIGGER</td>
6944 <td align="center">FOCUSED_<wbr/>LOCKED</td>
6945 <td align="center">Immediate transition,<wbr/> lens now locked</td>
6946 </tr>
6947 <tr>
6948 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
6949 <td align="center">AF_<wbr/>TRIGGER</td>
6950 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6951 <td align="center">Immediate transition,<wbr/> lens now locked</td>
6952 </tr>
6953 <tr>
6954 <td align="center">FOCUSED_<wbr/>LOCKED</td>
6955 <td align="center">AF_<wbr/>TRIGGER</td>
6956 <td align="center">FOCUSED_<wbr/>LOCKED</td>
6957 <td align="center">No effect</td>
6958 </tr>
6959 <tr>
6960 <td align="center">FOCUSED_<wbr/>LOCKED</td>
6961 <td align="center">AF_<wbr/>CANCEL</td>
6962 <td align="center">INACTIVE</td>
6963 <td align="center">Restart AF scan</td>
6964 </tr>
6965 <tr>
6966 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6967 <td align="center">AF_<wbr/>TRIGGER</td>
6968 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6969 <td align="center">No effect</td>
6970 </tr>
6971 <tr>
6972 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
6973 <td align="center">AF_<wbr/>CANCEL</td>
6974 <td align="center">INACTIVE</td>
6975 <td align="center">Restart AF scan</td>
6976 </tr>
6977 </tbody>
6978 </table>
6979 <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>
6980 <table>
6981 <thead>
6982 <tr>
6983 <th align="center">State</th>
6984 <th align="center">Transition Cause</th>
6985 <th align="center">New State</th>
6986 <th align="center">Notes</th>
6987 </tr>
6988 </thead>
6989 <tbody>
6990 <tr>
6991 <td align="center">INACTIVE</td>
6992 <td align="center">Camera device initiates new scan</td>
6993 <td align="center">PASSIVE_<wbr/>SCAN</td>
6994 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
6995 </tr>
6996 <tr>
6997 <td align="center">INACTIVE</td>
6998 <td align="center">AF_<wbr/>TRIGGER</td>
6999 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7000 <td align="center">AF state query,<wbr/> Lens now locked</td>
7001 </tr>
7002 <tr>
7003 <td align="center">PASSIVE_<wbr/>SCAN</td>
7004 <td align="center">Camera device completes current scan</td>
7005 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7006 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7007 </tr>
7008 <tr>
7009 <td align="center">PASSIVE_<wbr/>SCAN</td>
7010 <td align="center">Camera device fails current scan</td>
7011 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7012 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7013 </tr>
7014 <tr>
7015 <td align="center">PASSIVE_<wbr/>SCAN</td>
7016 <td align="center">AF_<wbr/>TRIGGER</td>
7017 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7018 <td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7019 </tr>
7020 <tr>
7021 <td align="center">PASSIVE_<wbr/>SCAN</td>
7022 <td align="center">AF_<wbr/>TRIGGER</td>
7023 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7024 <td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7025 </tr>
7026 <tr>
7027 <td align="center">PASSIVE_<wbr/>SCAN</td>
7028 <td align="center">AF_<wbr/>CANCEL</td>
7029 <td align="center">INACTIVE</td>
7030 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7031 </tr>
7032 <tr>
7033 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7034 <td align="center">Camera device initiates new scan</td>
7035 <td align="center">PASSIVE_<wbr/>SCAN</td>
7036 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7037 </tr>
7038 <tr>
7039 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7040 <td align="center">Camera device initiates new scan</td>
7041 <td align="center">PASSIVE_<wbr/>SCAN</td>
7042 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7043 </tr>
7044 <tr>
7045 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7046 <td align="center">AF_<wbr/>TRIGGER</td>
7047 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7048 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7049 </tr>
7050 <tr>
7051 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7052 <td align="center">AF_<wbr/>TRIGGER</td>
7053 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7054 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7055 </tr>
7056 <tr>
7057 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7058 <td align="center">AF_<wbr/>TRIGGER</td>
7059 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7060 <td align="center">No effect</td>
7061 </tr>
7062 <tr>
7063 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7064 <td align="center">AF_<wbr/>CANCEL</td>
7065 <td align="center">INACTIVE</td>
7066 <td align="center">Restart AF scan</td>
7067 </tr>
7068 <tr>
7069 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7070 <td align="center">AF_<wbr/>TRIGGER</td>
7071 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7072 <td align="center">No effect</td>
7073 </tr>
7074 <tr>
7075 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7076 <td align="center">AF_<wbr/>CANCEL</td>
7077 <td align="center">INACTIVE</td>
7078 <td align="center">Restart AF scan</td>
7079 </tr>
7080 </tbody>
7081 </table>
7082 <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7083 (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7084 camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7085 will be evaluated in the context of the new mode in the request.<wbr/>
7086 See below table for examples:</p>
7087 <table>
7088 <thead>
7089 <tr>
7090 <th align="center">State</th>
7091 <th align="center">Transition Cause</th>
7092 <th align="center">New State</th>
7093 <th align="center">Notes</th>
7094 </tr>
7095 </thead>
7096 <tbody>
7097 <tr>
7098 <td align="center">any state</td>
7099 <td align="center">CAF--&gt;AUTO mode switch</td>
7100 <td align="center">INACTIVE</td>
7101 <td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7102 </tr>
7103 <tr>
7104 <td align="center">any state</td>
7105 <td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
7106 <td align="center">trigger-reachable states from INACTIVE</td>
7107 <td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7108 </tr>
7109 <tr>
7110 <td align="center">any state</td>
7111 <td align="center">AUTO--&gt;CAF mode switch</td>
7112 <td align="center">passively reachable states from INACTIVE</td>
7113 <td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7114 </tr>
7115 </tbody>
7116 </table>
7117             </td>
7118           </tr>
7119
7120
7121           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7122            <!-- end of entry -->
7123         
7124                 
7125           <tr class="entry" id="dynamic_android.control.afTriggerId">
7126             <td class="entry_name
7127                 entry_name_deprecated
7128              " rowspan="3">
7129               android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7130             </td>
7131             <td class="entry_type">
7132                 <span class="entry_type_name">int32</span>
7133
7134               <span class="entry_type_visibility"> [system]</span>
7135
7136
7137
7138               <span class="entry_type_deprecated">[deprecated] </span>
7139
7140
7141
7142             </td> <!-- entry_type -->
7143
7144             <td class="entry_description">
7145               <p>The ID sent with the latest
7146 CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7147             </td>
7148
7149             <td class="entry_units">
7150             </td>
7151
7152             <td class="entry_range">
7153               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7154             </td>
7155
7156             <td class="entry_tags">
7157             </td>
7158
7159           </tr>
7160           <tr class="entries_header">
7161             <th class="th_details" colspan="5">Details</th>
7162           </tr>
7163           <tr class="entry_cont">
7164             <td class="entry_details" colspan="5">
7165               <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7166 received yet by HAL.<wbr/> Always updated even if AF algorithm
7167 ignores the trigger</p>
7168             </td>
7169           </tr>
7170
7171
7172           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7173            <!-- end of entry -->
7174         
7175                 
7176           <tr class="entry" id="dynamic_android.control.awbLock">
7177             <td class="entry_name
7178              " rowspan="3">
7179               android.<wbr/>control.<wbr/>awb<wbr/>Lock
7180             </td>
7181             <td class="entry_type">
7182                 <span class="entry_type_name entry_type_name_enum">byte</span>
7183
7184               <span class="entry_type_visibility"> [public as boolean]</span>
7185
7186
7187               <span class="entry_type_hwlevel">[legacy] </span>
7188
7189
7190
7191                 <ul class="entry_type_enum">
7192                   <li>
7193                     <span class="entry_type_enum_name">OFF</span>
7194                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
7195 algorithm is free to update its parameters if in AUTO
7196 mode.<wbr/></p></span>
7197                   </li>
7198                   <li>
7199                     <span class="entry_type_enum_name">ON</span>
7200                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
7201 algorithm will not update its parameters while the lock
7202 is active.<wbr/></p></span>
7203                   </li>
7204                 </ul>
7205
7206             </td> <!-- entry_type -->
7207
7208             <td class="entry_description">
7209               <p>Whether auto-white balance (AWB) is currently locked to its
7210 latest calculated values.<wbr/></p>
7211             </td>
7212
7213             <td class="entry_units">
7214             </td>
7215
7216             <td class="entry_range">
7217             </td>
7218
7219             <td class="entry_tags">
7220               <ul class="entry_tags">
7221                   <li><a href="#tag_BC">BC</a></li>
7222               </ul>
7223             </td>
7224
7225           </tr>
7226           <tr class="entries_header">
7227             <th class="th_details" colspan="5">Details</th>
7228           </tr>
7229           <tr class="entry_cont">
7230             <td class="entry_details" colspan="5">
7231               <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
7232 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
7233 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
7234 get locked do not necessarily correspond to the settings that were present in the
7235 latest capture result received from the camera device,<wbr/> since additional captures
7236 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
7237 application is switching between automatic and manual control and wishes to eliminate
7238 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
7239 <ol>
7240 <li>Starting in auto-AWB mode:</li>
7241 <li>Lock AWB</li>
7242 <li>Wait for the first result to be output that has the AWB locked</li>
7243 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
7244 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
7245 </ol>
7246 <p>Note that AWB lock is only meaningful when
7247 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
7248 AWB is already fixed to a specific setting.<wbr/></p>
7249 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
7250             </td>
7251           </tr>
7252
7253
7254           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7255            <!-- end of entry -->
7256         
7257                 
7258           <tr class="entry" id="dynamic_android.control.awbMode">
7259             <td class="entry_name
7260              " rowspan="3">
7261               android.<wbr/>control.<wbr/>awb<wbr/>Mode
7262             </td>
7263             <td class="entry_type">
7264                 <span class="entry_type_name entry_type_name_enum">byte</span>
7265
7266               <span class="entry_type_visibility"> [public]</span>
7267
7268
7269               <span class="entry_type_hwlevel">[legacy] </span>
7270
7271
7272
7273                 <ul class="entry_type_enum">
7274                   <li>
7275                     <span class="entry_type_enum_name">OFF</span>
7276                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
7277 <p>The application-selected color transform matrix
7278 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
7279 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
7280 device for manual white balance control.<wbr/></p></span>
7281                   </li>
7282                   <li>
7283                     <span class="entry_type_enum_name">AUTO</span>
7284                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
7285 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7286 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7287 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7288 values used by the camera device for the transform and gains
7289 will be available in the capture result for this request.<wbr/></p></span>
7290                   </li>
7291                   <li>
7292                     <span class="entry_type_enum_name">INCANDESCENT</span>
7293                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7294 the camera device uses incandescent light as the assumed scene
7295 illumination for white balance.<wbr/></p>
7296 <p>While the exact white balance transforms are up to the
7297 camera device,<wbr/> they will approximately match the CIE
7298 standard illuminant A.<wbr/></p>
7299 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7300 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7301 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7302 values used by the camera device for the transform and gains
7303 will be available in the capture result for this request.<wbr/></p></span>
7304                   </li>
7305                   <li>
7306                     <span class="entry_type_enum_name">FLUORESCENT</span>
7307                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7308 the camera device uses fluorescent light as the assumed scene
7309 illumination for white balance.<wbr/></p>
7310 <p>While the exact white balance transforms are up to the
7311 camera device,<wbr/> they will approximately match the CIE
7312 standard illuminant F2.<wbr/></p>
7313 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7314 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7315 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7316 values used by the camera device for the transform and gains
7317 will be available in the capture result for this request.<wbr/></p></span>
7318                   </li>
7319                   <li>
7320                     <span class="entry_type_enum_name">WARM_FLUORESCENT</span>
7321                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7322 the camera device uses warm fluorescent light as the assumed scene
7323 illumination for white balance.<wbr/></p>
7324 <p>While the exact white balance transforms are up to the
7325 camera device,<wbr/> they will approximately match the CIE
7326 standard illuminant F4.<wbr/></p>
7327 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7328 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7329 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7330 values used by the camera device for the transform and gains
7331 will be available in the capture result for this request.<wbr/></p></span>
7332                   </li>
7333                   <li>
7334                     <span class="entry_type_enum_name">DAYLIGHT</span>
7335                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7336 the camera device uses daylight light as the assumed scene
7337 illumination for white balance.<wbr/></p>
7338 <p>While the exact white balance transforms are up to the
7339 camera device,<wbr/> they will approximately match the CIE
7340 standard illuminant D65.<wbr/></p>
7341 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7342 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7343 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7344 values used by the camera device for the transform and gains
7345 will be available in the capture result for this request.<wbr/></p></span>
7346                   </li>
7347                   <li>
7348                     <span class="entry_type_enum_name">CLOUDY_DAYLIGHT</span>
7349                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7350 the camera device uses cloudy daylight light as the assumed scene
7351 illumination for white balance.<wbr/></p>
7352 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7353 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7354 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7355 values used by the camera device for the transform and gains
7356 will be available in the capture result for this request.<wbr/></p></span>
7357                   </li>
7358                   <li>
7359                     <span class="entry_type_enum_name">TWILIGHT</span>
7360                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7361 the camera device uses twilight light as the assumed scene
7362 illumination for white balance.<wbr/></p>
7363 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7364 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7365 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7366 values used by the camera device for the transform and gains
7367 will be available in the capture result for this request.<wbr/></p></span>
7368                   </li>
7369                   <li>
7370                     <span class="entry_type_enum_name">SHADE</span>
7371                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
7372 the camera device uses shade light as the assumed scene
7373 illumination for white balance.<wbr/></p>
7374 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
7375 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
7376 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
7377 values used by the camera device for the transform and gains
7378 will be available in the capture result for this request.<wbr/></p></span>
7379                   </li>
7380                 </ul>
7381
7382             </td> <!-- entry_type -->
7383
7384             <td class="entry_description">
7385               <p>Whether auto-white balance (AWB) is currently setting the color
7386 transform fields,<wbr/> and what its illumination target
7387 is.<wbr/></p>
7388             </td>
7389
7390             <td class="entry_units">
7391             </td>
7392
7393             <td class="entry_range">
7394               <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
7395             </td>
7396
7397             <td class="entry_tags">
7398               <ul class="entry_tags">
7399                   <li><a href="#tag_BC">BC</a></li>
7400               </ul>
7401             </td>
7402
7403           </tr>
7404           <tr class="entries_header">
7405             <th class="th_details" colspan="5">Details</th>
7406           </tr>
7407           <tr class="entry_cont">
7408             <td class="entry_details" colspan="5">
7409               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
7410 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
7411 routine is enabled,<wbr/> overriding the application's selected
7412 <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
7413 <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>
7414 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
7415 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
7416 setting AE mode to OFF.<wbr/></p>
7417 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
7418 routine is disabled.<wbr/> The application manually controls the white
7419 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>
7420 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
7421 <p>When set to any other modes,<wbr/> the camera device's auto-white
7422 balance routine is disabled.<wbr/> The camera device uses each
7423 particular illumination target for white balance
7424 adjustment.<wbr/> The application's values for
7425 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
7426 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
7427 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
7428             </td>
7429           </tr>
7430
7431
7432           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7433            <!-- end of entry -->
7434         
7435                 
7436           <tr class="entry" id="dynamic_android.control.awbRegions">
7437             <td class="entry_name
7438              " rowspan="5">
7439               android.<wbr/>control.<wbr/>awb<wbr/>Regions
7440             </td>
7441             <td class="entry_type">
7442                 <span class="entry_type_name">int32</span>
7443                 <span class="entry_type_container">x</span>
7444
7445                 <span class="entry_type_array">
7446                   5 x area_count
7447                 </span>
7448               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7449
7450
7451
7452
7453
7454
7455             </td> <!-- entry_type -->
7456
7457             <td class="entry_description">
7458               <p>List of metering areas to use for auto-white-balance illuminant
7459 estimation.<wbr/></p>
7460             </td>
7461
7462             <td class="entry_units">
7463               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7464             </td>
7465
7466             <td class="entry_range">
7467               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7468 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7469             </td>
7470
7471             <td class="entry_tags">
7472               <ul class="entry_tags">
7473                   <li><a href="#tag_BC">BC</a></li>
7474               </ul>
7475             </td>
7476
7477           </tr>
7478           <tr class="entries_header">
7479             <th class="th_details" colspan="5">Details</th>
7480           </tr>
7481           <tr class="entry_cont">
7482             <td class="entry_details" colspan="5">
7483               <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
7484 Otherwise will always be present.<wbr/></p>
7485 <p>The maximum number of regions supported by the device is determined by the value
7486 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
7487 <p>The coordinate system is based on the active pixel array,<wbr/>
7488 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7489 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7490 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7491 bottom-right pixel in the active pixel array.<wbr/></p>
7492 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
7493 for every pixel in the area.<wbr/> This means that a large metering area
7494 with the same weight as a smaller area will have more effect in
7495 the metering result.<wbr/> Metering areas can partially overlap and the
7496 camera device will add the weights in the overlap region.<wbr/></p>
7497 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
7498 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
7499 0 weight is ignored.<wbr/></p>
7500 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7501 camera device.<wbr/></p>
7502 <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
7503 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7504 region and output only the intersection rectangle as the metering region in the result
7505 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
7506 not reported in the result metadata.<wbr/></p>
7507             </td>
7508           </tr>
7509
7510           <tr class="entries_header">
7511             <th class="th_details" colspan="5">HAL Implementation Details</th>
7512           </tr>
7513           <tr class="entry_cont">
7514             <td class="entry_details" colspan="5">
7515               <p>The HAL level representation of MeteringRectangle[] is a
7516 int[5 * area_<wbr/>count].<wbr/>
7517 Every five elements represent a metering region of
7518 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7519 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7520 exclusive on xmax and ymax.<wbr/></p>
7521             </td>
7522           </tr>
7523
7524           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7525            <!-- end of entry -->
7526         
7527                 
7528           <tr class="entry" id="dynamic_android.control.captureIntent">
7529             <td class="entry_name
7530              " rowspan="3">
7531               android.<wbr/>control.<wbr/>capture<wbr/>Intent
7532             </td>
7533             <td class="entry_type">
7534                 <span class="entry_type_name entry_type_name_enum">byte</span>
7535
7536               <span class="entry_type_visibility"> [public]</span>
7537
7538
7539               <span class="entry_type_hwlevel">[legacy] </span>
7540
7541
7542
7543                 <ul class="entry_type_enum">
7544                   <li>
7545                     <span class="entry_type_enum_name">CUSTOM</span>
7546                     <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
7547 categories.<wbr/> The camera device will default to preview-like
7548 behavior.<wbr/></p></span>
7549                   </li>
7550                   <li>
7551                     <span class="entry_type_enum_name">PREVIEW</span>
7552                     <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
7553 <p>The precapture trigger may be used to start off a metering
7554 w/<wbr/>flash sequence.<wbr/></p></span>
7555                   </li>
7556                   <li>
7557                     <span class="entry_type_enum_name">STILL_CAPTURE</span>
7558                     <span class="entry_type_enum_notes"><p>This request is for a still capture-type
7559 use case.<wbr/></p>
7560 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
7561                   </li>
7562                   <li>
7563                     <span class="entry_type_enum_name">VIDEO_RECORD</span>
7564                     <span class="entry_type_enum_notes"><p>This request is for a video recording
7565 use case.<wbr/></p></span>
7566                   </li>
7567                   <li>
7568                     <span class="entry_type_enum_name">VIDEO_SNAPSHOT</span>
7569                     <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
7570 image while recording video) use case.<wbr/></p>
7571 <p>The camera device should take the highest-quality image
7572 possible (given the other settings) without disrupting the
7573 frame rate of video recording.<wbr/>  </p></span>
7574                   </li>
7575                   <li>
7576                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG</span>
7577                     <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
7578 application will stream full-resolution images and
7579 reprocess one or several later for a final
7580 capture.<wbr/></p></span>
7581                   </li>
7582                   <li>
7583                     <span class="entry_type_enum_name">MANUAL</span>
7584                     <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
7585 the applications want to directly control the capture parameters.<wbr/></p>
7586 <p>For example,<wbr/> the application may wish to manually control
7587 <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>
7588                   </li>
7589                 </ul>
7590
7591             </td> <!-- entry_type -->
7592
7593             <td class="entry_description">
7594               <p>Information to the camera device 3A (auto-exposure,<wbr/>
7595 auto-focus,<wbr/> auto-white balance) routines about the purpose
7596 of this capture,<wbr/> to help the camera device to decide optimal 3A
7597 strategy.<wbr/></p>
7598             </td>
7599
7600             <td class="entry_units">
7601             </td>
7602
7603             <td class="entry_range">
7604             </td>
7605
7606             <td class="entry_tags">
7607               <ul class="entry_tags">
7608                   <li><a href="#tag_BC">BC</a></li>
7609               </ul>
7610             </td>
7611
7612           </tr>
7613           <tr class="entries_header">
7614             <th class="th_details" colspan="5">Details</th>
7615           </tr>
7616           <tr class="entry_cont">
7617             <td class="entry_details" colspan="5">
7618               <p>This control (except for MANUAL) is only effective if
7619 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
7620 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
7621 contains PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/> MANUAL will be supported if
7622 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR.<wbr/> Other intent values are
7623 always supported.<wbr/></p>
7624             </td>
7625           </tr>
7626
7627
7628           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7629            <!-- end of entry -->
7630         
7631                 
7632           <tr class="entry" id="dynamic_android.control.awbState">
7633             <td class="entry_name
7634              " rowspan="3">
7635               android.<wbr/>control.<wbr/>awb<wbr/>State
7636             </td>
7637             <td class="entry_type">
7638                 <span class="entry_type_name entry_type_name_enum">byte</span>
7639
7640               <span class="entry_type_visibility"> [public]</span>
7641
7642
7643               <span class="entry_type_hwlevel">[limited] </span>
7644
7645
7646
7647                 <ul class="entry_type_enum">
7648                   <li>
7649                     <span class="entry_type_enum_name">INACTIVE</span>
7650                     <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
7651 <p>When a camera device is opened,<wbr/> it starts in this
7652 state.<wbr/> This is a transient state,<wbr/> the camera device may
7653 skip reporting this state in capture
7654 result.<wbr/></p></span>
7655                   </li>
7656                   <li>
7657                     <span class="entry_type_enum_name">SEARCHING</span>
7658                     <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
7659 values for the current scene.<wbr/></p>
7660 <p>This is a transient state,<wbr/> the camera device
7661 may skip reporting this state in capture result.<wbr/></p></span>
7662                   </li>
7663                   <li>
7664                     <span class="entry_type_enum_name">CONVERGED</span>
7665                     <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
7666 current scene.<wbr/></p></span>
7667                   </li>
7668                   <li>
7669                     <span class="entry_type_enum_name">LOCKED</span>
7670                     <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
7671                   </li>
7672                 </ul>
7673
7674             </td> <!-- entry_type -->
7675
7676             <td class="entry_description">
7677               <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
7678             </td>
7679
7680             <td class="entry_units">
7681             </td>
7682
7683             <td class="entry_range">
7684             </td>
7685
7686             <td class="entry_tags">
7687             </td>
7688
7689           </tr>
7690           <tr class="entries_header">
7691             <th class="th_details" colspan="5">Details</th>
7692           </tr>
7693           <tr class="entry_cont">
7694             <td class="entry_details" colspan="5">
7695               <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
7696 resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7697 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
7698 the algorithm states to INACTIVE.<wbr/></p>
7699 <p>The camera device can do several state transitions between two results,<wbr/> if it is
7700 allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
7701 a result.<wbr/></p>
7702 <p>The state in the result is the state for this image (in sync with this image): if
7703 AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
7704 be good to use.<wbr/></p>
7705 <p>Below are state transition tables for different AWB modes.<wbr/></p>
7706 <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
7707 <table>
7708 <thead>
7709 <tr>
7710 <th align="center">State</th>
7711 <th align="center">Transition Cause</th>
7712 <th align="center">New State</th>
7713 <th align="center">Notes</th>
7714 </tr>
7715 </thead>
7716 <tbody>
7717 <tr>
7718 <td align="center">INACTIVE</td>
7719 <td align="center"></td>
7720 <td align="center">INACTIVE</td>
7721 <td align="center">Camera device auto white balance algorithm is disabled</td>
7722 </tr>
7723 </tbody>
7724 </table>
7725 <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
7726 <table>
7727 <thead>
7728 <tr>
7729 <th align="center">State</th>
7730 <th align="center">Transition Cause</th>
7731 <th align="center">New State</th>
7732 <th align="center">Notes</th>
7733 </tr>
7734 </thead>
7735 <tbody>
7736 <tr>
7737 <td align="center">INACTIVE</td>
7738 <td align="center">Camera device initiates AWB scan</td>
7739 <td align="center">SEARCHING</td>
7740 <td align="center">Values changing</td>
7741 </tr>
7742 <tr>
7743 <td align="center">INACTIVE</td>
7744 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7745 <td align="center">LOCKED</td>
7746 <td align="center">Values locked</td>
7747 </tr>
7748 <tr>
7749 <td align="center">SEARCHING</td>
7750 <td align="center">Camera device finishes AWB scan</td>
7751 <td align="center">CONVERGED</td>
7752 <td align="center">Good values,<wbr/> not changing</td>
7753 </tr>
7754 <tr>
7755 <td align="center">SEARCHING</td>
7756 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7757 <td align="center">LOCKED</td>
7758 <td align="center">Values locked</td>
7759 </tr>
7760 <tr>
7761 <td align="center">CONVERGED</td>
7762 <td align="center">Camera device initiates AWB scan</td>
7763 <td align="center">SEARCHING</td>
7764 <td align="center">Values changing</td>
7765 </tr>
7766 <tr>
7767 <td align="center">CONVERGED</td>
7768 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
7769 <td align="center">LOCKED</td>
7770 <td align="center">Values locked</td>
7771 </tr>
7772 <tr>
7773 <td align="center">LOCKED</td>
7774 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
7775 <td align="center">SEARCHING</td>
7776 <td align="center">Values not good after unlock</td>
7777 </tr>
7778 </tbody>
7779 </table>
7780 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7781 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7782 can be skipped in that manner is called a transient state.<wbr/></p>
7783 <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
7784 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
7785 transient states between two results.<wbr/> See below table for examples:</p>
7786 <table>
7787 <thead>
7788 <tr>
7789 <th align="center">State</th>
7790 <th align="center">Transition Cause</th>
7791 <th align="center">New State</th>
7792 <th align="center">Notes</th>
7793 </tr>
7794 </thead>
7795 <tbody>
7796 <tr>
7797 <td align="center">INACTIVE</td>
7798 <td align="center">Camera device finished AWB scan</td>
7799 <td align="center">CONVERGED</td>
7800 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
7801 </tr>
7802 <tr>
7803 <td align="center">LOCKED</td>
7804 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
7805 <td align="center">CONVERGED</td>
7806 <td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
7807 </tr>
7808 </tbody>
7809 </table>
7810             </td>
7811           </tr>
7812
7813
7814           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7815            <!-- end of entry -->
7816         
7817                 
7818           <tr class="entry" id="dynamic_android.control.effectMode">
7819             <td class="entry_name
7820              " rowspan="3">
7821               android.<wbr/>control.<wbr/>effect<wbr/>Mode
7822             </td>
7823             <td class="entry_type">
7824                 <span class="entry_type_name entry_type_name_enum">byte</span>
7825
7826               <span class="entry_type_visibility"> [public]</span>
7827
7828
7829               <span class="entry_type_hwlevel">[legacy] </span>
7830
7831
7832
7833                 <ul class="entry_type_enum">
7834                   <li>
7835                     <span class="entry_type_enum_name">OFF</span>
7836                     <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
7837                   </li>
7838                   <li>
7839                     <span class="entry_type_enum_name">MONO</span>
7840                     <span class="entry_type_enum_optional">[optional]</span>
7841                     <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
7842 a single color.<wbr/></p>
7843 <p>This will typically be grayscale.<wbr/></p></span>
7844                   </li>
7845                   <li>
7846                     <span class="entry_type_enum_name">NEGATIVE</span>
7847                     <span class="entry_type_enum_optional">[optional]</span>
7848                     <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
7849 are inverted.<wbr/></p></span>
7850                   </li>
7851                   <li>
7852                     <span class="entry_type_enum_name">SOLARIZE</span>
7853                     <span class="entry_type_enum_optional">[optional]</span>
7854                     <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
7855 image is wholly or partially reversed in
7856 tone.<wbr/></p></span>
7857                   </li>
7858                   <li>
7859                     <span class="entry_type_enum_name">SEPIA</span>
7860                     <span class="entry_type_enum_optional">[optional]</span>
7861                     <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
7862 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
7863                   </li>
7864                   <li>
7865                     <span class="entry_type_enum_name">POSTERIZE</span>
7866                     <span class="entry_type_enum_optional">[optional]</span>
7867                     <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
7868 discrete regions of tone rather than a continuous
7869 gradient of tones.<wbr/></p></span>
7870                   </li>
7871                   <li>
7872                     <span class="entry_type_enum_name">WHITEBOARD</span>
7873                     <span class="entry_type_enum_optional">[optional]</span>
7874                     <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
7875 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
7876                   </li>
7877                   <li>
7878                     <span class="entry_type_enum_name">BLACKBOARD</span>
7879                     <span class="entry_type_enum_optional">[optional]</span>
7880                     <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
7881 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
7882                   </li>
7883                   <li>
7884                     <span class="entry_type_enum_name">AQUA</span>
7885                     <span class="entry_type_enum_optional">[optional]</span>
7886                     <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
7887                   </li>
7888                 </ul>
7889
7890             </td> <!-- entry_type -->
7891
7892             <td class="entry_description">
7893               <p>A special color effect to apply.<wbr/></p>
7894             </td>
7895
7896             <td class="entry_units">
7897             </td>
7898
7899             <td class="entry_range">
7900               <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
7901             </td>
7902
7903             <td class="entry_tags">
7904               <ul class="entry_tags">
7905                   <li><a href="#tag_BC">BC</a></li>
7906               </ul>
7907             </td>
7908
7909           </tr>
7910           <tr class="entries_header">
7911             <th class="th_details" colspan="5">Details</th>
7912           </tr>
7913           <tr class="entry_cont">
7914             <td class="entry_details" colspan="5">
7915               <p>When this mode is set,<wbr/> a color effect will be applied
7916 to images produced by the camera device.<wbr/> The interpretation
7917 and implementation of these color effects is left to the
7918 implementor of the camera device,<wbr/> and should not be
7919 depended on to be consistent (or present) across all
7920 devices.<wbr/></p>
7921             </td>
7922           </tr>
7923
7924
7925           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
7926            <!-- end of entry -->
7927         
7928                 
7929           <tr class="entry" id="dynamic_android.control.mode">
7930             <td class="entry_name
7931              " rowspan="3">
7932               android.<wbr/>control.<wbr/>mode
7933             </td>
7934             <td class="entry_type">
7935                 <span class="entry_type_name entry_type_name_enum">byte</span>
7936
7937               <span class="entry_type_visibility"> [public]</span>
7938
7939
7940               <span class="entry_type_hwlevel">[legacy] </span>
7941
7942
7943
7944                 <ul class="entry_type_enum">
7945                   <li>
7946                     <span class="entry_type_enum_name">OFF</span>
7947                     <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
7948 <p>All control by the device's metering and focusing (3A)
7949 routines is disabled,<wbr/> and no other settings in
7950 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
7951 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
7952 device to select post-processing values for processing
7953 blocks that do not allow for manual control,<wbr/> or are not
7954 exposed by the camera API.<wbr/></p>
7955 <p>However,<wbr/> the camera device's 3A routines may continue to
7956 collect statistics and update their internal state so that
7957 when control is switched to AUTO mode,<wbr/> good control values
7958 can be immediately applied.<wbr/></p></span>
7959                   </li>
7960                   <li>
7961                     <span class="entry_type_enum_name">AUTO</span>
7962                     <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
7963 <p>Manual control of capture parameters is disabled.<wbr/> All
7964 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
7965 effect.<wbr/></p></span>
7966                   </li>
7967                   <li>
7968                     <span class="entry_type_enum_name">USE_SCENE_MODE</span>
7969                     <span class="entry_type_enum_optional">[optional]</span>
7970                     <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
7971 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
7972 control.<wbr/>afMode controls; the camera device will ignore
7973 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
7974 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still
7975 active.<wbr/>  This setting can only be used if scene mode is
7976 supported (i.<wbr/>e.<wbr/> <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
7977 contain some modes other than DISABLED).<wbr/></p></span>
7978                   </li>
7979                   <li>
7980                     <span class="entry_type_enum_name">OFF_KEEP_STATE</span>
7981                     <span class="entry_type_enum_optional">[optional]</span>
7982                     <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
7983 used by camera device background auto-exposure,<wbr/> auto-white balance and
7984 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
7985 <p>Specifically,<wbr/> the 3A routines are locked to the last
7986 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
7987 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
7988 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
7989 discarded by the camera device.<wbr/></p></span>
7990                   </li>
7991                 </ul>
7992
7993             </td> <!-- entry_type -->
7994
7995             <td class="entry_description">
7996               <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
7997 routines.<wbr/></p>
7998             </td>
7999
8000             <td class="entry_units">
8001             </td>
8002
8003             <td class="entry_range">
8004               <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8005             </td>
8006
8007             <td class="entry_tags">
8008               <ul class="entry_tags">
8009                   <li><a href="#tag_BC">BC</a></li>
8010               </ul>
8011             </td>
8012
8013           </tr>
8014           <tr class="entries_header">
8015             <th class="th_details" colspan="5">Details</th>
8016           </tr>
8017           <tr class="entry_cont">
8018             <td class="entry_details" colspan="5">
8019               <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8020 by the camera device is disabled.<wbr/> The application must set the fields for
8021 capture parameters itself.<wbr/></p>
8022 <p>When set to AUTO,<wbr/> the individual algorithm controls in
8023 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>
8024 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8025 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device implements
8026 one of the scene mode settings (such as ACTION,<wbr/> SUNSET,<wbr/> or PARTY)
8027 as it wishes.<wbr/> The camera device scene mode 3A settings are provided by
8028 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
8029 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8030 is that this frame will not be used by camera device background 3A statistics
8031 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8032 where the application doesn't want a 3A manual control capture to affect
8033 the subsequent auto 3A capture results.<wbr/></p>
8034             </td>
8035           </tr>
8036
8037
8038           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8039            <!-- end of entry -->
8040         
8041                 
8042           <tr class="entry" id="dynamic_android.control.sceneMode">
8043             <td class="entry_name
8044              " rowspan="5">
8045               android.<wbr/>control.<wbr/>scene<wbr/>Mode
8046             </td>
8047             <td class="entry_type">
8048                 <span class="entry_type_name entry_type_name_enum">byte</span>
8049
8050               <span class="entry_type_visibility"> [public]</span>
8051
8052
8053               <span class="entry_type_hwlevel">[legacy] </span>
8054
8055
8056
8057                 <ul class="entry_type_enum">
8058                   <li>
8059                     <span class="entry_type_enum_name">DISABLED</span>
8060                     <span class="entry_type_enum_value">0</span>
8061                     <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8062                   </li>
8063                   <li>
8064                     <span class="entry_type_enum_name">FACE_PRIORITY</span>
8065                     <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8066 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8067 auto-exposure routines.<wbr/></p>
8068 <p>If face detection statistics are disabled
8069 (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/>
8070 this should still operate correctly (but will not return
8071 face detection statistics to the framework).<wbr/></p>
8072 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8073 <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>
8074 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8075                   </li>
8076                   <li>
8077                     <span class="entry_type_enum_name">ACTION</span>
8078                     <span class="entry_type_enum_optional">[optional]</span>
8079                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8080 <p>Similar to SPORTS.<wbr/></p></span>
8081                   </li>
8082                   <li>
8083                     <span class="entry_type_enum_name">PORTRAIT</span>
8084                     <span class="entry_type_enum_optional">[optional]</span>
8085                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8086                   </li>
8087                   <li>
8088                     <span class="entry_type_enum_name">LANDSCAPE</span>
8089                     <span class="entry_type_enum_optional">[optional]</span>
8090                     <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8091                   </li>
8092                   <li>
8093                     <span class="entry_type_enum_name">NIGHT</span>
8094                     <span class="entry_type_enum_optional">[optional]</span>
8095                     <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8096                   </li>
8097                   <li>
8098                     <span class="entry_type_enum_name">NIGHT_PORTRAIT</span>
8099                     <span class="entry_type_enum_optional">[optional]</span>
8100                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8101 settings.<wbr/></p></span>
8102                   </li>
8103                   <li>
8104                     <span class="entry_type_enum_name">THEATRE</span>
8105                     <span class="entry_type_enum_optional">[optional]</span>
8106                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8107 remain off.<wbr/></p></span>
8108                   </li>
8109                   <li>
8110                     <span class="entry_type_enum_name">BEACH</span>
8111                     <span class="entry_type_enum_optional">[optional]</span>
8112                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8113                   </li>
8114                   <li>
8115                     <span class="entry_type_enum_name">SNOW</span>
8116                     <span class="entry_type_enum_optional">[optional]</span>
8117                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8118                   </li>
8119                   <li>
8120                     <span class="entry_type_enum_name">SUNSET</span>
8121                     <span class="entry_type_enum_optional">[optional]</span>
8122                     <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8123                   </li>
8124                   <li>
8125                     <span class="entry_type_enum_name">STEADYPHOTO</span>
8126                     <span class="entry_type_enum_optional">[optional]</span>
8127                     <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8128 device motion (for example: due to hand shake).<wbr/></p></span>
8129                   </li>
8130                   <li>
8131                     <span class="entry_type_enum_name">FIREWORKS</span>
8132                     <span class="entry_type_enum_optional">[optional]</span>
8133                     <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8134                   </li>
8135                   <li>
8136                     <span class="entry_type_enum_name">SPORTS</span>
8137                     <span class="entry_type_enum_optional">[optional]</span>
8138                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8139 <p>Similar to ACTION.<wbr/></p></span>
8140                   </li>
8141                   <li>
8142                     <span class="entry_type_enum_name">PARTY</span>
8143                     <span class="entry_type_enum_optional">[optional]</span>
8144                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8145 people.<wbr/></p></span>
8146                   </li>
8147                   <li>
8148                     <span class="entry_type_enum_name">CANDLELIGHT</span>
8149                     <span class="entry_type_enum_optional">[optional]</span>
8150                     <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
8151 is a flame.<wbr/></p></span>
8152                   </li>
8153                   <li>
8154                     <span class="entry_type_enum_name">BARCODE</span>
8155                     <span class="entry_type_enum_optional">[optional]</span>
8156                     <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
8157 for use by camera applications that wish to read the
8158 barcode value.<wbr/></p></span>
8159                   </li>
8160                   <li>
8161                     <span class="entry_type_enum_name">HIGH_SPEED_VIDEO</span>
8162                     <span class="entry_type_enum_optional">[optional]</span>
8163                     <span class="entry_type_enum_notes"><p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
8164 <p>The supported high speed video sizes and fps ranges are specified in
8165 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
8166 output frame rates,<wbr/> the application is only allowed to select video size
8167 and fps range combinations listed in this static metadata.<wbr/> The fps range
8168 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
8169 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
8170 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
8171 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
8172 and post-processing parameters is possible.<wbr/> All other controls operate the
8173 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
8174 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
8175 <ul>
8176 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
8177 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
8178 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
8179 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
8180 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
8181 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
8182 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
8183 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
8184 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
8185 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
8186 </ul>
8187 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
8188 <ul>
8189 <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>
8190 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
8191 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
8192 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
8193 </ul>
8194 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
8195 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
8196 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
8197 the application need check if the video encoder is capable of supporting the
8198 high frame rate for a given video size,<wbr/> or it will end up with lower recording
8199 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
8200 rate will be bounded by the screen refresh rate.<wbr/></p>
8201 <p>The camera device will only support up to 2 output high speed streams
8202 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
8203 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
8204 <ul>
8205 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
8206 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
8207 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>
8208 <li>The stream sizes are selected from the sizes reported by
8209 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
8210 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
8211 </ul>
8212 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
8213 <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/>
8214 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
8215 and the returned capture result metadata will give the fps range choosen
8216 by the camera device.<wbr/></p>
8217 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
8218 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
8219 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
8220                   </li>
8221                   <li>
8222                     <span class="entry_type_enum_name">HDR</span>
8223                     <span class="entry_type_enum_optional">[optional]</span>
8224                     <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
8225 <p>In this scene mode,<wbr/> the camera device captures images
8226 that keep a larger range of scene illumination levels
8227 visible in the final image.<wbr/> For example,<wbr/> when taking a
8228 picture of a object in front of a bright window,<wbr/> both
8229 the object and the scene through the window may be
8230 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
8231 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
8232 HDR mode generally takes much longer to capture a single
8233 image,<wbr/> has no user control,<wbr/> and may have other artifacts
8234 depending on the HDR method used.<wbr/></p>
8235 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
8236 than regular captures.<wbr/></p>
8237 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
8238 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
8239 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
8240 using a high dynamic range capture technique.<wbr/>  On LEGACY
8241 devices,<wbr/> captures that target a JPEG-format output will
8242 be captured with HDR,<wbr/> and the capture intent is not
8243 relevant.<wbr/></p>
8244 <p>The HDR capture may involve the device capturing a burst
8245 of images internally and combining them into one,<wbr/> or it
8246 may involve the device using specialized high dynamic
8247 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
8248 produced in response to a capture request submitted
8249 while in HDR mode.<wbr/></p>
8250 <p>Since substantial post-processing is generally needed to
8251 produce an HDR image,<wbr/> only YUV and JPEG outputs are
8252 supported for LIMITED/<wbr/>FULL device HDR captures,<wbr/> and only
8253 JPEG outputs are supported for LEGACY HDR
8254 captures.<wbr/> Using a RAW output for HDR capture is not
8255 supported.<wbr/></p></span>
8256                   </li>
8257                 </ul>
8258
8259             </td> <!-- entry_type -->
8260
8261             <td class="entry_description">
8262               <p>Control for which scene mode is currently active.<wbr/></p>
8263             </td>
8264
8265             <td class="entry_units">
8266             </td>
8267
8268             <td class="entry_range">
8269               <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
8270             </td>
8271
8272             <td class="entry_tags">
8273               <ul class="entry_tags">
8274                   <li><a href="#tag_BC">BC</a></li>
8275               </ul>
8276             </td>
8277
8278           </tr>
8279           <tr class="entries_header">
8280             <th class="th_details" colspan="5">Details</th>
8281           </tr>
8282           <tr class="entry_cont">
8283             <td class="entry_details" colspan="5">
8284               <p>Scene modes are custom camera modes optimized for a certain set of conditions and
8285 capture settings.<wbr/></p>
8286 <p>This is the mode that that is active when
8287 <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/>
8288 these modes will disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8289 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> while in use.<wbr/></p>
8290 <p>The interpretation and implementation of these scene modes is left
8291 to the implementor of the camera device.<wbr/> Their behavior will not be
8292 consistent across all devices,<wbr/> and any given device may only implement
8293 a subset of these modes.<wbr/></p>
8294             </td>
8295           </tr>
8296
8297           <tr class="entries_header">
8298             <th class="th_details" colspan="5">HAL Implementation Details</th>
8299           </tr>
8300           <tr class="entry_cont">
8301             <td class="entry_details" colspan="5">
8302               <p>HAL implementations that include scene modes are expected to provide
8303 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8304 <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
8305 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
8306 <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/>
8307 the HAL must list supported video size and fps range in
8308 <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/>
8309 1280x720,<wbr/> if the HAL has two different sensor configurations for normal streaming
8310 mode and high speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture
8311 requests,<wbr/> the HAL may have to switch between different sensor modes.<wbr/></p>
8312             </td>
8313           </tr>
8314
8315           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8316            <!-- end of entry -->
8317         
8318                 
8319           <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
8320             <td class="entry_name
8321              " rowspan="3">
8322               android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
8323             </td>
8324             <td class="entry_type">
8325                 <span class="entry_type_name entry_type_name_enum">byte</span>
8326
8327               <span class="entry_type_visibility"> [public]</span>
8328
8329
8330               <span class="entry_type_hwlevel">[legacy] </span>
8331
8332
8333
8334                 <ul class="entry_type_enum">
8335                   <li>
8336                     <span class="entry_type_enum_name">OFF</span>
8337                     <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
8338                   </li>
8339                   <li>
8340                     <span class="entry_type_enum_name">ON</span>
8341                     <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
8342                   </li>
8343                 </ul>
8344
8345             </td> <!-- entry_type -->
8346
8347             <td class="entry_description">
8348               <p>Whether video stabilization is
8349 active.<wbr/></p>
8350             </td>
8351
8352             <td class="entry_units">
8353             </td>
8354
8355             <td class="entry_range">
8356             </td>
8357
8358             <td class="entry_tags">
8359               <ul class="entry_tags">
8360                   <li><a href="#tag_BC">BC</a></li>
8361               </ul>
8362             </td>
8363
8364           </tr>
8365           <tr class="entries_header">
8366             <th class="th_details" colspan="5">Details</th>
8367           </tr>
8368           <tr class="entry_cont">
8369             <td class="entry_details" colspan="5">
8370               <p>Video stabilization automatically translates and scales images from
8371 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
8372 <p>If enabled,<wbr/> video stabilization can modify the
8373 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
8374 <p>Switching between different video stabilization modes may take several
8375 frames to initialize,<wbr/> the camera device will report the current mode
8376 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
8377 the video stabilization modes in the first several capture results may
8378 still be "OFF",<wbr/> and it will become "ON" when the initialization is
8379 done.<wbr/></p>
8380 <p>If a camera device supports both this mode and OIS
8381 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
8382 produce undesirable interaction,<wbr/> so it is recommended not to enable
8383 both at the same time.<wbr/></p>
8384             </td>
8385           </tr>
8386
8387
8388           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8389            <!-- end of entry -->
8390         
8391         
8392
8393       <!-- end of kind -->
8394       </tbody>
8395
8396   <!-- end of section -->
8397   <tr><td colspan="6" id="section_demosaic" class="section">demosaic</td></tr>
8398
8399
8400       <tr><td colspan="6" class="kind">controls</td></tr>
8401
8402       <thead class="entries_header">
8403         <tr>
8404           <th class="th_name">Property Name</th>
8405           <th class="th_type">Type</th>
8406           <th class="th_description">Description</th>
8407           <th class="th_units">Units</th>
8408           <th class="th_range">Range</th>
8409           <th class="th_tags">Tags</th>
8410         </tr>
8411       </thead>
8412
8413       <tbody>
8414
8415         
8416
8417         
8418
8419         
8420
8421         
8422
8423                 
8424           <tr class="entry" id="controls_android.demosaic.mode">
8425             <td class="entry_name
8426              " rowspan="1">
8427               android.<wbr/>demosaic.<wbr/>mode
8428             </td>
8429             <td class="entry_type">
8430                 <span class="entry_type_name entry_type_name_enum">byte</span>
8431
8432               <span class="entry_type_visibility"> [system]</span>
8433
8434
8435
8436
8437
8438                 <ul class="entry_type_enum">
8439                   <li>
8440                     <span class="entry_type_enum_name">FAST</span>
8441                     <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
8442 Bayer RAW output.<wbr/></p></span>
8443                   </li>
8444                   <li>
8445                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
8446                     <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
8447 relative to raw output.<wbr/></p></span>
8448                   </li>
8449                 </ul>
8450
8451             </td> <!-- entry_type -->
8452
8453             <td class="entry_description">
8454               <p>Controls the quality of the demosaicing
8455 processing.<wbr/></p>
8456             </td>
8457
8458             <td class="entry_units">
8459             </td>
8460
8461             <td class="entry_range">
8462             </td>
8463
8464             <td class="entry_tags">
8465               <ul class="entry_tags">
8466                   <li><a href="#tag_FUTURE">FUTURE</a></li>
8467               </ul>
8468             </td>
8469
8470           </tr>
8471
8472
8473           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8474            <!-- end of entry -->
8475         
8476         
8477
8478       <!-- end of kind -->
8479       </tbody>
8480
8481   <!-- end of section -->
8482   <tr><td colspan="6" id="section_edge" class="section">edge</td></tr>
8483
8484
8485       <tr><td colspan="6" class="kind">controls</td></tr>
8486
8487       <thead class="entries_header">
8488         <tr>
8489           <th class="th_name">Property Name</th>
8490           <th class="th_type">Type</th>
8491           <th class="th_description">Description</th>
8492           <th class="th_units">Units</th>
8493           <th class="th_range">Range</th>
8494           <th class="th_tags">Tags</th>
8495         </tr>
8496       </thead>
8497
8498       <tbody>
8499
8500         
8501
8502         
8503
8504         
8505
8506         
8507
8508                 
8509           <tr class="entry" id="controls_android.edge.mode">
8510             <td class="entry_name
8511              " rowspan="5">
8512               android.<wbr/>edge.<wbr/>mode
8513             </td>
8514             <td class="entry_type">
8515                 <span class="entry_type_name entry_type_name_enum">byte</span>
8516
8517               <span class="entry_type_visibility"> [public]</span>
8518
8519
8520               <span class="entry_type_hwlevel">[full] </span>
8521
8522
8523
8524                 <ul class="entry_type_enum">
8525                   <li>
8526                     <span class="entry_type_enum_name">OFF</span>
8527                     <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
8528                   </li>
8529                   <li>
8530                     <span class="entry_type_enum_name">FAST</span>
8531                     <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate relative to sensor
8532 output</p></span>
8533                   </li>
8534                   <li>
8535                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
8536                     <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>
8537                   </li>
8538                 </ul>
8539
8540             </td> <!-- entry_type -->
8541
8542             <td class="entry_description">
8543               <p>Operation mode for edge
8544 enhancement.<wbr/></p>
8545             </td>
8546
8547             <td class="entry_units">
8548             </td>
8549
8550             <td class="entry_range">
8551               <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
8552             </td>
8553
8554             <td class="entry_tags">
8555               <ul class="entry_tags">
8556                   <li><a href="#tag_V1">V1</a></li>
8557                   <li><a href="#tag_REPROC">REPROC</a></li>
8558               </ul>
8559             </td>
8560
8561           </tr>
8562           <tr class="entries_header">
8563             <th class="th_details" colspan="5">Details</th>
8564           </tr>
8565           <tr class="entry_cont">
8566             <td class="entry_details" colspan="5">
8567               <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
8568 no enhancement will be applied by the camera device.<wbr/></p>
8569 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
8570 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
8571 camera device will use the highest-quality enhancement algorithms,<wbr/>
8572 even if it slows down capture rate.<wbr/> FAST means the camera device will
8573 not slow down capture rate when applying edge enhancement.<wbr/></p>
8574 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
8575 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
8576 The camera device may adjust its internal noise reduction parameters for best
8577 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>
8578             </td>
8579           </tr>
8580
8581           <tr class="entries_header">
8582             <th class="th_details" colspan="5">HAL Implementation Details</th>
8583           </tr>
8584           <tr class="entry_cont">
8585             <td class="entry_details" colspan="5">
8586               <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
8587 adjust the internal edge enhancement reduction parameters appropriately to get the best
8588 quality images.<wbr/></p>
8589             </td>
8590           </tr>
8591
8592           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8593            <!-- end of entry -->
8594         
8595                 
8596           <tr class="entry" id="controls_android.edge.strength">
8597             <td class="entry_name
8598              " rowspan="1">
8599               android.<wbr/>edge.<wbr/>strength
8600             </td>
8601             <td class="entry_type">
8602                 <span class="entry_type_name">byte</span>
8603
8604               <span class="entry_type_visibility"> [system]</span>
8605
8606
8607
8608
8609
8610
8611             </td> <!-- entry_type -->
8612
8613             <td class="entry_description">
8614               <p>Control the amount of edge enhancement
8615 applied to the images</p>
8616             </td>
8617
8618             <td class="entry_units">
8619               1-10; 10 is maximum sharpening
8620             </td>
8621
8622             <td class="entry_range">
8623             </td>
8624
8625             <td class="entry_tags">
8626               <ul class="entry_tags">
8627                   <li><a href="#tag_FUTURE">FUTURE</a></li>
8628               </ul>
8629             </td>
8630
8631           </tr>
8632
8633
8634           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8635            <!-- end of entry -->
8636         
8637         
8638
8639       <!-- end of kind -->
8640       </tbody>
8641       <tr><td colspan="6" class="kind">static</td></tr>
8642
8643       <thead class="entries_header">
8644         <tr>
8645           <th class="th_name">Property Name</th>
8646           <th class="th_type">Type</th>
8647           <th class="th_description">Description</th>
8648           <th class="th_units">Units</th>
8649           <th class="th_range">Range</th>
8650           <th class="th_tags">Tags</th>
8651         </tr>
8652       </thead>
8653
8654       <tbody>
8655
8656         
8657
8658         
8659
8660         
8661
8662         
8663
8664                 
8665           <tr class="entry" id="static_android.edge.availableEdgeModes">
8666             <td class="entry_name
8667              " rowspan="5">
8668               android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
8669             </td>
8670             <td class="entry_type">
8671                 <span class="entry_type_name">byte</span>
8672                 <span class="entry_type_container">x</span>
8673
8674                 <span class="entry_type_array">
8675                   n
8676                 </span>
8677               <span class="entry_type_visibility"> [public as enumList]</span>
8678
8679
8680               <span class="entry_type_hwlevel">[full] </span>
8681
8682
8683                 <div class="entry_type_notes">list of enums</div>
8684
8685
8686             </td> <!-- entry_type -->
8687
8688             <td class="entry_description">
8689               <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
8690 device.<wbr/></p>
8691             </td>
8692
8693             <td class="entry_units">
8694             </td>
8695
8696             <td class="entry_range">
8697               <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
8698             </td>
8699
8700             <td class="entry_tags">
8701               <ul class="entry_tags">
8702                   <li><a href="#tag_V1">V1</a></li>
8703                   <li><a href="#tag_REPROC">REPROC</a></li>
8704               </ul>
8705             </td>
8706
8707           </tr>
8708           <tr class="entries_header">
8709             <th class="th_details" colspan="5">Details</th>
8710           </tr>
8711           <tr class="entry_cont">
8712             <td class="entry_details" colspan="5">
8713               <p>Full-capability camera devices must always support OFF; all devices will list FAST.<wbr/></p>
8714             </td>
8715           </tr>
8716
8717           <tr class="entries_header">
8718             <th class="th_details" colspan="5">HAL Implementation Details</th>
8719           </tr>
8720           <tr class="entry_cont">
8721             <td class="entry_details" colspan="5">
8722               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
8723 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
8724 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
8725 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
8726             </td>
8727           </tr>
8728
8729           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8730            <!-- end of entry -->
8731         
8732         
8733
8734       <!-- end of kind -->
8735       </tbody>
8736       <tr><td colspan="6" class="kind">dynamic</td></tr>
8737
8738       <thead class="entries_header">
8739         <tr>
8740           <th class="th_name">Property Name</th>
8741           <th class="th_type">Type</th>
8742           <th class="th_description">Description</th>
8743           <th class="th_units">Units</th>
8744           <th class="th_range">Range</th>
8745           <th class="th_tags">Tags</th>
8746         </tr>
8747       </thead>
8748
8749       <tbody>
8750
8751         
8752
8753         
8754
8755         
8756
8757         
8758
8759                 
8760           <tr class="entry" id="dynamic_android.edge.mode">
8761             <td class="entry_name
8762              " rowspan="5">
8763               android.<wbr/>edge.<wbr/>mode
8764             </td>
8765             <td class="entry_type">
8766                 <span class="entry_type_name entry_type_name_enum">byte</span>
8767
8768               <span class="entry_type_visibility"> [public]</span>
8769
8770
8771               <span class="entry_type_hwlevel">[full] </span>
8772
8773
8774
8775                 <ul class="entry_type_enum">
8776                   <li>
8777                     <span class="entry_type_enum_name">OFF</span>
8778                     <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
8779                   </li>
8780                   <li>
8781                     <span class="entry_type_enum_name">FAST</span>
8782                     <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate relative to sensor
8783 output</p></span>
8784                   </li>
8785                   <li>
8786                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
8787                     <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>
8788                   </li>
8789                 </ul>
8790
8791             </td> <!-- entry_type -->
8792
8793             <td class="entry_description">
8794               <p>Operation mode for edge
8795 enhancement.<wbr/></p>
8796             </td>
8797
8798             <td class="entry_units">
8799             </td>
8800
8801             <td class="entry_range">
8802               <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
8803             </td>
8804
8805             <td class="entry_tags">
8806               <ul class="entry_tags">
8807                   <li><a href="#tag_V1">V1</a></li>
8808                   <li><a href="#tag_REPROC">REPROC</a></li>
8809               </ul>
8810             </td>
8811
8812           </tr>
8813           <tr class="entries_header">
8814             <th class="th_details" colspan="5">Details</th>
8815           </tr>
8816           <tr class="entry_cont">
8817             <td class="entry_details" colspan="5">
8818               <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
8819 no enhancement will be applied by the camera device.<wbr/></p>
8820 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
8821 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
8822 camera device will use the highest-quality enhancement algorithms,<wbr/>
8823 even if it slows down capture rate.<wbr/> FAST means the camera device will
8824 not slow down capture rate when applying edge enhancement.<wbr/></p>
8825 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
8826 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
8827 The camera device may adjust its internal noise reduction parameters for best
8828 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>
8829             </td>
8830           </tr>
8831
8832           <tr class="entries_header">
8833             <th class="th_details" colspan="5">HAL Implementation Details</th>
8834           </tr>
8835           <tr class="entry_cont">
8836             <td class="entry_details" colspan="5">
8837               <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
8838 adjust the internal edge enhancement reduction parameters appropriately to get the best
8839 quality images.<wbr/></p>
8840             </td>
8841           </tr>
8842
8843           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8844            <!-- end of entry -->
8845         
8846         
8847
8848       <!-- end of kind -->
8849       </tbody>
8850
8851   <!-- end of section -->
8852   <tr><td colspan="6" id="section_flash" class="section">flash</td></tr>
8853
8854
8855       <tr><td colspan="6" class="kind">controls</td></tr>
8856
8857       <thead class="entries_header">
8858         <tr>
8859           <th class="th_name">Property Name</th>
8860           <th class="th_type">Type</th>
8861           <th class="th_description">Description</th>
8862           <th class="th_units">Units</th>
8863           <th class="th_range">Range</th>
8864           <th class="th_tags">Tags</th>
8865         </tr>
8866       </thead>
8867
8868       <tbody>
8869
8870         
8871
8872         
8873
8874         
8875
8876         
8877
8878                 
8879           <tr class="entry" id="controls_android.flash.firingPower">
8880             <td class="entry_name
8881              " rowspan="3">
8882               android.<wbr/>flash.<wbr/>firing<wbr/>Power
8883             </td>
8884             <td class="entry_type">
8885                 <span class="entry_type_name">byte</span>
8886
8887               <span class="entry_type_visibility"> [system]</span>
8888
8889
8890
8891
8892
8893
8894             </td> <!-- entry_type -->
8895
8896             <td class="entry_description">
8897               <p>Power for flash firing/<wbr/>torch</p>
8898             </td>
8899
8900             <td class="entry_units">
8901               10 is max power; 0 is no flash.<wbr/> Linear
8902             </td>
8903
8904             <td class="entry_range">
8905               <p>0 - 10</p>
8906             </td>
8907
8908             <td class="entry_tags">
8909               <ul class="entry_tags">
8910                   <li><a href="#tag_FUTURE">FUTURE</a></li>
8911               </ul>
8912             </td>
8913
8914           </tr>
8915           <tr class="entries_header">
8916             <th class="th_details" colspan="5">Details</th>
8917           </tr>
8918           <tr class="entry_cont">
8919             <td class="entry_details" colspan="5">
8920               <p>Power for snapshot may use a different scale than
8921 for torch mode.<wbr/> Only one entry for torch mode will be
8922 used</p>
8923             </td>
8924           </tr>
8925
8926
8927           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8928            <!-- end of entry -->
8929         
8930                 
8931           <tr class="entry" id="controls_android.flash.firingTime">
8932             <td class="entry_name
8933              " rowspan="3">
8934               android.<wbr/>flash.<wbr/>firing<wbr/>Time
8935             </td>
8936             <td class="entry_type">
8937                 <span class="entry_type_name">int64</span>
8938
8939               <span class="entry_type_visibility"> [system]</span>
8940
8941
8942
8943
8944
8945
8946             </td> <!-- entry_type -->
8947
8948             <td class="entry_description">
8949               <p>Firing time of flash relative to start of
8950 exposure</p>
8951             </td>
8952
8953             <td class="entry_units">
8954               nanoseconds
8955             </td>
8956
8957             <td class="entry_range">
8958               <p>0-(exposure time-flash duration)</p>
8959             </td>
8960
8961             <td class="entry_tags">
8962               <ul class="entry_tags">
8963                   <li><a href="#tag_FUTURE">FUTURE</a></li>
8964               </ul>
8965             </td>
8966
8967           </tr>
8968           <tr class="entries_header">
8969             <th class="th_details" colspan="5">Details</th>
8970           </tr>
8971           <tr class="entry_cont">
8972             <td class="entry_details" colspan="5">
8973               <p>Clamped to (0,<wbr/> exposure time - flash
8974 duration).<wbr/></p>
8975             </td>
8976           </tr>
8977
8978
8979           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
8980            <!-- end of entry -->
8981         
8982                 
8983           <tr class="entry" id="controls_android.flash.mode">
8984             <td class="entry_name
8985              " rowspan="3">
8986               android.<wbr/>flash.<wbr/>mode
8987             </td>
8988             <td class="entry_type">
8989                 <span class="entry_type_name entry_type_name_enum">byte</span>
8990
8991               <span class="entry_type_visibility"> [public]</span>
8992
8993
8994               <span class="entry_type_hwlevel">[legacy] </span>
8995
8996
8997
8998                 <ul class="entry_type_enum">
8999                   <li>
9000                     <span class="entry_type_enum_name">OFF</span>
9001                     <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
9002                   </li>
9003                   <li>
9004                     <span class="entry_type_enum_name">SINGLE</span>
9005                     <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
9006 for this capture.<wbr/></p></span>
9007                   </li>
9008                   <li>
9009                     <span class="entry_type_enum_name">TORCH</span>
9010                     <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
9011                   </li>
9012                 </ul>
9013
9014             </td> <!-- entry_type -->
9015
9016             <td class="entry_description">
9017               <p>The desired mode for for the camera device's flash control.<wbr/></p>
9018             </td>
9019
9020             <td class="entry_units">
9021             </td>
9022
9023             <td class="entry_range">
9024             </td>
9025
9026             <td class="entry_tags">
9027               <ul class="entry_tags">
9028                   <li><a href="#tag_BC">BC</a></li>
9029               </ul>
9030             </td>
9031
9032           </tr>
9033           <tr class="entries_header">
9034             <th class="th_details" colspan="5">Details</th>
9035           </tr>
9036           <tr class="entry_cont">
9037             <td class="entry_details" colspan="5">
9038               <p>This control is only effective when flash unit is available
9039 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
9040 <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/>
9041 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
9042 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
9043 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
9044 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
9045 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
9046 control should be used along with auto-exposure (AE) precapture metering sequence
9047 (<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>
9048 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
9049 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
9050 <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>
9051             </td>
9052           </tr>
9053
9054
9055           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9056            <!-- end of entry -->
9057         
9058         
9059
9060       <!-- end of kind -->
9061       </tbody>
9062       <tr><td colspan="6" class="kind">static</td></tr>
9063
9064       <thead class="entries_header">
9065         <tr>
9066           <th class="th_name">Property Name</th>
9067           <th class="th_type">Type</th>
9068           <th class="th_description">Description</th>
9069           <th class="th_units">Units</th>
9070           <th class="th_range">Range</th>
9071           <th class="th_tags">Tags</th>
9072         </tr>
9073       </thead>
9074
9075       <tbody>
9076
9077         
9078
9079         
9080
9081         
9082
9083         
9084                 
9085             
9086
9087                 
9088           <tr class="entry" id="static_android.flash.info.available">
9089             <td class="entry_name
9090              " rowspan="3">
9091               android.<wbr/>flash.<wbr/>info.<wbr/>available
9092             </td>
9093             <td class="entry_type">
9094                 <span class="entry_type_name entry_type_name_enum">byte</span>
9095
9096               <span class="entry_type_visibility"> [public as boolean]</span>
9097
9098
9099               <span class="entry_type_hwlevel">[legacy] </span>
9100
9101
9102
9103                 <ul class="entry_type_enum">
9104                   <li>
9105                     <span class="entry_type_enum_name">FALSE</span>
9106                   </li>
9107                   <li>
9108                     <span class="entry_type_enum_name">TRUE</span>
9109                   </li>
9110                 </ul>
9111
9112             </td> <!-- entry_type -->
9113
9114             <td class="entry_description">
9115               <p>Whether this camera device has a
9116 flash unit.<wbr/></p>
9117             </td>
9118
9119             <td class="entry_units">
9120             </td>
9121
9122             <td class="entry_range">
9123             </td>
9124
9125             <td class="entry_tags">
9126               <ul class="entry_tags">
9127                   <li><a href="#tag_BC">BC</a></li>
9128               </ul>
9129             </td>
9130
9131           </tr>
9132           <tr class="entries_header">
9133             <th class="th_details" colspan="5">Details</th>
9134           </tr>
9135           <tr class="entry_cont">
9136             <td class="entry_details" colspan="5">
9137               <p>Will be <code>false</code> if no flash is available.<wbr/></p>
9138 <p>If there is no flash unit,<wbr/> none of the flash controls do
9139 anything.<wbr/></p>
9140             </td>
9141           </tr>
9142
9143
9144           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9145            <!-- end of entry -->
9146         
9147                 
9148           <tr class="entry" id="static_android.flash.info.chargeDuration">
9149             <td class="entry_name
9150              " rowspan="3">
9151               android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
9152             </td>
9153             <td class="entry_type">
9154                 <span class="entry_type_name">int64</span>
9155
9156               <span class="entry_type_visibility"> [system]</span>
9157
9158
9159
9160
9161
9162
9163             </td> <!-- entry_type -->
9164
9165             <td class="entry_description">
9166               <p>Time taken before flash can fire
9167 again</p>
9168             </td>
9169
9170             <td class="entry_units">
9171               nanoseconds
9172             </td>
9173
9174             <td class="entry_range">
9175               <p>0-1e9</p>
9176             </td>
9177
9178             <td class="entry_tags">
9179               <ul class="entry_tags">
9180                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9181               </ul>
9182             </td>
9183
9184           </tr>
9185           <tr class="entries_header">
9186             <th class="th_details" colspan="5">Details</th>
9187           </tr>
9188           <tr class="entry_cont">
9189             <td class="entry_details" colspan="5">
9190               <p>1 second too long/<wbr/>too short for recharge? Should
9191 this be power-dependent?</p>
9192             </td>
9193           </tr>
9194
9195
9196           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9197            <!-- end of entry -->
9198         
9199         
9200         
9201
9202                 
9203           <tr class="entry" id="static_android.flash.colorTemperature">
9204             <td class="entry_name
9205              " rowspan="1">
9206               android.<wbr/>flash.<wbr/>color<wbr/>Temperature
9207             </td>
9208             <td class="entry_type">
9209                 <span class="entry_type_name">byte</span>
9210
9211               <span class="entry_type_visibility"> [system]</span>
9212
9213
9214
9215
9216
9217
9218             </td> <!-- entry_type -->
9219
9220             <td class="entry_description">
9221               <p>The x,<wbr/>y whitepoint of the
9222 flash</p>
9223             </td>
9224
9225             <td class="entry_units">
9226               pair of floats
9227             </td>
9228
9229             <td class="entry_range">
9230               <p>0-1 for both</p>
9231             </td>
9232
9233             <td class="entry_tags">
9234               <ul class="entry_tags">
9235                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9236               </ul>
9237             </td>
9238
9239           </tr>
9240
9241
9242           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9243            <!-- end of entry -->
9244         
9245                 
9246           <tr class="entry" id="static_android.flash.maxEnergy">
9247             <td class="entry_name
9248              " rowspan="1">
9249               android.<wbr/>flash.<wbr/>max<wbr/>Energy
9250             </td>
9251             <td class="entry_type">
9252                 <span class="entry_type_name">byte</span>
9253
9254               <span class="entry_type_visibility"> [system]</span>
9255
9256
9257
9258
9259
9260
9261             </td> <!-- entry_type -->
9262
9263             <td class="entry_description">
9264               <p>Max energy output of the flash for a full
9265 power single flash</p>
9266             </td>
9267
9268             <td class="entry_units">
9269               lumen-seconds
9270             </td>
9271
9272             <td class="entry_range">
9273               <p>&gt;= 0</p>
9274             </td>
9275
9276             <td class="entry_tags">
9277               <ul class="entry_tags">
9278                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9279               </ul>
9280             </td>
9281
9282           </tr>
9283
9284
9285           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9286            <!-- end of entry -->
9287         
9288         
9289
9290       <!-- end of kind -->
9291       </tbody>
9292       <tr><td colspan="6" class="kind">dynamic</td></tr>
9293
9294       <thead class="entries_header">
9295         <tr>
9296           <th class="th_name">Property Name</th>
9297           <th class="th_type">Type</th>
9298           <th class="th_description">Description</th>
9299           <th class="th_units">Units</th>
9300           <th class="th_range">Range</th>
9301           <th class="th_tags">Tags</th>
9302         </tr>
9303       </thead>
9304
9305       <tbody>
9306
9307         
9308
9309         
9310
9311         
9312
9313         
9314
9315                 
9316           <tr class="entry" id="dynamic_android.flash.firingPower">
9317             <td class="entry_name
9318              " rowspan="3">
9319               android.<wbr/>flash.<wbr/>firing<wbr/>Power
9320             </td>
9321             <td class="entry_type">
9322                 <span class="entry_type_name">byte</span>
9323
9324               <span class="entry_type_visibility"> [system]</span>
9325
9326
9327
9328
9329
9330
9331             </td> <!-- entry_type -->
9332
9333             <td class="entry_description">
9334               <p>Power for flash firing/<wbr/>torch</p>
9335             </td>
9336
9337             <td class="entry_units">
9338               10 is max power; 0 is no flash.<wbr/> Linear
9339             </td>
9340
9341             <td class="entry_range">
9342               <p>0 - 10</p>
9343             </td>
9344
9345             <td class="entry_tags">
9346               <ul class="entry_tags">
9347                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9348               </ul>
9349             </td>
9350
9351           </tr>
9352           <tr class="entries_header">
9353             <th class="th_details" colspan="5">Details</th>
9354           </tr>
9355           <tr class="entry_cont">
9356             <td class="entry_details" colspan="5">
9357               <p>Power for snapshot may use a different scale than
9358 for torch mode.<wbr/> Only one entry for torch mode will be
9359 used</p>
9360             </td>
9361           </tr>
9362
9363
9364           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9365            <!-- end of entry -->
9366         
9367                 
9368           <tr class="entry" id="dynamic_android.flash.firingTime">
9369             <td class="entry_name
9370              " rowspan="3">
9371               android.<wbr/>flash.<wbr/>firing<wbr/>Time
9372             </td>
9373             <td class="entry_type">
9374                 <span class="entry_type_name">int64</span>
9375
9376               <span class="entry_type_visibility"> [system]</span>
9377
9378
9379
9380
9381
9382
9383             </td> <!-- entry_type -->
9384
9385             <td class="entry_description">
9386               <p>Firing time of flash relative to start of
9387 exposure</p>
9388             </td>
9389
9390             <td class="entry_units">
9391               nanoseconds
9392             </td>
9393
9394             <td class="entry_range">
9395               <p>0-(exposure time-flash duration)</p>
9396             </td>
9397
9398             <td class="entry_tags">
9399               <ul class="entry_tags">
9400                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9401               </ul>
9402             </td>
9403
9404           </tr>
9405           <tr class="entries_header">
9406             <th class="th_details" colspan="5">Details</th>
9407           </tr>
9408           <tr class="entry_cont">
9409             <td class="entry_details" colspan="5">
9410               <p>Clamped to (0,<wbr/> exposure time - flash
9411 duration).<wbr/></p>
9412             </td>
9413           </tr>
9414
9415
9416           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9417            <!-- end of entry -->
9418         
9419                 
9420           <tr class="entry" id="dynamic_android.flash.mode">
9421             <td class="entry_name
9422              " rowspan="3">
9423               android.<wbr/>flash.<wbr/>mode
9424             </td>
9425             <td class="entry_type">
9426                 <span class="entry_type_name entry_type_name_enum">byte</span>
9427
9428               <span class="entry_type_visibility"> [public]</span>
9429
9430
9431               <span class="entry_type_hwlevel">[legacy] </span>
9432
9433
9434
9435                 <ul class="entry_type_enum">
9436                   <li>
9437                     <span class="entry_type_enum_name">OFF</span>
9438                     <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
9439                   </li>
9440                   <li>
9441                     <span class="entry_type_enum_name">SINGLE</span>
9442                     <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
9443 for this capture.<wbr/></p></span>
9444                   </li>
9445                   <li>
9446                     <span class="entry_type_enum_name">TORCH</span>
9447                     <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
9448                   </li>
9449                 </ul>
9450
9451             </td> <!-- entry_type -->
9452
9453             <td class="entry_description">
9454               <p>The desired mode for for the camera device's flash control.<wbr/></p>
9455             </td>
9456
9457             <td class="entry_units">
9458             </td>
9459
9460             <td class="entry_range">
9461             </td>
9462
9463             <td class="entry_tags">
9464               <ul class="entry_tags">
9465                   <li><a href="#tag_BC">BC</a></li>
9466               </ul>
9467             </td>
9468
9469           </tr>
9470           <tr class="entries_header">
9471             <th class="th_details" colspan="5">Details</th>
9472           </tr>
9473           <tr class="entry_cont">
9474             <td class="entry_details" colspan="5">
9475               <p>This control is only effective when flash unit is available
9476 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
9477 <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/>
9478 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
9479 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
9480 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
9481 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
9482 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
9483 control should be used along with auto-exposure (AE) precapture metering sequence
9484 (<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>
9485 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
9486 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
9487 <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>
9488             </td>
9489           </tr>
9490
9491
9492           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9493            <!-- end of entry -->
9494         
9495                 
9496           <tr class="entry" id="dynamic_android.flash.state">
9497             <td class="entry_name
9498              " rowspan="3">
9499               android.<wbr/>flash.<wbr/>state
9500             </td>
9501             <td class="entry_type">
9502                 <span class="entry_type_name entry_type_name_enum">byte</span>
9503
9504               <span class="entry_type_visibility"> [public]</span>
9505
9506
9507               <span class="entry_type_hwlevel">[limited] </span>
9508
9509
9510
9511                 <ul class="entry_type_enum">
9512                   <li>
9513                     <span class="entry_type_enum_name">UNAVAILABLE</span>
9514                     <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
9515                   </li>
9516                   <li>
9517                     <span class="entry_type_enum_name">CHARGING</span>
9518                     <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
9519                   </li>
9520                   <li>
9521                     <span class="entry_type_enum_name">READY</span>
9522                     <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
9523                   </li>
9524                   <li>
9525                     <span class="entry_type_enum_name">FIRED</span>
9526                     <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
9527                   </li>
9528                   <li>
9529                     <span class="entry_type_enum_name">PARTIAL</span>
9530                     <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
9531 <p>This is usually due to the next or previous frame having
9532 the flash fire,<wbr/> and the flash spilling into this capture
9533 due to hardware limitations.<wbr/></p></span>
9534                   </li>
9535                 </ul>
9536
9537             </td> <!-- entry_type -->
9538
9539             <td class="entry_description">
9540               <p>Current state of the flash
9541 unit.<wbr/></p>
9542             </td>
9543
9544             <td class="entry_units">
9545             </td>
9546
9547             <td class="entry_range">
9548             </td>
9549
9550             <td class="entry_tags">
9551             </td>
9552
9553           </tr>
9554           <tr class="entries_header">
9555             <th class="th_details" colspan="5">Details</th>
9556           </tr>
9557           <tr class="entry_cont">
9558             <td class="entry_details" colspan="5">
9559               <p>When the camera device doesn't have flash unit
9560 (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/>
9561 Other states indicate the current flash status.<wbr/></p>
9562 <p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
9563 <ul>
9564 <li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
9565 <li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
9566    will always return FIRED.<wbr/></li>
9567 <li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
9568    will always return FIRED.<wbr/></li>
9569 </ul>
9570 <p>In all other conditions the state will not be available on
9571 LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
9572             </td>
9573           </tr>
9574
9575
9576           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9577            <!-- end of entry -->
9578         
9579         
9580
9581       <!-- end of kind -->
9582       </tbody>
9583
9584   <!-- end of section -->
9585   <tr><td colspan="6" id="section_hotPixel" class="section">hotPixel</td></tr>
9586
9587
9588       <tr><td colspan="6" class="kind">controls</td></tr>
9589
9590       <thead class="entries_header">
9591         <tr>
9592           <th class="th_name">Property Name</th>
9593           <th class="th_type">Type</th>
9594           <th class="th_description">Description</th>
9595           <th class="th_units">Units</th>
9596           <th class="th_range">Range</th>
9597           <th class="th_tags">Tags</th>
9598         </tr>
9599       </thead>
9600
9601       <tbody>
9602
9603         
9604
9605         
9606
9607         
9608
9609         
9610
9611                 
9612           <tr class="entry" id="controls_android.hotPixel.mode">
9613             <td class="entry_name
9614              " rowspan="3">
9615               android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
9616             </td>
9617             <td class="entry_type">
9618                 <span class="entry_type_name entry_type_name_enum">byte</span>
9619
9620               <span class="entry_type_visibility"> [public]</span>
9621
9622
9623
9624
9625
9626                 <ul class="entry_type_enum">
9627                   <li>
9628                     <span class="entry_type_enum_name">OFF</span>
9629                     <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
9630 <p>The frame rate must not be reduced relative to sensor raw output
9631 for this option.<wbr/></p>
9632 <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>
9633                   </li>
9634                   <li>
9635                     <span class="entry_type_enum_name">FAST</span>
9636                     <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
9637 rate relative to sensor raw output.<wbr/></p>
9638 <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>
9639                   </li>
9640                   <li>
9641                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
9642                     <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
9643 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
9644 <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>
9645                   </li>
9646                 </ul>
9647
9648             </td> <!-- entry_type -->
9649
9650             <td class="entry_description">
9651               <p>Operational mode for hot pixel correction.<wbr/></p>
9652             </td>
9653
9654             <td class="entry_units">
9655             </td>
9656
9657             <td class="entry_range">
9658               <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
9659             </td>
9660
9661             <td class="entry_tags">
9662               <ul class="entry_tags">
9663                   <li><a href="#tag_V1">V1</a></li>
9664                   <li><a href="#tag_RAW">RAW</a></li>
9665               </ul>
9666             </td>
9667
9668           </tr>
9669           <tr class="entries_header">
9670             <th class="th_details" colspan="5">Details</th>
9671           </tr>
9672           <tr class="entry_cont">
9673             <td class="entry_details" colspan="5">
9674               <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
9675 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
9676 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
9677             </td>
9678           </tr>
9679
9680
9681           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9682            <!-- end of entry -->
9683         
9684         
9685
9686       <!-- end of kind -->
9687       </tbody>
9688       <tr><td colspan="6" class="kind">static</td></tr>
9689
9690       <thead class="entries_header">
9691         <tr>
9692           <th class="th_name">Property Name</th>
9693           <th class="th_type">Type</th>
9694           <th class="th_description">Description</th>
9695           <th class="th_units">Units</th>
9696           <th class="th_range">Range</th>
9697           <th class="th_tags">Tags</th>
9698         </tr>
9699       </thead>
9700
9701       <tbody>
9702
9703         
9704
9705         
9706
9707         
9708
9709         
9710
9711                 
9712           <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
9713             <td class="entry_name
9714              " rowspan="5">
9715               android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
9716             </td>
9717             <td class="entry_type">
9718                 <span class="entry_type_name">byte</span>
9719                 <span class="entry_type_container">x</span>
9720
9721                 <span class="entry_type_array">
9722                   n
9723                 </span>
9724               <span class="entry_type_visibility"> [public as enumList]</span>
9725
9726
9727
9728
9729                 <div class="entry_type_notes">list of enums</div>
9730
9731
9732             </td> <!-- entry_type -->
9733
9734             <td class="entry_description">
9735               <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
9736 camera device.<wbr/></p>
9737             </td>
9738
9739             <td class="entry_units">
9740             </td>
9741
9742             <td class="entry_range">
9743               <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
9744             </td>
9745
9746             <td class="entry_tags">
9747               <ul class="entry_tags">
9748                   <li><a href="#tag_V1">V1</a></li>
9749                   <li><a href="#tag_RAW">RAW</a></li>
9750               </ul>
9751             </td>
9752
9753           </tr>
9754           <tr class="entries_header">
9755             <th class="th_details" colspan="5">Details</th>
9756           </tr>
9757           <tr class="entry_cont">
9758             <td class="entry_details" colspan="5">
9759               <p>FULL mode camera devices will always support FAST.<wbr/></p>
9760             </td>
9761           </tr>
9762
9763           <tr class="entries_header">
9764             <th class="th_details" colspan="5">HAL Implementation Details</th>
9765           </tr>
9766           <tr class="entry_cont">
9767             <td class="entry_details" colspan="5">
9768               <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
9769 pixels than actual pixels on the camera sensor.<wbr/>
9770 HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
9771 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
9772 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
9773 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
9774             </td>
9775           </tr>
9776
9777           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9778            <!-- end of entry -->
9779         
9780         
9781
9782       <!-- end of kind -->
9783       </tbody>
9784       <tr><td colspan="6" class="kind">dynamic</td></tr>
9785
9786       <thead class="entries_header">
9787         <tr>
9788           <th class="th_name">Property Name</th>
9789           <th class="th_type">Type</th>
9790           <th class="th_description">Description</th>
9791           <th class="th_units">Units</th>
9792           <th class="th_range">Range</th>
9793           <th class="th_tags">Tags</th>
9794         </tr>
9795       </thead>
9796
9797       <tbody>
9798
9799         
9800
9801         
9802
9803         
9804
9805         
9806
9807                 
9808           <tr class="entry" id="dynamic_android.hotPixel.mode">
9809             <td class="entry_name
9810              " rowspan="3">
9811               android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
9812             </td>
9813             <td class="entry_type">
9814                 <span class="entry_type_name entry_type_name_enum">byte</span>
9815
9816               <span class="entry_type_visibility"> [public]</span>
9817
9818
9819
9820
9821
9822                 <ul class="entry_type_enum">
9823                   <li>
9824                     <span class="entry_type_enum_name">OFF</span>
9825                     <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
9826 <p>The frame rate must not be reduced relative to sensor raw output
9827 for this option.<wbr/></p>
9828 <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>
9829                   </li>
9830                   <li>
9831                     <span class="entry_type_enum_name">FAST</span>
9832                     <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
9833 rate relative to sensor raw output.<wbr/></p>
9834 <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>
9835                   </li>
9836                   <li>
9837                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
9838                     <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
9839 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
9840 <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>
9841                   </li>
9842                 </ul>
9843
9844             </td> <!-- entry_type -->
9845
9846             <td class="entry_description">
9847               <p>Operational mode for hot pixel correction.<wbr/></p>
9848             </td>
9849
9850             <td class="entry_units">
9851             </td>
9852
9853             <td class="entry_range">
9854               <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
9855             </td>
9856
9857             <td class="entry_tags">
9858               <ul class="entry_tags">
9859                   <li><a href="#tag_V1">V1</a></li>
9860                   <li><a href="#tag_RAW">RAW</a></li>
9861               </ul>
9862             </td>
9863
9864           </tr>
9865           <tr class="entries_header">
9866             <th class="th_details" colspan="5">Details</th>
9867           </tr>
9868           <tr class="entry_cont">
9869             <td class="entry_details" colspan="5">
9870               <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
9871 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
9872 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
9873             </td>
9874           </tr>
9875
9876
9877           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9878            <!-- end of entry -->
9879         
9880         
9881
9882       <!-- end of kind -->
9883       </tbody>
9884
9885   <!-- end of section -->
9886   <tr><td colspan="6" id="section_jpeg" class="section">jpeg</td></tr>
9887
9888
9889       <tr><td colspan="6" class="kind">controls</td></tr>
9890
9891       <thead class="entries_header">
9892         <tr>
9893           <th class="th_name">Property Name</th>
9894           <th class="th_type">Type</th>
9895           <th class="th_description">Description</th>
9896           <th class="th_units">Units</th>
9897           <th class="th_range">Range</th>
9898           <th class="th_tags">Tags</th>
9899         </tr>
9900       </thead>
9901
9902       <tbody>
9903
9904         
9905
9906         
9907
9908         
9909
9910         
9911
9912                 
9913           <tr class="entry" id="controls_android.jpeg.gpsLocation">
9914             <td class="entry_name
9915              " rowspan="3">
9916               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
9917             </td>
9918             <td class="entry_type">
9919                 <span class="entry_type_name">byte</span>
9920
9921               <span class="entry_type_visibility"> [public as location]</span>
9922
9923               <span class="entry_type_synthetic">[synthetic] </span>
9924
9925               <span class="entry_type_hwlevel">[legacy] </span>
9926
9927
9928
9929
9930             </td> <!-- entry_type -->
9931
9932             <td class="entry_description">
9933               <p>A location object to use when generating image GPS metadata.<wbr/></p>
9934             </td>
9935
9936             <td class="entry_units">
9937             </td>
9938
9939             <td class="entry_range">
9940             </td>
9941
9942             <td class="entry_tags">
9943             </td>
9944
9945           </tr>
9946           <tr class="entries_header">
9947             <th class="th_details" colspan="5">Details</th>
9948           </tr>
9949           <tr class="entry_cont">
9950             <td class="entry_details" colspan="5">
9951               <p>Setting a location object in a request will include the GPS coordinates of the location
9952 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
9953 viewed by anyone who receives the JPEG image.<wbr/></p>
9954             </td>
9955           </tr>
9956
9957
9958           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
9959            <!-- end of entry -->
9960         
9961                 
9962           <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
9963             <td class="entry_name
9964              " rowspan="1">
9965               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
9966             </td>
9967             <td class="entry_type">
9968                 <span class="entry_type_name">double</span>
9969                 <span class="entry_type_container">x</span>
9970
9971                 <span class="entry_type_array">
9972                   3
9973                 </span>
9974               <span class="entry_type_visibility"> [hidden]</span>
9975
9976
9977               <span class="entry_type_hwlevel">[legacy] </span>
9978
9979
9980                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
9981
9982
9983             </td> <!-- entry_type -->
9984
9985             <td class="entry_description">
9986               <p>GPS coordinates to include in output JPEG
9987 EXIF.<wbr/></p>
9988             </td>
9989
9990             <td class="entry_units">
9991             </td>
9992
9993             <td class="entry_range">
9994               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
9995             </td>
9996
9997             <td class="entry_tags">
9998               <ul class="entry_tags">
9999                   <li><a href="#tag_BC">BC</a></li>
10000               </ul>
10001             </td>
10002
10003           </tr>
10004
10005
10006           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10007            <!-- end of entry -->
10008         
10009                 
10010           <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
10011             <td class="entry_name
10012              " rowspan="1">
10013               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
10014             </td>
10015             <td class="entry_type">
10016                 <span class="entry_type_name">byte</span>
10017
10018               <span class="entry_type_visibility"> [hidden as string]</span>
10019
10020
10021               <span class="entry_type_hwlevel">[legacy] </span>
10022
10023
10024
10025
10026             </td> <!-- entry_type -->
10027
10028             <td class="entry_description">
10029               <p>32 characters describing GPS algorithm to
10030 include in EXIF.<wbr/></p>
10031             </td>
10032
10033             <td class="entry_units">
10034               UTF-8 null-terminated string
10035             </td>
10036
10037             <td class="entry_range">
10038             </td>
10039
10040             <td class="entry_tags">
10041               <ul class="entry_tags">
10042                   <li><a href="#tag_BC">BC</a></li>
10043               </ul>
10044             </td>
10045
10046           </tr>
10047
10048
10049           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10050            <!-- end of entry -->
10051         
10052                 
10053           <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
10054             <td class="entry_name
10055              " rowspan="1">
10056               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
10057             </td>
10058             <td class="entry_type">
10059                 <span class="entry_type_name">int64</span>
10060
10061               <span class="entry_type_visibility"> [hidden]</span>
10062
10063
10064               <span class="entry_type_hwlevel">[legacy] </span>
10065
10066
10067
10068
10069             </td> <!-- entry_type -->
10070
10071             <td class="entry_description">
10072               <p>Time GPS fix was made to include in
10073 EXIF.<wbr/></p>
10074             </td>
10075
10076             <td class="entry_units">
10077               UTC in seconds since January 1,<wbr/> 1970
10078             </td>
10079
10080             <td class="entry_range">
10081             </td>
10082
10083             <td class="entry_tags">
10084               <ul class="entry_tags">
10085                   <li><a href="#tag_BC">BC</a></li>
10086               </ul>
10087             </td>
10088
10089           </tr>
10090
10091
10092           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10093            <!-- end of entry -->
10094         
10095                 
10096           <tr class="entry" id="controls_android.jpeg.orientation">
10097             <td class="entry_name
10098              " rowspan="3">
10099               android.<wbr/>jpeg.<wbr/>orientation
10100             </td>
10101             <td class="entry_type">
10102                 <span class="entry_type_name">int32</span>
10103
10104               <span class="entry_type_visibility"> [public]</span>
10105
10106
10107               <span class="entry_type_hwlevel">[legacy] </span>
10108
10109
10110
10111
10112             </td> <!-- entry_type -->
10113
10114             <td class="entry_description">
10115               <p>The orientation for a JPEG image.<wbr/></p>
10116             </td>
10117
10118             <td class="entry_units">
10119               Degrees in multiples of 90
10120             </td>
10121
10122             <td class="entry_range">
10123               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
10124             </td>
10125
10126             <td class="entry_tags">
10127               <ul class="entry_tags">
10128                   <li><a href="#tag_BC">BC</a></li>
10129               </ul>
10130             </td>
10131
10132           </tr>
10133           <tr class="entries_header">
10134             <th class="th_details" colspan="5">Details</th>
10135           </tr>
10136           <tr class="entry_cont">
10137             <td class="entry_details" colspan="5">
10138               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
10139 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
10140 upright.<wbr/></p>
10141 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
10142 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
10143 the thumbnail data will also be rotated.<wbr/></p>
10144 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
10145 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
10146 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
10147 sample code may be used:</p>
10148 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
10149     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
10150     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
10151
10152     //<wbr/> Round device orientation to a multiple of 90
10153     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
10154
10155     //<wbr/> Reverse device orientation for front-facing cameras
10156     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
10157     if (facingFront) deviceOrientation = -deviceOrientation;
10158
10159     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
10160     //<wbr/> the image upright relative to the device orientation
10161     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
10162
10163     return jpegOrientation;
10164 }
10165 </code></pre>
10166             </td>
10167           </tr>
10168
10169
10170           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10171            <!-- end of entry -->
10172         
10173                 
10174           <tr class="entry" id="controls_android.jpeg.quality">
10175             <td class="entry_name
10176              " rowspan="3">
10177               android.<wbr/>jpeg.<wbr/>quality
10178             </td>
10179             <td class="entry_type">
10180                 <span class="entry_type_name">byte</span>
10181
10182               <span class="entry_type_visibility"> [public]</span>
10183
10184
10185               <span class="entry_type_hwlevel">[legacy] </span>
10186
10187
10188
10189
10190             </td> <!-- entry_type -->
10191
10192             <td class="entry_description">
10193               <p>Compression quality of the final JPEG
10194 image.<wbr/></p>
10195             </td>
10196
10197             <td class="entry_units">
10198             </td>
10199
10200             <td class="entry_range">
10201               <p>1-100; larger is higher quality</p>
10202             </td>
10203
10204             <td class="entry_tags">
10205               <ul class="entry_tags">
10206                   <li><a href="#tag_BC">BC</a></li>
10207               </ul>
10208             </td>
10209
10210           </tr>
10211           <tr class="entries_header">
10212             <th class="th_details" colspan="5">Details</th>
10213           </tr>
10214           <tr class="entry_cont">
10215             <td class="entry_details" colspan="5">
10216               <p>85-95 is typical usage range.<wbr/></p>
10217             </td>
10218           </tr>
10219
10220
10221           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10222            <!-- end of entry -->
10223         
10224                 
10225           <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
10226             <td class="entry_name
10227              " rowspan="1">
10228               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
10229             </td>
10230             <td class="entry_type">
10231                 <span class="entry_type_name">byte</span>
10232
10233               <span class="entry_type_visibility"> [public]</span>
10234
10235
10236               <span class="entry_type_hwlevel">[legacy] </span>
10237
10238
10239
10240
10241             </td> <!-- entry_type -->
10242
10243             <td class="entry_description">
10244               <p>Compression quality of JPEG
10245 thumbnail.<wbr/></p>
10246             </td>
10247
10248             <td class="entry_units">
10249             </td>
10250
10251             <td class="entry_range">
10252               <p>1-100; larger is higher quality</p>
10253             </td>
10254
10255             <td class="entry_tags">
10256               <ul class="entry_tags">
10257                   <li><a href="#tag_BC">BC</a></li>
10258               </ul>
10259             </td>
10260
10261           </tr>
10262
10263
10264           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10265            <!-- end of entry -->
10266         
10267                 
10268           <tr class="entry" id="controls_android.jpeg.thumbnailSize">
10269             <td class="entry_name
10270              " rowspan="5">
10271               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
10272             </td>
10273             <td class="entry_type">
10274                 <span class="entry_type_name">int32</span>
10275                 <span class="entry_type_container">x</span>
10276
10277                 <span class="entry_type_array">
10278                   2
10279                 </span>
10280               <span class="entry_type_visibility"> [public as size]</span>
10281
10282
10283               <span class="entry_type_hwlevel">[legacy] </span>
10284
10285
10286
10287
10288             </td> <!-- entry_type -->
10289
10290             <td class="entry_description">
10291               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
10292             </td>
10293
10294             <td class="entry_units">
10295             </td>
10296
10297             <td class="entry_range">
10298               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
10299             </td>
10300
10301             <td class="entry_tags">
10302               <ul class="entry_tags">
10303                   <li><a href="#tag_BC">BC</a></li>
10304               </ul>
10305             </td>
10306
10307           </tr>
10308           <tr class="entries_header">
10309             <th class="th_details" colspan="5">Details</th>
10310           </tr>
10311           <tr class="entry_cont">
10312             <td class="entry_details" colspan="5">
10313               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
10314 but the captured JPEG will still be a valid image.<wbr/></p>
10315 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
10316 should have the same aspect ratio as the main JPEG output.<wbr/></p>
10317 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
10318 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
10319 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
10320 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
10321 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
10322 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
10323             </td>
10324           </tr>
10325
10326           <tr class="entries_header">
10327             <th class="th_details" colspan="5">HAL Implementation Details</th>
10328           </tr>
10329           <tr class="entry_cont">
10330             <td class="entry_details" colspan="5">
10331               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
10332 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
10333 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
10334 thumbnail image cropping.<wbr/></p>
10335             </td>
10336           </tr>
10337
10338           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10339            <!-- end of entry -->
10340         
10341         
10342
10343       <!-- end of kind -->
10344       </tbody>
10345       <tr><td colspan="6" class="kind">static</td></tr>
10346
10347       <thead class="entries_header">
10348         <tr>
10349           <th class="th_name">Property Name</th>
10350           <th class="th_type">Type</th>
10351           <th class="th_description">Description</th>
10352           <th class="th_units">Units</th>
10353           <th class="th_range">Range</th>
10354           <th class="th_tags">Tags</th>
10355         </tr>
10356       </thead>
10357
10358       <tbody>
10359
10360         
10361
10362         
10363
10364         
10365
10366         
10367
10368                 
10369           <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
10370             <td class="entry_name
10371              " rowspan="3">
10372               android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
10373             </td>
10374             <td class="entry_type">
10375                 <span class="entry_type_name">int32</span>
10376                 <span class="entry_type_container">x</span>
10377
10378                 <span class="entry_type_array">
10379                   2 x n
10380                 </span>
10381               <span class="entry_type_visibility"> [public as size]</span>
10382
10383
10384               <span class="entry_type_hwlevel">[legacy] </span>
10385
10386
10387
10388
10389             </td> <!-- entry_type -->
10390
10391             <td class="entry_description">
10392               <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
10393 camera device.<wbr/></p>
10394             </td>
10395
10396             <td class="entry_units">
10397             </td>
10398
10399             <td class="entry_range">
10400             </td>
10401
10402             <td class="entry_tags">
10403               <ul class="entry_tags">
10404                   <li><a href="#tag_BC">BC</a></li>
10405               </ul>
10406             </td>
10407
10408           </tr>
10409           <tr class="entries_header">
10410             <th class="th_details" colspan="5">Details</th>
10411           </tr>
10412           <tr class="entry_cont">
10413             <td class="entry_details" colspan="5">
10414               <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
10415 thumbnail should be generated.<wbr/></p>
10416 <p>Below condiditions will be satisfied for this size list:</p>
10417 <ul>
10418 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
10419 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
10420 <li>The aspect ratio of the largest thumbnail size will be same as the
10421 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/>
10422 The largest size is defined as the size that has the largest pixel area
10423 in a given size list.<wbr/></li>
10424 <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
10425 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
10426 and vice versa.<wbr/></li>
10427 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
10428 </ul>
10429             </td>
10430           </tr>
10431
10432
10433           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10434            <!-- end of entry -->
10435         
10436                 
10437           <tr class="entry" id="static_android.jpeg.maxSize">
10438             <td class="entry_name
10439              " rowspan="3">
10440               android.<wbr/>jpeg.<wbr/>max<wbr/>Size
10441             </td>
10442             <td class="entry_type">
10443                 <span class="entry_type_name">int32</span>
10444
10445               <span class="entry_type_visibility"> [system]</span>
10446
10447
10448
10449
10450
10451
10452             </td> <!-- entry_type -->
10453
10454             <td class="entry_description">
10455               <p>Maximum size in bytes for the compressed
10456 JPEG buffer</p>
10457             </td>
10458
10459             <td class="entry_units">
10460             </td>
10461
10462             <td class="entry_range">
10463               <p>Must be large enough to fit any JPEG produced by
10464 the camera</p>
10465             </td>
10466
10467             <td class="entry_tags">
10468             </td>
10469
10470           </tr>
10471           <tr class="entries_header">
10472             <th class="th_details" colspan="5">Details</th>
10473           </tr>
10474           <tr class="entry_cont">
10475             <td class="entry_details" colspan="5">
10476               <p>This is used for sizing the gralloc buffers for
10477 JPEG</p>
10478             </td>
10479           </tr>
10480
10481
10482           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10483            <!-- end of entry -->
10484         
10485         
10486
10487       <!-- end of kind -->
10488       </tbody>
10489       <tr><td colspan="6" class="kind">dynamic</td></tr>
10490
10491       <thead class="entries_header">
10492         <tr>
10493           <th class="th_name">Property Name</th>
10494           <th class="th_type">Type</th>
10495           <th class="th_description">Description</th>
10496           <th class="th_units">Units</th>
10497           <th class="th_range">Range</th>
10498           <th class="th_tags">Tags</th>
10499         </tr>
10500       </thead>
10501
10502       <tbody>
10503
10504         
10505
10506         
10507
10508         
10509
10510         
10511
10512                 
10513           <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
10514             <td class="entry_name
10515              " rowspan="3">
10516               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
10517             </td>
10518             <td class="entry_type">
10519                 <span class="entry_type_name">byte</span>
10520
10521               <span class="entry_type_visibility"> [public as location]</span>
10522
10523               <span class="entry_type_synthetic">[synthetic] </span>
10524
10525               <span class="entry_type_hwlevel">[legacy] </span>
10526
10527
10528
10529
10530             </td> <!-- entry_type -->
10531
10532             <td class="entry_description">
10533               <p>A location object to use when generating image GPS metadata.<wbr/></p>
10534             </td>
10535
10536             <td class="entry_units">
10537             </td>
10538
10539             <td class="entry_range">
10540             </td>
10541
10542             <td class="entry_tags">
10543             </td>
10544
10545           </tr>
10546           <tr class="entries_header">
10547             <th class="th_details" colspan="5">Details</th>
10548           </tr>
10549           <tr class="entry_cont">
10550             <td class="entry_details" colspan="5">
10551               <p>Setting a location object in a request will include the GPS coordinates of the location
10552 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
10553 viewed by anyone who receives the JPEG image.<wbr/></p>
10554             </td>
10555           </tr>
10556
10557
10558           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10559            <!-- end of entry -->
10560         
10561                 
10562           <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
10563             <td class="entry_name
10564              " rowspan="1">
10565               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
10566             </td>
10567             <td class="entry_type">
10568                 <span class="entry_type_name">double</span>
10569                 <span class="entry_type_container">x</span>
10570
10571                 <span class="entry_type_array">
10572                   3
10573                 </span>
10574               <span class="entry_type_visibility"> [hidden]</span>
10575
10576
10577               <span class="entry_type_hwlevel">[legacy] </span>
10578
10579
10580                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
10581
10582
10583             </td> <!-- entry_type -->
10584
10585             <td class="entry_description">
10586               <p>GPS coordinates to include in output JPEG
10587 EXIF.<wbr/></p>
10588             </td>
10589
10590             <td class="entry_units">
10591             </td>
10592
10593             <td class="entry_range">
10594               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
10595             </td>
10596
10597             <td class="entry_tags">
10598               <ul class="entry_tags">
10599                   <li><a href="#tag_BC">BC</a></li>
10600               </ul>
10601             </td>
10602
10603           </tr>
10604
10605
10606           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10607            <!-- end of entry -->
10608         
10609                 
10610           <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
10611             <td class="entry_name
10612              " rowspan="1">
10613               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
10614             </td>
10615             <td class="entry_type">
10616                 <span class="entry_type_name">byte</span>
10617
10618               <span class="entry_type_visibility"> [hidden as string]</span>
10619
10620
10621               <span class="entry_type_hwlevel">[legacy] </span>
10622
10623
10624
10625
10626             </td> <!-- entry_type -->
10627
10628             <td class="entry_description">
10629               <p>32 characters describing GPS algorithm to
10630 include in EXIF.<wbr/></p>
10631             </td>
10632
10633             <td class="entry_units">
10634               UTF-8 null-terminated string
10635             </td>
10636
10637             <td class="entry_range">
10638             </td>
10639
10640             <td class="entry_tags">
10641               <ul class="entry_tags">
10642                   <li><a href="#tag_BC">BC</a></li>
10643               </ul>
10644             </td>
10645
10646           </tr>
10647
10648
10649           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10650            <!-- end of entry -->
10651         
10652                 
10653           <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
10654             <td class="entry_name
10655              " rowspan="1">
10656               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
10657             </td>
10658             <td class="entry_type">
10659                 <span class="entry_type_name">int64</span>
10660
10661               <span class="entry_type_visibility"> [hidden]</span>
10662
10663
10664               <span class="entry_type_hwlevel">[legacy] </span>
10665
10666
10667
10668
10669             </td> <!-- entry_type -->
10670
10671             <td class="entry_description">
10672               <p>Time GPS fix was made to include in
10673 EXIF.<wbr/></p>
10674             </td>
10675
10676             <td class="entry_units">
10677               UTC in seconds since January 1,<wbr/> 1970
10678             </td>
10679
10680             <td class="entry_range">
10681             </td>
10682
10683             <td class="entry_tags">
10684               <ul class="entry_tags">
10685                   <li><a href="#tag_BC">BC</a></li>
10686               </ul>
10687             </td>
10688
10689           </tr>
10690
10691
10692           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10693            <!-- end of entry -->
10694         
10695                 
10696           <tr class="entry" id="dynamic_android.jpeg.orientation">
10697             <td class="entry_name
10698              " rowspan="3">
10699               android.<wbr/>jpeg.<wbr/>orientation
10700             </td>
10701             <td class="entry_type">
10702                 <span class="entry_type_name">int32</span>
10703
10704               <span class="entry_type_visibility"> [public]</span>
10705
10706
10707               <span class="entry_type_hwlevel">[legacy] </span>
10708
10709
10710
10711
10712             </td> <!-- entry_type -->
10713
10714             <td class="entry_description">
10715               <p>The orientation for a JPEG image.<wbr/></p>
10716             </td>
10717
10718             <td class="entry_units">
10719               Degrees in multiples of 90
10720             </td>
10721
10722             <td class="entry_range">
10723               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
10724             </td>
10725
10726             <td class="entry_tags">
10727               <ul class="entry_tags">
10728                   <li><a href="#tag_BC">BC</a></li>
10729               </ul>
10730             </td>
10731
10732           </tr>
10733           <tr class="entries_header">
10734             <th class="th_details" colspan="5">Details</th>
10735           </tr>
10736           <tr class="entry_cont">
10737             <td class="entry_details" colspan="5">
10738               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
10739 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
10740 upright.<wbr/></p>
10741 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
10742 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
10743 the thumbnail data will also be rotated.<wbr/></p>
10744 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
10745 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
10746 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
10747 sample code may be used:</p>
10748 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
10749     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
10750     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
10751
10752     //<wbr/> Round device orientation to a multiple of 90
10753     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
10754
10755     //<wbr/> Reverse device orientation for front-facing cameras
10756     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
10757     if (facingFront) deviceOrientation = -deviceOrientation;
10758
10759     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
10760     //<wbr/> the image upright relative to the device orientation
10761     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
10762
10763     return jpegOrientation;
10764 }
10765 </code></pre>
10766             </td>
10767           </tr>
10768
10769
10770           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10771            <!-- end of entry -->
10772         
10773                 
10774           <tr class="entry" id="dynamic_android.jpeg.quality">
10775             <td class="entry_name
10776              " rowspan="3">
10777               android.<wbr/>jpeg.<wbr/>quality
10778             </td>
10779             <td class="entry_type">
10780                 <span class="entry_type_name">byte</span>
10781
10782               <span class="entry_type_visibility"> [public]</span>
10783
10784
10785               <span class="entry_type_hwlevel">[legacy] </span>
10786
10787
10788
10789
10790             </td> <!-- entry_type -->
10791
10792             <td class="entry_description">
10793               <p>Compression quality of the final JPEG
10794 image.<wbr/></p>
10795             </td>
10796
10797             <td class="entry_units">
10798             </td>
10799
10800             <td class="entry_range">
10801               <p>1-100; larger is higher quality</p>
10802             </td>
10803
10804             <td class="entry_tags">
10805               <ul class="entry_tags">
10806                   <li><a href="#tag_BC">BC</a></li>
10807               </ul>
10808             </td>
10809
10810           </tr>
10811           <tr class="entries_header">
10812             <th class="th_details" colspan="5">Details</th>
10813           </tr>
10814           <tr class="entry_cont">
10815             <td class="entry_details" colspan="5">
10816               <p>85-95 is typical usage range.<wbr/></p>
10817             </td>
10818           </tr>
10819
10820
10821           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10822            <!-- end of entry -->
10823         
10824                 
10825           <tr class="entry" id="dynamic_android.jpeg.size">
10826             <td class="entry_name
10827              " rowspan="3">
10828               android.<wbr/>jpeg.<wbr/>size
10829             </td>
10830             <td class="entry_type">
10831                 <span class="entry_type_name">int32</span>
10832
10833               <span class="entry_type_visibility"> [system]</span>
10834
10835
10836
10837
10838
10839
10840             </td> <!-- entry_type -->
10841
10842             <td class="entry_description">
10843               <p>The size of the compressed JPEG image,<wbr/> in
10844 bytes</p>
10845             </td>
10846
10847             <td class="entry_units">
10848             </td>
10849
10850             <td class="entry_range">
10851               <p>&gt;= 0</p>
10852             </td>
10853
10854             <td class="entry_tags">
10855               <ul class="entry_tags">
10856                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10857               </ul>
10858             </td>
10859
10860           </tr>
10861           <tr class="entries_header">
10862             <th class="th_details" colspan="5">Details</th>
10863           </tr>
10864           <tr class="entry_cont">
10865             <td class="entry_details" colspan="5">
10866               <p>If no JPEG output is produced for the request,<wbr/>
10867 this must be 0.<wbr/></p>
10868 <p>Otherwise,<wbr/> this describes the real size of the compressed
10869 JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
10870 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
10871 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
10872 the JPEG stream will be 1000000 bytes,<wbr/> of which the first
10873 500000 make up the real data.<wbr/></p>
10874             </td>
10875           </tr>
10876
10877
10878           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10879            <!-- end of entry -->
10880         
10881                 
10882           <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
10883             <td class="entry_name
10884              " rowspan="1">
10885               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
10886             </td>
10887             <td class="entry_type">
10888                 <span class="entry_type_name">byte</span>
10889
10890               <span class="entry_type_visibility"> [public]</span>
10891
10892
10893               <span class="entry_type_hwlevel">[legacy] </span>
10894
10895
10896
10897
10898             </td> <!-- entry_type -->
10899
10900             <td class="entry_description">
10901               <p>Compression quality of JPEG
10902 thumbnail.<wbr/></p>
10903             </td>
10904
10905             <td class="entry_units">
10906             </td>
10907
10908             <td class="entry_range">
10909               <p>1-100; larger is higher quality</p>
10910             </td>
10911
10912             <td class="entry_tags">
10913               <ul class="entry_tags">
10914                   <li><a href="#tag_BC">BC</a></li>
10915               </ul>
10916             </td>
10917
10918           </tr>
10919
10920
10921           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10922            <!-- end of entry -->
10923         
10924                 
10925           <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
10926             <td class="entry_name
10927              " rowspan="5">
10928               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
10929             </td>
10930             <td class="entry_type">
10931                 <span class="entry_type_name">int32</span>
10932                 <span class="entry_type_container">x</span>
10933
10934                 <span class="entry_type_array">
10935                   2
10936                 </span>
10937               <span class="entry_type_visibility"> [public as size]</span>
10938
10939
10940               <span class="entry_type_hwlevel">[legacy] </span>
10941
10942
10943
10944
10945             </td> <!-- entry_type -->
10946
10947             <td class="entry_description">
10948               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
10949             </td>
10950
10951             <td class="entry_units">
10952             </td>
10953
10954             <td class="entry_range">
10955               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
10956             </td>
10957
10958             <td class="entry_tags">
10959               <ul class="entry_tags">
10960                   <li><a href="#tag_BC">BC</a></li>
10961               </ul>
10962             </td>
10963
10964           </tr>
10965           <tr class="entries_header">
10966             <th class="th_details" colspan="5">Details</th>
10967           </tr>
10968           <tr class="entry_cont">
10969             <td class="entry_details" colspan="5">
10970               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
10971 but the captured JPEG will still be a valid image.<wbr/></p>
10972 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
10973 should have the same aspect ratio as the main JPEG output.<wbr/></p>
10974 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
10975 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
10976 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
10977 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
10978 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
10979 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
10980             </td>
10981           </tr>
10982
10983           <tr class="entries_header">
10984             <th class="th_details" colspan="5">HAL Implementation Details</th>
10985           </tr>
10986           <tr class="entry_cont">
10987             <td class="entry_details" colspan="5">
10988               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
10989 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
10990 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
10991 thumbnail image cropping.<wbr/></p>
10992             </td>
10993           </tr>
10994
10995           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
10996            <!-- end of entry -->
10997         
10998         
10999
11000       <!-- end of kind -->
11001       </tbody>
11002
11003   <!-- end of section -->
11004   <tr><td colspan="6" id="section_lens" class="section">lens</td></tr>
11005
11006
11007       <tr><td colspan="6" class="kind">controls</td></tr>
11008
11009       <thead class="entries_header">
11010         <tr>
11011           <th class="th_name">Property Name</th>
11012           <th class="th_type">Type</th>
11013           <th class="th_description">Description</th>
11014           <th class="th_units">Units</th>
11015           <th class="th_range">Range</th>
11016           <th class="th_tags">Tags</th>
11017         </tr>
11018       </thead>
11019
11020       <tbody>
11021
11022         
11023
11024         
11025
11026         
11027
11028         
11029
11030                 
11031           <tr class="entry" id="controls_android.lens.aperture">
11032             <td class="entry_name
11033              " rowspan="3">
11034               android.<wbr/>lens.<wbr/>aperture
11035             </td>
11036             <td class="entry_type">
11037                 <span class="entry_type_name">float</span>
11038
11039               <span class="entry_type_visibility"> [public]</span>
11040
11041
11042               <span class="entry_type_hwlevel">[full] </span>
11043
11044
11045
11046
11047             </td> <!-- entry_type -->
11048
11049             <td class="entry_description">
11050               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
11051 effective aperture diameter.<wbr/></p>
11052             </td>
11053
11054             <td class="entry_units">
11055               The f-number (f/<wbr/>N)
11056             </td>
11057
11058             <td class="entry_range">
11059               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
11060             </td>
11061
11062             <td class="entry_tags">
11063               <ul class="entry_tags">
11064                   <li><a href="#tag_V1">V1</a></li>
11065               </ul>
11066             </td>
11067
11068           </tr>
11069           <tr class="entries_header">
11070             <th class="th_details" colspan="5">Details</th>
11071           </tr>
11072           <tr class="entry_cont">
11073             <td class="entry_details" colspan="5">
11074               <p>Setting this value is only supported on the camera devices that have a variable
11075 aperture lens.<wbr/></p>
11076 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
11077 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
11078 <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>
11079 to achieve manual exposure control.<wbr/></p>
11080 <p>The requested aperture value may take several frames to reach the
11081 requested value; the camera device will report the current (intermediate)
11082 aperture size in capture result metadata while the aperture is changing.<wbr/>
11083 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>
11084 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
11085 the ON modes,<wbr/> this will be overridden by the camera device
11086 auto-exposure algorithm,<wbr/> the overridden values are then provided
11087 back to the user in the corresponding result.<wbr/></p>
11088             </td>
11089           </tr>
11090
11091
11092           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11093            <!-- end of entry -->
11094         
11095                 
11096           <tr class="entry" id="controls_android.lens.filterDensity">
11097             <td class="entry_name
11098              " rowspan="3">
11099               android.<wbr/>lens.<wbr/>filter<wbr/>Density
11100             </td>
11101             <td class="entry_type">
11102                 <span class="entry_type_name">float</span>
11103
11104               <span class="entry_type_visibility"> [public]</span>
11105
11106
11107               <span class="entry_type_hwlevel">[full] </span>
11108
11109
11110
11111
11112             </td> <!-- entry_type -->
11113
11114             <td class="entry_description">
11115               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
11116             </td>
11117
11118             <td class="entry_units">
11119               Exposure Value (EV)
11120             </td>
11121
11122             <td class="entry_range">
11123               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
11124             </td>
11125
11126             <td class="entry_tags">
11127               <ul class="entry_tags">
11128                   <li><a href="#tag_V1">V1</a></li>
11129               </ul>
11130             </td>
11131
11132           </tr>
11133           <tr class="entries_header">
11134             <th class="th_details" colspan="5">Details</th>
11135           </tr>
11136           <tr class="entry_cont">
11137             <td class="entry_details" colspan="5">
11138               <p>This control will not be supported on most camera devices.<wbr/></p>
11139 <p>Lens filters are typically used to lower the amount of light the
11140 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
11141 step is the standard logarithmic representation,<wbr/> which are
11142 non-negative,<wbr/> and inversely proportional to the amount of light
11143 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
11144 in no reduction of the incoming light,<wbr/> and setting this to 2 would
11145 mean that the filter is set to reduce incoming light by two stops
11146 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
11147 <p>It may take several frames before the lens filter density changes
11148 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
11149 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11150             </td>
11151           </tr>
11152
11153
11154           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11155            <!-- end of entry -->
11156         
11157                 
11158           <tr class="entry" id="controls_android.lens.focalLength">
11159             <td class="entry_name
11160              " rowspan="3">
11161               android.<wbr/>lens.<wbr/>focal<wbr/>Length
11162             </td>
11163             <td class="entry_type">
11164                 <span class="entry_type_name">float</span>
11165
11166               <span class="entry_type_visibility"> [public]</span>
11167
11168
11169               <span class="entry_type_hwlevel">[legacy] </span>
11170
11171
11172
11173
11174             </td> <!-- entry_type -->
11175
11176             <td class="entry_description">
11177               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
11178             </td>
11179
11180             <td class="entry_units">
11181               Millimeters
11182             </td>
11183
11184             <td class="entry_range">
11185               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
11186             </td>
11187
11188             <td class="entry_tags">
11189               <ul class="entry_tags">
11190                   <li><a href="#tag_V1">V1</a></li>
11191               </ul>
11192             </td>
11193
11194           </tr>
11195           <tr class="entries_header">
11196             <th class="th_details" colspan="5">Details</th>
11197           </tr>
11198           <tr class="entry_cont">
11199             <td class="entry_details" colspan="5">
11200               <p>This setting controls the physical focal length of the camera
11201 device's lens.<wbr/> Changing the focal length changes the field of
11202 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
11203 <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
11204 setting won't be applied instantaneously,<wbr/> and it may take several
11205 frames before the lens can change to the requested focal length.<wbr/>
11206 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
11207 be set to MOVING.<wbr/></p>
11208 <p>Optical zoom will not be supported on most devices.<wbr/></p>
11209             </td>
11210           </tr>
11211
11212
11213           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11214            <!-- end of entry -->
11215         
11216                 
11217           <tr class="entry" id="controls_android.lens.focusDistance">
11218             <td class="entry_name
11219              " rowspan="3">
11220               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
11221             </td>
11222             <td class="entry_type">
11223                 <span class="entry_type_name">float</span>
11224
11225               <span class="entry_type_visibility"> [public]</span>
11226
11227
11228               <span class="entry_type_hwlevel">[full] </span>
11229
11230
11231
11232
11233             </td> <!-- entry_type -->
11234
11235             <td class="entry_description">
11236               <p>Desired distance to plane of sharpest focus,<wbr/>
11237 measured from frontmost surface of the lens.<wbr/></p>
11238             </td>
11239
11240             <td class="entry_units">
11241               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11242             </td>
11243
11244             <td class="entry_range">
11245               <p>&gt;= 0</p>
11246             </td>
11247
11248             <td class="entry_tags">
11249               <ul class="entry_tags">
11250                   <li><a href="#tag_BC">BC</a></li>
11251                   <li><a href="#tag_V1">V1</a></li>
11252               </ul>
11253             </td>
11254
11255           </tr>
11256           <tr class="entries_header">
11257             <th class="th_details" colspan="5">Details</th>
11258           </tr>
11259           <tr class="entry_cont">
11260             <td class="entry_details" colspan="5">
11261               <p>This control can be used for setting manual focus,<wbr/> on devices that support
11262 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
11263 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
11264 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
11265 <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>
11266 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
11267 instantaneously,<wbr/> and it may take several frames before the lens
11268 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
11269 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
11270 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
11271 for infinity focus.<wbr/></p>
11272             </td>
11273           </tr>
11274
11275
11276           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11277            <!-- end of entry -->
11278         
11279                 
11280           <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
11281             <td class="entry_name
11282              " rowspan="3">
11283               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
11284             </td>
11285             <td class="entry_type">
11286                 <span class="entry_type_name entry_type_name_enum">byte</span>
11287
11288               <span class="entry_type_visibility"> [public]</span>
11289
11290
11291               <span class="entry_type_hwlevel">[limited] </span>
11292
11293
11294
11295                 <ul class="entry_type_enum">
11296                   <li>
11297                     <span class="entry_type_enum_name">OFF</span>
11298                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
11299                   </li>
11300                   <li>
11301                     <span class="entry_type_enum_name">ON</span>
11302                     <span class="entry_type_enum_optional">[optional]</span>
11303                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
11304                   </li>
11305                 </ul>
11306
11307             </td> <!-- entry_type -->
11308
11309             <td class="entry_description">
11310               <p>Sets whether the camera device uses optical image stabilization (OIS)
11311 when capturing images.<wbr/></p>
11312             </td>
11313
11314             <td class="entry_units">
11315             </td>
11316
11317             <td class="entry_range">
11318               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
11319             </td>
11320
11321             <td class="entry_tags">
11322               <ul class="entry_tags">
11323                   <li><a href="#tag_V1">V1</a></li>
11324               </ul>
11325             </td>
11326
11327           </tr>
11328           <tr class="entries_header">
11329             <th class="th_details" colspan="5">Details</th>
11330           </tr>
11331           <tr class="entry_cont">
11332             <td class="entry_details" colspan="5">
11333               <p>OIS is used to compensate for motion blur due to small
11334 movements of the camera during capture.<wbr/> Unlike digital image
11335 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
11336 makes use of mechanical elements to stabilize the camera
11337 sensor,<wbr/> and thus allows for longer exposure times before
11338 camera shake becomes apparent.<wbr/></p>
11339 <p>Switching between different optical stabilization modes may take several
11340 frames to initialize,<wbr/> the camera device will report the current mode in
11341 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
11342 optical stabilization modes in the first several capture results may still
11343 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
11344 <p>If a camera device supports both OIS and digital image stabilization
11345 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
11346 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
11347 <p>Not all devices will support OIS; see
11348 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
11349 available controls.<wbr/></p>
11350             </td>
11351           </tr>
11352
11353
11354           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11355            <!-- end of entry -->
11356         
11357         
11358
11359       <!-- end of kind -->
11360       </tbody>
11361       <tr><td colspan="6" class="kind">static</td></tr>
11362
11363       <thead class="entries_header">
11364         <tr>
11365           <th class="th_name">Property Name</th>
11366           <th class="th_type">Type</th>
11367           <th class="th_description">Description</th>
11368           <th class="th_units">Units</th>
11369           <th class="th_range">Range</th>
11370           <th class="th_tags">Tags</th>
11371         </tr>
11372       </thead>
11373
11374       <tbody>
11375
11376         
11377
11378         
11379
11380         
11381
11382         
11383                 
11384             
11385
11386                 
11387           <tr class="entry" id="static_android.lens.info.availableApertures">
11388             <td class="entry_name
11389              " rowspan="3">
11390               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
11391             </td>
11392             <td class="entry_type">
11393                 <span class="entry_type_name">float</span>
11394                 <span class="entry_type_container">x</span>
11395
11396                 <span class="entry_type_array">
11397                   n
11398                 </span>
11399               <span class="entry_type_visibility"> [public]</span>
11400
11401
11402               <span class="entry_type_hwlevel">[full] </span>
11403
11404
11405
11406
11407             </td> <!-- entry_type -->
11408
11409             <td class="entry_description">
11410               <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
11411 supported by this camera device.<wbr/></p>
11412             </td>
11413
11414             <td class="entry_units">
11415               The aperture f-number
11416             </td>
11417
11418             <td class="entry_range">
11419             </td>
11420
11421             <td class="entry_tags">
11422               <ul class="entry_tags">
11423                   <li><a href="#tag_V1">V1</a></li>
11424               </ul>
11425             </td>
11426
11427           </tr>
11428           <tr class="entries_header">
11429             <th class="th_details" colspan="5">Details</th>
11430           </tr>
11431           <tr class="entry_cont">
11432             <td class="entry_details" colspan="5">
11433               <p>If the camera device doesn't support a variable lens aperture,<wbr/>
11434 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
11435 <p>If the camera device supports a variable aperture,<wbr/> the aperture values
11436 in this list will be sorted in ascending order.<wbr/></p>
11437             </td>
11438           </tr>
11439
11440
11441           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11442            <!-- end of entry -->
11443         
11444                 
11445           <tr class="entry" id="static_android.lens.info.availableFilterDensities">
11446             <td class="entry_name
11447              " rowspan="3">
11448               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
11449             </td>
11450             <td class="entry_type">
11451                 <span class="entry_type_name">float</span>
11452                 <span class="entry_type_container">x</span>
11453
11454                 <span class="entry_type_array">
11455                   n
11456                 </span>
11457               <span class="entry_type_visibility"> [public]</span>
11458
11459
11460               <span class="entry_type_hwlevel">[full] </span>
11461
11462
11463
11464
11465             </td> <!-- entry_type -->
11466
11467             <td class="entry_description">
11468               <p>List of neutral density filter values for
11469 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
11470             </td>
11471
11472             <td class="entry_units">
11473               Exposure value (EV)
11474             </td>
11475
11476             <td class="entry_range">
11477               <p>Values are &gt;= 0</p>
11478             </td>
11479
11480             <td class="entry_tags">
11481               <ul class="entry_tags">
11482                   <li><a href="#tag_V1">V1</a></li>
11483               </ul>
11484             </td>
11485
11486           </tr>
11487           <tr class="entries_header">
11488             <th class="th_details" colspan="5">Details</th>
11489           </tr>
11490           <tr class="entry_cont">
11491             <td class="entry_details" colspan="5">
11492               <p>If a neutral density filter is not supported by this camera device,<wbr/>
11493 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
11494 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
11495             </td>
11496           </tr>
11497
11498
11499           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11500            <!-- end of entry -->
11501         
11502                 
11503           <tr class="entry" id="static_android.lens.info.availableFocalLengths">
11504             <td class="entry_name
11505              " rowspan="3">
11506               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
11507             </td>
11508             <td class="entry_type">
11509                 <span class="entry_type_name">float</span>
11510                 <span class="entry_type_container">x</span>
11511
11512                 <span class="entry_type_array">
11513                   n
11514                 </span>
11515               <span class="entry_type_visibility"> [public]</span>
11516
11517
11518               <span class="entry_type_hwlevel">[legacy] </span>
11519
11520
11521                 <div class="entry_type_notes">The list of available focal lengths</div>
11522
11523
11524             </td> <!-- entry_type -->
11525
11526             <td class="entry_description">
11527               <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
11528 device.<wbr/></p>
11529             </td>
11530
11531             <td class="entry_units">
11532               Millimeters
11533             </td>
11534
11535             <td class="entry_range">
11536               <p>Values are &gt; 0</p>
11537             </td>
11538
11539             <td class="entry_tags">
11540               <ul class="entry_tags">
11541                   <li><a href="#tag_BC">BC</a></li>
11542                   <li><a href="#tag_V1">V1</a></li>
11543               </ul>
11544             </td>
11545
11546           </tr>
11547           <tr class="entries_header">
11548             <th class="th_details" colspan="5">Details</th>
11549           </tr>
11550           <tr class="entry_cont">
11551             <td class="entry_details" colspan="5">
11552               <p>If optical zoom is not supported,<wbr/> this list will only contain
11553 a single value corresponding to the fixed focal length of the
11554 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
11555 by the camera device,<wbr/> in ascending order.<wbr/></p>
11556             </td>
11557           </tr>
11558
11559
11560           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11561            <!-- end of entry -->
11562         
11563                 
11564           <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
11565             <td class="entry_name
11566              " rowspan="3">
11567               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
11568             </td>
11569             <td class="entry_type">
11570                 <span class="entry_type_name">byte</span>
11571                 <span class="entry_type_container">x</span>
11572
11573                 <span class="entry_type_array">
11574                   n
11575                 </span>
11576               <span class="entry_type_visibility"> [public as enumList]</span>
11577
11578
11579               <span class="entry_type_hwlevel">[limited] </span>
11580
11581
11582                 <div class="entry_type_notes">list of enums</div>
11583
11584
11585             </td> <!-- entry_type -->
11586
11587             <td class="entry_description">
11588               <p>List of optical image stabilization (OIS) modes for
11589 <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>
11590             </td>
11591
11592             <td class="entry_units">
11593             </td>
11594
11595             <td class="entry_range">
11596               <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
11597             </td>
11598
11599             <td class="entry_tags">
11600               <ul class="entry_tags">
11601                   <li><a href="#tag_V1">V1</a></li>
11602               </ul>
11603             </td>
11604
11605           </tr>
11606           <tr class="entries_header">
11607             <th class="th_details" colspan="5">Details</th>
11608           </tr>
11609           <tr class="entry_cont">
11610             <td class="entry_details" colspan="5">
11611               <p>If OIS is not supported by a given camera device,<wbr/> this list will
11612 contain only OFF.<wbr/></p>
11613             </td>
11614           </tr>
11615
11616
11617           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11618            <!-- end of entry -->
11619         
11620                 
11621           <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
11622             <td class="entry_name
11623              " rowspan="3">
11624               android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
11625             </td>
11626             <td class="entry_type">
11627                 <span class="entry_type_name">float</span>
11628
11629               <span class="entry_type_visibility"> [public]</span>
11630
11631
11632               <span class="entry_type_hwlevel">[limited] </span>
11633
11634
11635
11636
11637             </td> <!-- entry_type -->
11638
11639             <td class="entry_description">
11640               <p>Hyperfocal distance for this lens.<wbr/></p>
11641             </td>
11642
11643             <td class="entry_units">
11644               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11645             </td>
11646
11647             <td class="entry_range">
11648               <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
11649 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>
11650             </td>
11651
11652             <td class="entry_tags">
11653             </td>
11654
11655           </tr>
11656           <tr class="entries_header">
11657             <th class="th_details" colspan="5">Details</th>
11658           </tr>
11659           <tr class="entry_cont">
11660             <td class="entry_details" colspan="5">
11661               <p>If the lens is not fixed focus,<wbr/> the camera device will report this
11662 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>
11663             </td>
11664           </tr>
11665
11666
11667           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11668            <!-- end of entry -->
11669         
11670                 
11671           <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
11672             <td class="entry_name
11673              " rowspan="5">
11674               android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
11675             </td>
11676             <td class="entry_type">
11677                 <span class="entry_type_name">float</span>
11678
11679               <span class="entry_type_visibility"> [public]</span>
11680
11681
11682               <span class="entry_type_hwlevel">[limited] </span>
11683
11684
11685
11686
11687             </td> <!-- entry_type -->
11688
11689             <td class="entry_description">
11690               <p>Shortest distance from frontmost surface
11691 of the lens that can be brought into sharp focus.<wbr/></p>
11692             </td>
11693
11694             <td class="entry_units">
11695               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
11696             </td>
11697
11698             <td class="entry_range">
11699               <p>&gt;= 0</p>
11700             </td>
11701
11702             <td class="entry_tags">
11703               <ul class="entry_tags">
11704                   <li><a href="#tag_V1">V1</a></li>
11705               </ul>
11706             </td>
11707
11708           </tr>
11709           <tr class="entries_header">
11710             <th class="th_details" colspan="5">Details</th>
11711           </tr>
11712           <tr class="entry_cont">
11713             <td class="entry_details" colspan="5">
11714               <p>If the lens is fixed-focus,<wbr/> this will be
11715 0.<wbr/></p>
11716             </td>
11717           </tr>
11718
11719           <tr class="entries_header">
11720             <th class="th_details" colspan="5">HAL Implementation Details</th>
11721           </tr>
11722           <tr class="entry_cont">
11723             <td class="entry_details" colspan="5">
11724               <p>Mandatory for FULL devices; LIMITED devices
11725 must always set this value to 0 for fixed-focus; and may omit
11726 the minimum focus distance otherwise.<wbr/></p>
11727 <p>This field is also mandatory for all devices advertising
11728 the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
11729             </td>
11730           </tr>
11731
11732           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11733            <!-- end of entry -->
11734         
11735                 
11736           <tr class="entry" id="static_android.lens.info.shadingMapSize">
11737             <td class="entry_name
11738              " rowspan="3">
11739               android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
11740             </td>
11741             <td class="entry_type">
11742                 <span class="entry_type_name">int32</span>
11743                 <span class="entry_type_container">x</span>
11744
11745                 <span class="entry_type_array">
11746                   2
11747                 </span>
11748               <span class="entry_type_visibility"> [hidden as size]</span>
11749
11750
11751               <span class="entry_type_hwlevel">[full] </span>
11752
11753
11754                 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
11755
11756
11757             </td> <!-- entry_type -->
11758
11759             <td class="entry_description">
11760               <p>Dimensions of lens shading map.<wbr/></p>
11761             </td>
11762
11763             <td class="entry_units">
11764             </td>
11765
11766             <td class="entry_range">
11767               <p>Both values &gt;= 1</p>
11768             </td>
11769
11770             <td class="entry_tags">
11771               <ul class="entry_tags">
11772                   <li><a href="#tag_V1">V1</a></li>
11773               </ul>
11774             </td>
11775
11776           </tr>
11777           <tr class="entries_header">
11778             <th class="th_details" colspan="5">Details</th>
11779           </tr>
11780           <tr class="entry_cont">
11781             <td class="entry_details" colspan="5">
11782               <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
11783 must be smaller than 64x64.<wbr/></p>
11784             </td>
11785           </tr>
11786
11787
11788           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11789            <!-- end of entry -->
11790         
11791                 
11792           <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
11793             <td class="entry_name
11794              " rowspan="5">
11795               android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
11796             </td>
11797             <td class="entry_type">
11798                 <span class="entry_type_name entry_type_name_enum">byte</span>
11799
11800               <span class="entry_type_visibility"> [public]</span>
11801
11802
11803               <span class="entry_type_hwlevel">[limited] </span>
11804
11805
11806
11807                 <ul class="entry_type_enum">
11808                   <li>
11809                     <span class="entry_type_enum_name">UNCALIBRATED</span>
11810                     <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
11811 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
11812 <p>Setting the lens to the same focus distance on separate occasions may
11813 result in a different real focus distance,<wbr/> depending on factors such
11814 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
11815 and the device temperature.<wbr/> The focus distance value will still be
11816 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
11817 represents the farthest focus.<wbr/></p></span>
11818                   </li>
11819                   <li>
11820                     <span class="entry_type_enum_name">APPROXIMATE</span>
11821                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
11822 <p>However,<wbr/> setting the lens to the same focus distance
11823 on separate occasions may result in a different real
11824 focus distance,<wbr/> depending on factors such as the
11825 orientation of the device,<wbr/> the age of the focusing
11826 mechanism,<wbr/> and the device temperature.<wbr/></p></span>
11827                   </li>
11828                   <li>
11829                     <span class="entry_type_enum_name">CALIBRATED</span>
11830                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
11831 is calibrated.<wbr/></p>
11832 <p>The lens mechanism is calibrated so that setting the
11833 same focus distance is repeatable on multiple
11834 occasions with good accuracy,<wbr/> and the focus distance
11835 corresponds to the real physical distance to the plane
11836 of best focus.<wbr/></p></span>
11837                   </li>
11838                 </ul>
11839
11840             </td> <!-- entry_type -->
11841
11842             <td class="entry_description">
11843               <p>The lens focus distance calibration quality.<wbr/></p>
11844             </td>
11845
11846             <td class="entry_units">
11847             </td>
11848
11849             <td class="entry_range">
11850             </td>
11851
11852             <td class="entry_tags">
11853               <ul class="entry_tags">
11854                   <li><a href="#tag_V1">V1</a></li>
11855               </ul>
11856             </td>
11857
11858           </tr>
11859           <tr class="entries_header">
11860             <th class="th_details" colspan="5">Details</th>
11861           </tr>
11862           <tr class="entry_cont">
11863             <td class="entry_details" colspan="5">
11864               <p>The lens focus distance calibration quality determines the reliability of
11865 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
11866 <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
11867 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
11868 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in
11869 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
11870 and increasing positive numbers represent focusing closer and closer
11871 to the camera device.<wbr/> The focus distance control also uses diopters
11872 on these devices.<wbr/></p>
11873 <p>UNCALIBRATED devices do not use units that are directly comparable
11874 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
11875 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
11876 nearest focus the device can achieve.<wbr/></p>
11877             </td>
11878           </tr>
11879
11880           <tr class="entries_header">
11881             <th class="th_details" colspan="5">HAL Implementation Details</th>
11882           </tr>
11883           <tr class="entry_cont">
11884             <td class="entry_details" colspan="5">
11885               <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
11886 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
11887 and the lens focus distance is set to 0 diopters
11888 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
11889 and is stably focused at infinity even if the device tilts.<wbr/> It may take the
11890 lens some time to move; during the move the lens state should be MOVING and
11891 the output diopter value should be changing toward 0.<wbr/></p>
11892             </td>
11893           </tr>
11894
11895           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11896            <!-- end of entry -->
11897         
11898         
11899         
11900
11901                 
11902           <tr class="entry" id="static_android.lens.facing">
11903             <td class="entry_name
11904              " rowspan="1">
11905               android.<wbr/>lens.<wbr/>facing
11906             </td>
11907             <td class="entry_type">
11908                 <span class="entry_type_name entry_type_name_enum">byte</span>
11909
11910               <span class="entry_type_visibility"> [public]</span>
11911
11912
11913               <span class="entry_type_hwlevel">[legacy] </span>
11914
11915
11916
11917                 <ul class="entry_type_enum">
11918                   <li>
11919                     <span class="entry_type_enum_name">FRONT</span>
11920                     <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
11921                   </li>
11922                   <li>
11923                     <span class="entry_type_enum_name">BACK</span>
11924                     <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
11925                   </li>
11926                   <li>
11927                     <span class="entry_type_enum_name">EXTERNAL</span>
11928                     <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
11929 device's screen.<wbr/></p></span>
11930                   </li>
11931                 </ul>
11932
11933             </td> <!-- entry_type -->
11934
11935             <td class="entry_description">
11936               <p>Direction the camera faces relative to
11937 device screen.<wbr/></p>
11938             </td>
11939
11940             <td class="entry_units">
11941             </td>
11942
11943             <td class="entry_range">
11944             </td>
11945
11946             <td class="entry_tags">
11947             </td>
11948
11949           </tr>
11950
11951
11952           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
11953            <!-- end of entry -->
11954         
11955                 
11956           <tr class="entry" id="static_android.lens.poseRotation">
11957             <td class="entry_name
11958              " rowspan="3">
11959               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
11960             </td>
11961             <td class="entry_type">
11962                 <span class="entry_type_name">float</span>
11963                 <span class="entry_type_container">x</span>
11964
11965                 <span class="entry_type_array">
11966                   4
11967                 </span>
11968               <span class="entry_type_visibility"> [public]</span>
11969
11970
11971
11972
11973
11974
11975             </td> <!-- entry_type -->
11976
11977             <td class="entry_description">
11978               <p>The orientation of the camera relative to the sensor
11979 coordinate system.<wbr/></p>
11980             </td>
11981
11982             <td class="entry_units">
11983               
11984             Quarternion coefficients
11985           
11986             </td>
11987
11988             <td class="entry_range">
11989             </td>
11990
11991             <td class="entry_tags">
11992               <ul class="entry_tags">
11993                   <li><a href="#tag_DEPTH">DEPTH</a></li>
11994               </ul>
11995             </td>
11996
11997           </tr>
11998           <tr class="entries_header">
11999             <th class="th_details" colspan="5">Details</th>
12000           </tr>
12001           <tr class="entry_cont">
12002             <td class="entry_details" colspan="5">
12003               <p>The four coefficients that describe the quarternion
12004 rotation from the Android sensor coordinate system to a
12005 camera-aligned coordinate system where the X-axis is
12006 aligned with the long side of the image sensor,<wbr/> the Y-axis
12007 is aligned with the short side of the image sensor,<wbr/> and
12008 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
12009 <p>To convert from the quarternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
12010 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
12011 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
12012 <pre><code> theta = 2 * acos(w)
12013 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
12014 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
12015 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
12016 </code></pre>
12017 <p>To create a 3x3 rotation matrix that applies the rotation
12018 defined by this quarternion,<wbr/> the following matrix can be
12019 used:</p>
12020 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
12021            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
12022            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
12023 </code></pre>
12024 <p>This matrix can then be used to apply the rotation to a
12025  column vector point with</p>
12026 <p><code>p' = Rp</code></p>
12027 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
12028  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
12029             </td>
12030           </tr>
12031
12032
12033           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12034            <!-- end of entry -->
12035         
12036                 
12037           <tr class="entry" id="static_android.lens.poseTranslation">
12038             <td class="entry_name
12039              " rowspan="3">
12040               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
12041             </td>
12042             <td class="entry_type">
12043                 <span class="entry_type_name">float</span>
12044                 <span class="entry_type_container">x</span>
12045
12046                 <span class="entry_type_array">
12047                   3
12048                 </span>
12049               <span class="entry_type_visibility"> [public]</span>
12050
12051
12052
12053
12054
12055
12056             </td> <!-- entry_type -->
12057
12058             <td class="entry_description">
12059               <p>Position of the camera optical center.<wbr/></p>
12060             </td>
12061
12062             <td class="entry_units">
12063               Meters
12064             </td>
12065
12066             <td class="entry_range">
12067             </td>
12068
12069             <td class="entry_tags">
12070               <ul class="entry_tags">
12071                   <li><a href="#tag_DEPTH">DEPTH</a></li>
12072               </ul>
12073             </td>
12074
12075           </tr>
12076           <tr class="entries_header">
12077             <th class="th_details" colspan="5">Details</th>
12078           </tr>
12079           <tr class="entry_cont">
12080             <td class="entry_details" colspan="5">
12081               <p>As measured in the device sensor coordinate system,<wbr/> the
12082 position of the camera device's optical center,<wbr/> as a
12083 three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
12084 <p>To transform a world position to a camera-device centered
12085 coordinate system,<wbr/> the position must be translated by this
12086 vector and then rotated by <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>.<wbr/></p>
12087             </td>
12088           </tr>
12089
12090
12091           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12092            <!-- end of entry -->
12093         
12094                 
12095           <tr class="entry" id="static_android.lens.intrinsicCalibration">
12096             <td class="entry_name
12097              " rowspan="3">
12098               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
12099             </td>
12100             <td class="entry_type">
12101                 <span class="entry_type_name">float</span>
12102                 <span class="entry_type_container">x</span>
12103
12104                 <span class="entry_type_array">
12105                   5
12106                 </span>
12107               <span class="entry_type_visibility"> [public]</span>
12108
12109
12110
12111
12112
12113
12114             </td> <!-- entry_type -->
12115
12116             <td class="entry_description">
12117               <p>The parameters for this camera device's intrinsic
12118 calibration.<wbr/></p>
12119             </td>
12120
12121             <td class="entry_units">
12122               
12123             Pixels in the android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size coordinate
12124             system.<wbr/>
12125           
12126             </td>
12127
12128             <td class="entry_range">
12129             </td>
12130
12131             <td class="entry_tags">
12132               <ul class="entry_tags">
12133                   <li><a href="#tag_DEPTH">DEPTH</a></li>
12134               </ul>
12135             </td>
12136
12137           </tr>
12138           <tr class="entries_header">
12139             <th class="th_details" colspan="5">Details</th>
12140           </tr>
12141           <tr class="entry_cont">
12142             <td class="entry_details" colspan="5">
12143               <p>The five calibration parameters that describe the
12144 transform from camera-centric 3D coordinates to sensor
12145 pixel coordinates:</p>
12146 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
12147 </code></pre>
12148 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
12149 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
12150 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
12151 being aligned with the lens plane.<wbr/></p>
12152 <p>These are typically used within a transformation matrix K:</p>
12153 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
12154        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
12155        0    0,<wbr/>   1 ]
12156 </code></pre>
12157 <p>which can then be combined with the camera pose rotation
12158 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
12159 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
12160 complete transform from world coordinates to pixel
12161 coordinates:</p>
12162 <pre><code>P = [ K 0   * [ R t
12163      0 1 ]     0 1 ]
12164 </code></pre>
12165 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
12166 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
12167 coordinate system,<wbr/> and with the mapping including the
12168 homogeneous division by z:</p>
12169 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
12170 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
12171 </code></pre>
12172 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
12173 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
12174 (depth) in pixel coordinates.<wbr/></p>
12175             </td>
12176           </tr>
12177
12178
12179           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12180            <!-- end of entry -->
12181         
12182                 
12183           <tr class="entry" id="static_android.lens.radialDistortion">
12184             <td class="entry_name
12185              " rowspan="3">
12186               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
12187             </td>
12188             <td class="entry_type">
12189                 <span class="entry_type_name">float</span>
12190                 <span class="entry_type_container">x</span>
12191
12192                 <span class="entry_type_array">
12193                   3
12194                 </span>
12195               <span class="entry_type_visibility"> [public]</span>
12196
12197
12198
12199
12200
12201
12202             </td> <!-- entry_type -->
12203
12204             <td class="entry_description">
12205               <p>The correction coefficients to correct for this camera device's
12206 radial lens distortion.<wbr/></p>
12207             </td>
12208
12209             <td class="entry_units">
12210               
12211             Coefficients for a 6th-degree even radial polynomial.<wbr/>
12212           
12213             </td>
12214
12215             <td class="entry_range">
12216             </td>
12217
12218             <td class="entry_tags">
12219               <ul class="entry_tags">
12220                   <li><a href="#tag_DEPTH">DEPTH</a></li>
12221               </ul>
12222             </td>
12223
12224           </tr>
12225           <tr class="entries_header">
12226             <th class="th_details" colspan="5">Details</th>
12227           </tr>
12228           <tr class="entry_cont">
12229             <td class="entry_details" colspan="5">
12230               <p>Three cofficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> kappa_<wbr/>3]</code> that
12231 can be used to correct the lens's radial geometric
12232 distortion with the mapping equations:</p>
12233 <pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 )
12234 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 )
12235 </code></pre>
12236 <p>where <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> are normalized coordinates with <code>(0,<wbr/>0)</code>
12237 at the lens optical center,<wbr/> and <code>[-1,<wbr/> 1]</code> are the edges of
12238 the active pixel array; and where <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the
12239 corrected normalized coordinates with radial distortion
12240 removed; and <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
12241             </td>
12242           </tr>
12243
12244
12245           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12246            <!-- end of entry -->
12247         
12248         
12249
12250       <!-- end of kind -->
12251       </tbody>
12252       <tr><td colspan="6" class="kind">dynamic</td></tr>
12253
12254       <thead class="entries_header">
12255         <tr>
12256           <th class="th_name">Property Name</th>
12257           <th class="th_type">Type</th>
12258           <th class="th_description">Description</th>
12259           <th class="th_units">Units</th>
12260           <th class="th_range">Range</th>
12261           <th class="th_tags">Tags</th>
12262         </tr>
12263       </thead>
12264
12265       <tbody>
12266
12267         
12268
12269         
12270
12271         
12272
12273         
12274
12275                 
12276           <tr class="entry" id="dynamic_android.lens.aperture">
12277             <td class="entry_name
12278              " rowspan="3">
12279               android.<wbr/>lens.<wbr/>aperture
12280             </td>
12281             <td class="entry_type">
12282                 <span class="entry_type_name">float</span>
12283
12284               <span class="entry_type_visibility"> [public]</span>
12285
12286
12287               <span class="entry_type_hwlevel">[full] </span>
12288
12289
12290
12291
12292             </td> <!-- entry_type -->
12293
12294             <td class="entry_description">
12295               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12296 effective aperture diameter.<wbr/></p>
12297             </td>
12298
12299             <td class="entry_units">
12300               The f-number (f/<wbr/>N)
12301             </td>
12302
12303             <td class="entry_range">
12304               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12305             </td>
12306
12307             <td class="entry_tags">
12308               <ul class="entry_tags">
12309                   <li><a href="#tag_V1">V1</a></li>
12310               </ul>
12311             </td>
12312
12313           </tr>
12314           <tr class="entries_header">
12315             <th class="th_details" colspan="5">Details</th>
12316           </tr>
12317           <tr class="entry_cont">
12318             <td class="entry_details" colspan="5">
12319               <p>Setting this value is only supported on the camera devices that have a variable
12320 aperture lens.<wbr/></p>
12321 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12322 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12323 <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>
12324 to achieve manual exposure control.<wbr/></p>
12325 <p>The requested aperture value may take several frames to reach the
12326 requested value; the camera device will report the current (intermediate)
12327 aperture size in capture result metadata while the aperture is changing.<wbr/>
12328 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>
12329 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12330 the ON modes,<wbr/> this will be overridden by the camera device
12331 auto-exposure algorithm,<wbr/> the overridden values are then provided
12332 back to the user in the corresponding result.<wbr/></p>
12333             </td>
12334           </tr>
12335
12336
12337           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12338            <!-- end of entry -->
12339         
12340                 
12341           <tr class="entry" id="dynamic_android.lens.filterDensity">
12342             <td class="entry_name
12343              " rowspan="3">
12344               android.<wbr/>lens.<wbr/>filter<wbr/>Density
12345             </td>
12346             <td class="entry_type">
12347                 <span class="entry_type_name">float</span>
12348
12349               <span class="entry_type_visibility"> [public]</span>
12350
12351
12352               <span class="entry_type_hwlevel">[full] </span>
12353
12354
12355
12356
12357             </td> <!-- entry_type -->
12358
12359             <td class="entry_description">
12360               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12361             </td>
12362
12363             <td class="entry_units">
12364               Exposure Value (EV)
12365             </td>
12366
12367             <td class="entry_range">
12368               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12369             </td>
12370
12371             <td class="entry_tags">
12372               <ul class="entry_tags">
12373                   <li><a href="#tag_V1">V1</a></li>
12374               </ul>
12375             </td>
12376
12377           </tr>
12378           <tr class="entries_header">
12379             <th class="th_details" colspan="5">Details</th>
12380           </tr>
12381           <tr class="entry_cont">
12382             <td class="entry_details" colspan="5">
12383               <p>This control will not be supported on most camera devices.<wbr/></p>
12384 <p>Lens filters are typically used to lower the amount of light the
12385 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12386 step is the standard logarithmic representation,<wbr/> which are
12387 non-negative,<wbr/> and inversely proportional to the amount of light
12388 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
12389 in no reduction of the incoming light,<wbr/> and setting this to 2 would
12390 mean that the filter is set to reduce incoming light by two stops
12391 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12392 <p>It may take several frames before the lens filter density changes
12393 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12394 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12395             </td>
12396           </tr>
12397
12398
12399           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12400            <!-- end of entry -->
12401         
12402                 
12403           <tr class="entry" id="dynamic_android.lens.focalLength">
12404             <td class="entry_name
12405              " rowspan="3">
12406               android.<wbr/>lens.<wbr/>focal<wbr/>Length
12407             </td>
12408             <td class="entry_type">
12409                 <span class="entry_type_name">float</span>
12410
12411               <span class="entry_type_visibility"> [public]</span>
12412
12413
12414               <span class="entry_type_hwlevel">[legacy] </span>
12415
12416
12417
12418
12419             </td> <!-- entry_type -->
12420
12421             <td class="entry_description">
12422               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12423             </td>
12424
12425             <td class="entry_units">
12426               Millimeters
12427             </td>
12428
12429             <td class="entry_range">
12430               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12431             </td>
12432
12433             <td class="entry_tags">
12434               <ul class="entry_tags">
12435                   <li><a href="#tag_BC">BC</a></li>
12436               </ul>
12437             </td>
12438
12439           </tr>
12440           <tr class="entries_header">
12441             <th class="th_details" colspan="5">Details</th>
12442           </tr>
12443           <tr class="entry_cont">
12444             <td class="entry_details" colspan="5">
12445               <p>This setting controls the physical focal length of the camera
12446 device's lens.<wbr/> Changing the focal length changes the field of
12447 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12448 <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
12449 setting won't be applied instantaneously,<wbr/> and it may take several
12450 frames before the lens can change to the requested focal length.<wbr/>
12451 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12452 be set to MOVING.<wbr/></p>
12453 <p>Optical zoom will not be supported on most devices.<wbr/></p>
12454             </td>
12455           </tr>
12456
12457
12458           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12459            <!-- end of entry -->
12460         
12461                 
12462           <tr class="entry" id="dynamic_android.lens.focusDistance">
12463             <td class="entry_name
12464              " rowspan="3">
12465               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
12466             </td>
12467             <td class="entry_type">
12468                 <span class="entry_type_name">float</span>
12469
12470               <span class="entry_type_visibility"> [public]</span>
12471
12472
12473               <span class="entry_type_hwlevel">[full] </span>
12474
12475
12476
12477
12478             </td> <!-- entry_type -->
12479
12480             <td class="entry_description">
12481               <p>Desired distance to plane of sharpest focus,<wbr/>
12482 measured from frontmost surface of the lens.<wbr/></p>
12483             </td>
12484
12485             <td class="entry_units">
12486               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12487             </td>
12488
12489             <td class="entry_range">
12490               <p>&gt;= 0</p>
12491             </td>
12492
12493             <td class="entry_tags">
12494               <ul class="entry_tags">
12495                   <li><a href="#tag_BC">BC</a></li>
12496               </ul>
12497             </td>
12498
12499           </tr>
12500           <tr class="entries_header">
12501             <th class="th_details" colspan="5">Details</th>
12502           </tr>
12503           <tr class="entry_cont">
12504             <td class="entry_details" colspan="5">
12505               <p>Should be zero for fixed-focus cameras</p>
12506             </td>
12507           </tr>
12508
12509
12510           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12511            <!-- end of entry -->
12512         
12513                 
12514           <tr class="entry" id="dynamic_android.lens.focusRange">
12515             <td class="entry_name
12516              " rowspan="3">
12517               android.<wbr/>lens.<wbr/>focus<wbr/>Range
12518             </td>
12519             <td class="entry_type">
12520                 <span class="entry_type_name">float</span>
12521                 <span class="entry_type_container">x</span>
12522
12523                 <span class="entry_type_array">
12524                   2
12525                 </span>
12526               <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
12527
12528
12529               <span class="entry_type_hwlevel">[limited] </span>
12530
12531
12532                 <div class="entry_type_notes">Range of scene distances that are in focus</div>
12533
12534
12535             </td> <!-- entry_type -->
12536
12537             <td class="entry_description">
12538               <p>The range of scene distances that are in
12539 sharp focus (depth of field).<wbr/></p>
12540             </td>
12541
12542             <td class="entry_units">
12543               A pair of focus distances in diopters: (near,<wbr/>
12544           far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
12545             </td>
12546
12547             <td class="entry_range">
12548               <p>&gt;=0</p>
12549             </td>
12550
12551             <td class="entry_tags">
12552               <ul class="entry_tags">
12553                   <li><a href="#tag_BC">BC</a></li>
12554               </ul>
12555             </td>
12556
12557           </tr>
12558           <tr class="entries_header">
12559             <th class="th_details" colspan="5">Details</th>
12560           </tr>
12561           <tr class="entry_cont">
12562             <td class="entry_details" colspan="5">
12563               <p>If variable focus not supported,<wbr/> can still report
12564 fixed depth of field range</p>
12565             </td>
12566           </tr>
12567
12568
12569           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12570            <!-- end of entry -->
12571         
12572                 
12573           <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
12574             <td class="entry_name
12575              " rowspan="3">
12576               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12577             </td>
12578             <td class="entry_type">
12579                 <span class="entry_type_name entry_type_name_enum">byte</span>
12580
12581               <span class="entry_type_visibility"> [public]</span>
12582
12583
12584               <span class="entry_type_hwlevel">[limited] </span>
12585
12586
12587
12588                 <ul class="entry_type_enum">
12589                   <li>
12590                     <span class="entry_type_enum_name">OFF</span>
12591                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12592                   </li>
12593                   <li>
12594                     <span class="entry_type_enum_name">ON</span>
12595                     <span class="entry_type_enum_optional">[optional]</span>
12596                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12597                   </li>
12598                 </ul>
12599
12600             </td> <!-- entry_type -->
12601
12602             <td class="entry_description">
12603               <p>Sets whether the camera device uses optical image stabilization (OIS)
12604 when capturing images.<wbr/></p>
12605             </td>
12606
12607             <td class="entry_units">
12608             </td>
12609
12610             <td class="entry_range">
12611               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12612             </td>
12613
12614             <td class="entry_tags">
12615               <ul class="entry_tags">
12616                   <li><a href="#tag_V1">V1</a></li>
12617               </ul>
12618             </td>
12619
12620           </tr>
12621           <tr class="entries_header">
12622             <th class="th_details" colspan="5">Details</th>
12623           </tr>
12624           <tr class="entry_cont">
12625             <td class="entry_details" colspan="5">
12626               <p>OIS is used to compensate for motion blur due to small
12627 movements of the camera during capture.<wbr/> Unlike digital image
12628 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12629 makes use of mechanical elements to stabilize the camera
12630 sensor,<wbr/> and thus allows for longer exposure times before
12631 camera shake becomes apparent.<wbr/></p>
12632 <p>Switching between different optical stabilization modes may take several
12633 frames to initialize,<wbr/> the camera device will report the current mode in
12634 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12635 optical stabilization modes in the first several capture results may still
12636 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12637 <p>If a camera device supports both OIS and digital image stabilization
12638 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12639 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12640 <p>Not all devices will support OIS; see
12641 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12642 available controls.<wbr/></p>
12643             </td>
12644           </tr>
12645
12646
12647           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12648            <!-- end of entry -->
12649         
12650                 
12651           <tr class="entry" id="dynamic_android.lens.state">
12652             <td class="entry_name
12653              " rowspan="3">
12654               android.<wbr/>lens.<wbr/>state
12655             </td>
12656             <td class="entry_type">
12657                 <span class="entry_type_name entry_type_name_enum">byte</span>
12658
12659               <span class="entry_type_visibility"> [public]</span>
12660
12661
12662               <span class="entry_type_hwlevel">[limited] </span>
12663
12664
12665
12666                 <ul class="entry_type_enum">
12667                   <li>
12668                     <span class="entry_type_enum_name">STATIONARY</span>
12669                     <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/>
12670 <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>
12671                   </li>
12672                   <li>
12673                     <span class="entry_type_enum_name">MOVING</span>
12674                     <span class="entry_type_enum_notes"><p>One or several of the lens parameters
12675 (<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/>
12676 <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
12677 currently changing.<wbr/></p></span>
12678                   </li>
12679                 </ul>
12680
12681             </td> <!-- entry_type -->
12682
12683             <td class="entry_description">
12684               <p>Current lens status.<wbr/></p>
12685             </td>
12686
12687             <td class="entry_units">
12688             </td>
12689
12690             <td class="entry_range">
12691             </td>
12692
12693             <td class="entry_tags">
12694               <ul class="entry_tags">
12695                   <li><a href="#tag_V1">V1</a></li>
12696               </ul>
12697             </td>
12698
12699           </tr>
12700           <tr class="entries_header">
12701             <th class="th_details" colspan="5">Details</th>
12702           </tr>
12703           <tr class="entry_cont">
12704             <td class="entry_details" colspan="5">
12705               <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/>
12706 <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/>
12707 they may take several frames to reach the requested values.<wbr/> This state indicates
12708 the current status of the lens parameters.<wbr/></p>
12709 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
12710 either because the parameters are all fixed,<wbr/> or because the lens has had enough
12711 time to reach the most recently-requested values.<wbr/>
12712 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
12713 <ul>
12714 <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
12715 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
12716 <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/>
12717 which means the optical zoom is not supported.<wbr/></li>
12718 <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>
12719 <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>
12720 </ul>
12721 <p>Then this state will always be STATIONARY.<wbr/></p>
12722 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
12723 is changing.<wbr/></p>
12724             </td>
12725           </tr>
12726
12727
12728           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12729            <!-- end of entry -->
12730         
12731                 
12732           <tr class="entry" id="dynamic_android.lens.poseRotation">
12733             <td class="entry_name
12734              " rowspan="3">
12735               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
12736             </td>
12737             <td class="entry_type">
12738                 <span class="entry_type_name">float</span>
12739                 <span class="entry_type_container">x</span>
12740
12741                 <span class="entry_type_array">
12742                   4
12743                 </span>
12744               <span class="entry_type_visibility"> [public]</span>
12745
12746
12747
12748
12749
12750
12751             </td> <!-- entry_type -->
12752
12753             <td class="entry_description">
12754               <p>The orientation of the camera relative to the sensor
12755 coordinate system.<wbr/></p>
12756             </td>
12757
12758             <td class="entry_units">
12759               
12760             Quarternion coefficients
12761           
12762             </td>
12763
12764             <td class="entry_range">
12765             </td>
12766
12767             <td class="entry_tags">
12768               <ul class="entry_tags">
12769                   <li><a href="#tag_DEPTH">DEPTH</a></li>
12770               </ul>
12771             </td>
12772
12773           </tr>
12774           <tr class="entries_header">
12775             <th class="th_details" colspan="5">Details</th>
12776           </tr>
12777           <tr class="entry_cont">
12778             <td class="entry_details" colspan="5">
12779               <p>The four coefficients that describe the quarternion
12780 rotation from the Android sensor coordinate system to a
12781 camera-aligned coordinate system where the X-axis is
12782 aligned with the long side of the image sensor,<wbr/> the Y-axis
12783 is aligned with the short side of the image sensor,<wbr/> and
12784 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
12785 <p>To convert from the quarternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
12786 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
12787 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
12788 <pre><code> theta = 2 * acos(w)
12789 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
12790 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
12791 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
12792 </code></pre>
12793 <p>To create a 3x3 rotation matrix that applies the rotation
12794 defined by this quarternion,<wbr/> the following matrix can be
12795 used:</p>
12796 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
12797            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
12798            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
12799 </code></pre>
12800 <p>This matrix can then be used to apply the rotation to a
12801  column vector point with</p>
12802 <p><code>p' = Rp</code></p>
12803 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
12804  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
12805             </td>
12806           </tr>
12807
12808
12809           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12810            <!-- end of entry -->
12811         
12812                 
12813           <tr class="entry" id="dynamic_android.lens.poseTranslation">
12814             <td class="entry_name
12815              " rowspan="3">
12816               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
12817             </td>
12818             <td class="entry_type">
12819                 <span class="entry_type_name">float</span>
12820                 <span class="entry_type_container">x</span>
12821
12822                 <span class="entry_type_array">
12823                   3
12824                 </span>
12825               <span class="entry_type_visibility"> [public]</span>
12826
12827
12828
12829
12830
12831
12832             </td> <!-- entry_type -->
12833
12834             <td class="entry_description">
12835               <p>Position of the camera optical center.<wbr/></p>
12836             </td>
12837
12838             <td class="entry_units">
12839               Meters
12840             </td>
12841
12842             <td class="entry_range">
12843             </td>
12844
12845             <td class="entry_tags">
12846               <ul class="entry_tags">
12847                   <li><a href="#tag_DEPTH">DEPTH</a></li>
12848               </ul>
12849             </td>
12850
12851           </tr>
12852           <tr class="entries_header">
12853             <th class="th_details" colspan="5">Details</th>
12854           </tr>
12855           <tr class="entry_cont">
12856             <td class="entry_details" colspan="5">
12857               <p>As measured in the device sensor coordinate system,<wbr/> the
12858 position of the camera device's optical center,<wbr/> as a
12859 three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
12860 <p>To transform a world position to a camera-device centered
12861 coordinate system,<wbr/> the position must be translated by this
12862 vector and then rotated by <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a>.<wbr/></p>
12863             </td>
12864           </tr>
12865
12866
12867           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12868            <!-- end of entry -->
12869         
12870                 
12871           <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
12872             <td class="entry_name
12873              " rowspan="3">
12874               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
12875             </td>
12876             <td class="entry_type">
12877                 <span class="entry_type_name">float</span>
12878                 <span class="entry_type_container">x</span>
12879
12880                 <span class="entry_type_array">
12881                   5
12882                 </span>
12883               <span class="entry_type_visibility"> [public]</span>
12884
12885
12886
12887
12888
12889
12890             </td> <!-- entry_type -->
12891
12892             <td class="entry_description">
12893               <p>The parameters for this camera device's intrinsic
12894 calibration.<wbr/></p>
12895             </td>
12896
12897             <td class="entry_units">
12898               
12899             Pixels in the android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size coordinate
12900             system.<wbr/>
12901           
12902             </td>
12903
12904             <td class="entry_range">
12905             </td>
12906
12907             <td class="entry_tags">
12908               <ul class="entry_tags">
12909                   <li><a href="#tag_DEPTH">DEPTH</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>The five calibration parameters that describe the
12920 transform from camera-centric 3D coordinates to sensor
12921 pixel coordinates:</p>
12922 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
12923 </code></pre>
12924 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
12925 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
12926 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
12927 being aligned with the lens plane.<wbr/></p>
12928 <p>These are typically used within a transformation matrix K:</p>
12929 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
12930        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
12931        0    0,<wbr/>   1 ]
12932 </code></pre>
12933 <p>which can then be combined with the camera pose rotation
12934 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
12935 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
12936 complete transform from world coordinates to pixel
12937 coordinates:</p>
12938 <pre><code>P = [ K 0   * [ R t
12939      0 1 ]     0 1 ]
12940 </code></pre>
12941 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
12942 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
12943 coordinate system,<wbr/> and with the mapping including the
12944 homogeneous division by z:</p>
12945 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
12946 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
12947 </code></pre>
12948 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
12949 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
12950 (depth) in pixel coordinates.<wbr/></p>
12951             </td>
12952           </tr>
12953
12954
12955           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
12956            <!-- end of entry -->
12957         
12958                 
12959           <tr class="entry" id="dynamic_android.lens.radialDistortion">
12960             <td class="entry_name
12961              " rowspan="3">
12962               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
12963             </td>
12964             <td class="entry_type">
12965                 <span class="entry_type_name">float</span>
12966                 <span class="entry_type_container">x</span>
12967
12968                 <span class="entry_type_array">
12969                   3
12970                 </span>
12971               <span class="entry_type_visibility"> [public]</span>
12972
12973
12974
12975
12976
12977
12978             </td> <!-- entry_type -->
12979
12980             <td class="entry_description">
12981               <p>The correction coefficients to correct for this camera device's
12982 radial lens distortion.<wbr/></p>
12983             </td>
12984
12985             <td class="entry_units">
12986               
12987             Coefficients for a 6th-degree even radial polynomial.<wbr/>
12988           
12989             </td>
12990
12991             <td class="entry_range">
12992             </td>
12993
12994             <td class="entry_tags">
12995               <ul class="entry_tags">
12996                   <li><a href="#tag_DEPTH">DEPTH</a></li>
12997               </ul>
12998             </td>
12999
13000           </tr>
13001           <tr class="entries_header">
13002             <th class="th_details" colspan="5">Details</th>
13003           </tr>
13004           <tr class="entry_cont">
13005             <td class="entry_details" colspan="5">
13006               <p>Three cofficients <code>[kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/> kappa_<wbr/>3]</code> that
13007 can be used to correct the lens's radial geometric
13008 distortion with the mapping equations:</p>
13009 <pre><code> x_<wbr/>c = x_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 )
13010 y_<wbr/>c = y_<wbr/>i * ( 1 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 )
13011 </code></pre>
13012 <p>where <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> are normalized coordinates with <code>(0,<wbr/>0)</code>
13013 at the lens optical center,<wbr/> and <code>[-1,<wbr/> 1]</code> are the edges of
13014 the active pixel array; and where <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the
13015 corrected normalized coordinates with radial distortion
13016 removed; and <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>.<wbr/></p>
13017             </td>
13018           </tr>
13019
13020
13021           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13022            <!-- end of entry -->
13023         
13024         
13025
13026       <!-- end of kind -->
13027       </tbody>
13028
13029   <!-- end of section -->
13030   <tr><td colspan="6" id="section_noiseReduction" class="section">noiseReduction</td></tr>
13031
13032
13033       <tr><td colspan="6" class="kind">controls</td></tr>
13034
13035       <thead class="entries_header">
13036         <tr>
13037           <th class="th_name">Property Name</th>
13038           <th class="th_type">Type</th>
13039           <th class="th_description">Description</th>
13040           <th class="th_units">Units</th>
13041           <th class="th_range">Range</th>
13042           <th class="th_tags">Tags</th>
13043         </tr>
13044       </thead>
13045
13046       <tbody>
13047
13048         
13049
13050         
13051
13052         
13053
13054         
13055
13056                 
13057           <tr class="entry" id="controls_android.noiseReduction.mode">
13058             <td class="entry_name
13059              " rowspan="5">
13060               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
13061             </td>
13062             <td class="entry_type">
13063                 <span class="entry_type_name entry_type_name_enum">byte</span>
13064
13065               <span class="entry_type_visibility"> [public]</span>
13066
13067
13068               <span class="entry_type_hwlevel">[full] </span>
13069
13070
13071
13072                 <ul class="entry_type_enum">
13073                   <li>
13074                     <span class="entry_type_enum_name">OFF</span>
13075                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
13076                   </li>
13077                   <li>
13078                     <span class="entry_type_enum_name">FAST</span>
13079                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
13080 output.<wbr/></p></span>
13081                   </li>
13082                   <li>
13083                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
13084                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
13085 rate relative to sensor output.<wbr/></p></span>
13086                   </li>
13087                   <li>
13088                     <span class="entry_type_enum_name">MINIMAL</span>
13089                     <span class="entry_type_enum_optional">[optional]</span>
13090                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
13091 sensor output.<wbr/> </p></span>
13092                   </li>
13093                 </ul>
13094
13095             </td> <!-- entry_type -->
13096
13097             <td class="entry_description">
13098               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
13099             </td>
13100
13101             <td class="entry_units">
13102             </td>
13103
13104             <td class="entry_range">
13105               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
13106             </td>
13107
13108             <td class="entry_tags">
13109               <ul class="entry_tags">
13110                   <li><a href="#tag_V1">V1</a></li>
13111                   <li><a href="#tag_REPROC">REPROC</a></li>
13112               </ul>
13113             </td>
13114
13115           </tr>
13116           <tr class="entries_header">
13117             <th class="th_details" colspan="5">Details</th>
13118           </tr>
13119           <tr class="entry_cont">
13120             <td class="entry_details" colspan="5">
13121               <p>The noise reduction algorithm attempts to improve image quality by removing
13122 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
13123 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
13124 YUV domain.<wbr/></p>
13125 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
13126 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
13127 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
13128 <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>
13129 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
13130 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
13131 will use the highest-quality noise filtering algorithms,<wbr/>
13132 even if it slows down capture rate.<wbr/> FAST means the camera device will not
13133 slow down capture rate when applying noise filtering.<wbr/></p>
13134 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
13135 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
13136 may adjust the noise reduction parameters for best image quality based on the
13137 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
13138             </td>
13139           </tr>
13140
13141           <tr class="entries_header">
13142             <th class="th_details" colspan="5">HAL Implementation Details</th>
13143           </tr>
13144           <tr class="entry_cont">
13145             <td class="entry_details" colspan="5">
13146               <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
13147 adjust the internal noise reduction parameters appropriately to get the best quality
13148 images.<wbr/></p>
13149             </td>
13150           </tr>
13151
13152           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13153            <!-- end of entry -->
13154         
13155                 
13156           <tr class="entry" id="controls_android.noiseReduction.strength">
13157             <td class="entry_name
13158              " rowspan="1">
13159               android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
13160             </td>
13161             <td class="entry_type">
13162                 <span class="entry_type_name">byte</span>
13163
13164               <span class="entry_type_visibility"> [system]</span>
13165
13166
13167
13168
13169
13170
13171             </td> <!-- entry_type -->
13172
13173             <td class="entry_description">
13174               <p>Control the amount of noise reduction
13175 applied to the images</p>
13176             </td>
13177
13178             <td class="entry_units">
13179               1-10; 10 is max noise reduction
13180             </td>
13181
13182             <td class="entry_range">
13183               <p>1 - 10</p>
13184             </td>
13185
13186             <td class="entry_tags">
13187               <ul class="entry_tags">
13188                   <li><a href="#tag_FUTURE">FUTURE</a></li>
13189               </ul>
13190             </td>
13191
13192           </tr>
13193
13194
13195           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13196            <!-- end of entry -->
13197         
13198         
13199
13200       <!-- end of kind -->
13201       </tbody>
13202       <tr><td colspan="6" class="kind">static</td></tr>
13203
13204       <thead class="entries_header">
13205         <tr>
13206           <th class="th_name">Property Name</th>
13207           <th class="th_type">Type</th>
13208           <th class="th_description">Description</th>
13209           <th class="th_units">Units</th>
13210           <th class="th_range">Range</th>
13211           <th class="th_tags">Tags</th>
13212         </tr>
13213       </thead>
13214
13215       <tbody>
13216
13217         
13218
13219         
13220
13221         
13222
13223         
13224
13225                 
13226           <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
13227             <td class="entry_name
13228              " rowspan="5">
13229               android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
13230             </td>
13231             <td class="entry_type">
13232                 <span class="entry_type_name">byte</span>
13233                 <span class="entry_type_container">x</span>
13234
13235                 <span class="entry_type_array">
13236                   n
13237                 </span>
13238               <span class="entry_type_visibility"> [public as enumList]</span>
13239
13240
13241               <span class="entry_type_hwlevel">[limited] </span>
13242
13243
13244                 <div class="entry_type_notes">list of enums</div>
13245
13246
13247             </td> <!-- entry_type -->
13248
13249             <td class="entry_description">
13250               <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
13251 by this camera device.<wbr/></p>
13252             </td>
13253
13254             <td class="entry_units">
13255             </td>
13256
13257             <td class="entry_range">
13258               <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
13259             </td>
13260
13261             <td class="entry_tags">
13262               <ul class="entry_tags">
13263                   <li><a href="#tag_V1">V1</a></li>
13264                   <li><a href="#tag_REPROC">REPROC</a></li>
13265               </ul>
13266             </td>
13267
13268           </tr>
13269           <tr class="entries_header">
13270             <th class="th_details" colspan="5">Details</th>
13271           </tr>
13272           <tr class="entry_cont">
13273             <td class="entry_details" colspan="5">
13274               <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
13275 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
13276             </td>
13277           </tr>
13278
13279           <tr class="entries_header">
13280             <th class="th_details" colspan="5">HAL Implementation Details</th>
13281           </tr>
13282           <tr class="entry_cont">
13283             <td class="entry_details" colspan="5">
13284               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
13285 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
13286 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
13287 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
13288             </td>
13289           </tr>
13290
13291           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13292            <!-- end of entry -->
13293         
13294         
13295
13296       <!-- end of kind -->
13297       </tbody>
13298       <tr><td colspan="6" class="kind">dynamic</td></tr>
13299
13300       <thead class="entries_header">
13301         <tr>
13302           <th class="th_name">Property Name</th>
13303           <th class="th_type">Type</th>
13304           <th class="th_description">Description</th>
13305           <th class="th_units">Units</th>
13306           <th class="th_range">Range</th>
13307           <th class="th_tags">Tags</th>
13308         </tr>
13309       </thead>
13310
13311       <tbody>
13312
13313         
13314
13315         
13316
13317         
13318
13319         
13320
13321                 
13322           <tr class="entry" id="dynamic_android.noiseReduction.mode">
13323             <td class="entry_name
13324              " rowspan="5">
13325               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
13326             </td>
13327             <td class="entry_type">
13328                 <span class="entry_type_name entry_type_name_enum">byte</span>
13329
13330               <span class="entry_type_visibility"> [public]</span>
13331
13332
13333               <span class="entry_type_hwlevel">[full] </span>
13334
13335
13336
13337                 <ul class="entry_type_enum">
13338                   <li>
13339                     <span class="entry_type_enum_name">OFF</span>
13340                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
13341                   </li>
13342                   <li>
13343                     <span class="entry_type_enum_name">FAST</span>
13344                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
13345 output.<wbr/></p></span>
13346                   </li>
13347                   <li>
13348                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
13349                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
13350 rate relative to sensor output.<wbr/></p></span>
13351                   </li>
13352                   <li>
13353                     <span class="entry_type_enum_name">MINIMAL</span>
13354                     <span class="entry_type_enum_optional">[optional]</span>
13355                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
13356 sensor output.<wbr/> </p></span>
13357                   </li>
13358                 </ul>
13359
13360             </td> <!-- entry_type -->
13361
13362             <td class="entry_description">
13363               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
13364             </td>
13365
13366             <td class="entry_units">
13367             </td>
13368
13369             <td class="entry_range">
13370               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
13371             </td>
13372
13373             <td class="entry_tags">
13374               <ul class="entry_tags">
13375                   <li><a href="#tag_V1">V1</a></li>
13376                   <li><a href="#tag_REPROC">REPROC</a></li>
13377               </ul>
13378             </td>
13379
13380           </tr>
13381           <tr class="entries_header">
13382             <th class="th_details" colspan="5">Details</th>
13383           </tr>
13384           <tr class="entry_cont">
13385             <td class="entry_details" colspan="5">
13386               <p>The noise reduction algorithm attempts to improve image quality by removing
13387 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
13388 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
13389 YUV domain.<wbr/></p>
13390 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
13391 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
13392 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
13393 <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>
13394 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
13395 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
13396 will use the highest-quality noise filtering algorithms,<wbr/>
13397 even if it slows down capture rate.<wbr/> FAST means the camera device will not
13398 slow down capture rate when applying noise filtering.<wbr/></p>
13399 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
13400 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
13401 may adjust the noise reduction parameters for best image quality based on the
13402 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
13403             </td>
13404           </tr>
13405
13406           <tr class="entries_header">
13407             <th class="th_details" colspan="5">HAL Implementation Details</th>
13408           </tr>
13409           <tr class="entry_cont">
13410             <td class="entry_details" colspan="5">
13411               <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
13412 adjust the internal noise reduction parameters appropriately to get the best quality
13413 images.<wbr/></p>
13414             </td>
13415           </tr>
13416
13417           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13418            <!-- end of entry -->
13419         
13420         
13421
13422       <!-- end of kind -->
13423       </tbody>
13424
13425   <!-- end of section -->
13426   <tr><td colspan="6" id="section_quirks" class="section">quirks</td></tr>
13427
13428
13429       <tr><td colspan="6" class="kind">static</td></tr>
13430
13431       <thead class="entries_header">
13432         <tr>
13433           <th class="th_name">Property Name</th>
13434           <th class="th_type">Type</th>
13435           <th class="th_description">Description</th>
13436           <th class="th_units">Units</th>
13437           <th class="th_range">Range</th>
13438           <th class="th_tags">Tags</th>
13439         </tr>
13440       </thead>
13441
13442       <tbody>
13443
13444         
13445
13446         
13447
13448         
13449
13450         
13451
13452                 
13453           <tr class="entry" id="static_android.quirks.meteringCropRegion">
13454             <td class="entry_name
13455                 entry_name_deprecated
13456              " rowspan="3">
13457               android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
13458             </td>
13459             <td class="entry_type">
13460                 <span class="entry_type_name">byte</span>
13461
13462               <span class="entry_type_visibility"> [system]</span>
13463
13464
13465
13466               <span class="entry_type_deprecated">[deprecated] </span>
13467
13468
13469
13470             </td> <!-- entry_type -->
13471
13472             <td class="entry_description">
13473               <p>If set to 1,<wbr/> the camera service does not
13474 scale 'normalized' coordinates with respect to the crop
13475 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
13476 and output (face rectangles).<wbr/></p>
13477             </td>
13478
13479             <td class="entry_units">
13480             </td>
13481
13482             <td class="entry_range">
13483               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13484             </td>
13485
13486             <td class="entry_tags">
13487             </td>
13488
13489           </tr>
13490           <tr class="entries_header">
13491             <th class="th_details" colspan="5">Details</th>
13492           </tr>
13493           <tr class="entry_cont">
13494             <td class="entry_details" colspan="5">
13495               <p>Normalized coordinates refer to those in the
13496 (-1000,<wbr/>1000) range mentioned in the
13497 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
13498 <p>HAL implementations should instead always use and emit
13499 sensor array-relative coordinates for all region data.<wbr/> Does
13500 not need to be listed in static metadata.<wbr/> Support will be
13501 removed in future versions of camera service.<wbr/></p>
13502             </td>
13503           </tr>
13504
13505
13506           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13507            <!-- end of entry -->
13508         
13509                 
13510           <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
13511             <td class="entry_name
13512                 entry_name_deprecated
13513              " rowspan="3">
13514               android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
13515             </td>
13516             <td class="entry_type">
13517                 <span class="entry_type_name">byte</span>
13518
13519               <span class="entry_type_visibility"> [system]</span>
13520
13521
13522
13523               <span class="entry_type_deprecated">[deprecated] </span>
13524
13525
13526
13527             </td> <!-- entry_type -->
13528
13529             <td class="entry_description">
13530               <p>If set to 1,<wbr/> then the camera service always
13531 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
13532 trigger.<wbr/></p>
13533             </td>
13534
13535             <td class="entry_units">
13536             </td>
13537
13538             <td class="entry_range">
13539               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13540             </td>
13541
13542             <td class="entry_tags">
13543             </td>
13544
13545           </tr>
13546           <tr class="entries_header">
13547             <th class="th_details" colspan="5">Details</th>
13548           </tr>
13549           <tr class="entry_cont">
13550             <td class="entry_details" colspan="5">
13551               <p>HAL implementations should implement AF trigger
13552 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
13553 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
13554 not need to be listed in static metadata.<wbr/> Support will be
13555 removed in future versions of camera service</p>
13556             </td>
13557           </tr>
13558
13559
13560           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13561            <!-- end of entry -->
13562         
13563                 
13564           <tr class="entry" id="static_android.quirks.useZslFormat">
13565             <td class="entry_name
13566                 entry_name_deprecated
13567              " rowspan="3">
13568               android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
13569             </td>
13570             <td class="entry_type">
13571                 <span class="entry_type_name">byte</span>
13572
13573               <span class="entry_type_visibility"> [system]</span>
13574
13575
13576
13577               <span class="entry_type_deprecated">[deprecated] </span>
13578
13579
13580
13581             </td> <!-- entry_type -->
13582
13583             <td class="entry_description">
13584               <p>If set to 1,<wbr/> the camera service uses
13585 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
13586 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
13587 shutter lag stream</p>
13588             </td>
13589
13590             <td class="entry_units">
13591             </td>
13592
13593             <td class="entry_range">
13594               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13595             </td>
13596
13597             <td class="entry_tags">
13598             </td>
13599
13600           </tr>
13601           <tr class="entries_header">
13602             <th class="th_details" colspan="5">Details</th>
13603           </tr>
13604           <tr class="entry_cont">
13605             <td class="entry_details" colspan="5">
13606               <p>HAL implementations should use gralloc usage flags
13607 to determine that a stream will be used for
13608 zero-shutter-lag,<wbr/> instead of relying on an explicit
13609 format setting.<wbr/> Does not need to be listed in static
13610 metadata.<wbr/> Support will be removed in future versions of
13611 camera service.<wbr/></p>
13612             </td>
13613           </tr>
13614
13615
13616           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13617            <!-- end of entry -->
13618         
13619                 
13620           <tr class="entry" id="static_android.quirks.usePartialResult">
13621             <td class="entry_name
13622                 entry_name_deprecated
13623              " rowspan="5">
13624               android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
13625             </td>
13626             <td class="entry_type">
13627                 <span class="entry_type_name">byte</span>
13628
13629               <span class="entry_type_visibility"> [hidden]</span>
13630
13631
13632
13633               <span class="entry_type_deprecated">[deprecated] </span>
13634
13635
13636
13637             </td> <!-- entry_type -->
13638
13639             <td class="entry_description">
13640               <p>If set to 1,<wbr/> the HAL will always split result
13641 metadata for a single capture into multiple buffers,<wbr/>
13642 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
13643             </td>
13644
13645             <td class="entry_units">
13646             </td>
13647
13648             <td class="entry_range">
13649               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13650             </td>
13651
13652             <td class="entry_tags">
13653             </td>
13654
13655           </tr>
13656           <tr class="entries_header">
13657             <th class="th_details" colspan="5">Details</th>
13658           </tr>
13659           <tr class="entry_cont">
13660             <td class="entry_details" colspan="5">
13661               <p>Does not need to be listed in static
13662 metadata.<wbr/> Support for partial results will be reworked in
13663 future versions of camera service.<wbr/> This quirk will stop
13664 working at that point; DO NOT USE without careful
13665 consideration of future support.<wbr/></p>
13666             </td>
13667           </tr>
13668
13669           <tr class="entries_header">
13670             <th class="th_details" colspan="5">HAL Implementation Details</th>
13671           </tr>
13672           <tr class="entry_cont">
13673             <td class="entry_details" colspan="5">
13674               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
13675 for information on how to implement partial results.<wbr/></p>
13676             </td>
13677           </tr>
13678
13679           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13680            <!-- end of entry -->
13681         
13682         
13683
13684       <!-- end of kind -->
13685       </tbody>
13686       <tr><td colspan="6" class="kind">dynamic</td></tr>
13687
13688       <thead class="entries_header">
13689         <tr>
13690           <th class="th_name">Property Name</th>
13691           <th class="th_type">Type</th>
13692           <th class="th_description">Description</th>
13693           <th class="th_units">Units</th>
13694           <th class="th_range">Range</th>
13695           <th class="th_tags">Tags</th>
13696         </tr>
13697       </thead>
13698
13699       <tbody>
13700
13701         
13702
13703         
13704
13705         
13706
13707         
13708
13709                 
13710           <tr class="entry" id="dynamic_android.quirks.partialResult">
13711             <td class="entry_name
13712                 entry_name_deprecated
13713              " rowspan="5">
13714               android.<wbr/>quirks.<wbr/>partial<wbr/>Result
13715             </td>
13716             <td class="entry_type">
13717                 <span class="entry_type_name entry_type_name_enum">byte</span>
13718
13719               <span class="entry_type_visibility"> [hidden as boolean]</span>
13720
13721
13722
13723               <span class="entry_type_deprecated">[deprecated] </span>
13724
13725
13726                 <ul class="entry_type_enum">
13727                   <li>
13728                     <span class="entry_type_enum_name">FINAL</span>
13729                     <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
13730 for this capture.<wbr/></p></span>
13731                   </li>
13732                   <li>
13733                     <span class="entry_type_enum_name">PARTIAL</span>
13734                     <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
13735 capture.<wbr/> More result buffers for this capture will be sent
13736 by the camera device,<wbr/> the last of which will be marked
13737 FINAL.<wbr/></p></span>
13738                   </li>
13739                 </ul>
13740
13741             </td> <!-- entry_type -->
13742
13743             <td class="entry_description">
13744               <p>Whether a result given to the framework is the
13745 final one for the capture,<wbr/> or only a partial that contains a
13746 subset of the full set of dynamic metadata
13747 values.<wbr/></p>
13748             </td>
13749
13750             <td class="entry_units">
13751             </td>
13752
13753             <td class="entry_range">
13754               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13755               <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
13756             </td>
13757
13758             <td class="entry_tags">
13759             </td>
13760
13761           </tr>
13762           <tr class="entries_header">
13763             <th class="th_details" colspan="5">Details</th>
13764           </tr>
13765           <tr class="entry_cont">
13766             <td class="entry_details" colspan="5">
13767               <p>The entries in the result metadata buffers for a
13768 single capture may not overlap,<wbr/> except for this entry.<wbr/> The
13769 FINAL buffers must retain FIFO ordering relative to the
13770 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
13771 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
13772 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
13773 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
13774 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
13775 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
13776             </td>
13777           </tr>
13778
13779           <tr class="entries_header">
13780             <th class="th_details" colspan="5">HAL Implementation Details</th>
13781           </tr>
13782           <tr class="entry_cont">
13783             <td class="entry_details" colspan="5">
13784               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
13785 for information on how to implement partial results.<wbr/></p>
13786             </td>
13787           </tr>
13788
13789           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13790            <!-- end of entry -->
13791         
13792         
13793
13794       <!-- end of kind -->
13795       </tbody>
13796
13797   <!-- end of section -->
13798   <tr><td colspan="6" id="section_request" class="section">request</td></tr>
13799
13800
13801       <tr><td colspan="6" class="kind">controls</td></tr>
13802
13803       <thead class="entries_header">
13804         <tr>
13805           <th class="th_name">Property Name</th>
13806           <th class="th_type">Type</th>
13807           <th class="th_description">Description</th>
13808           <th class="th_units">Units</th>
13809           <th class="th_range">Range</th>
13810           <th class="th_tags">Tags</th>
13811         </tr>
13812       </thead>
13813
13814       <tbody>
13815
13816         
13817
13818         
13819
13820         
13821
13822         
13823
13824                 
13825           <tr class="entry" id="controls_android.request.frameCount">
13826             <td class="entry_name
13827                 entry_name_deprecated
13828              " rowspan="1">
13829               android.<wbr/>request.<wbr/>frame<wbr/>Count
13830             </td>
13831             <td class="entry_type">
13832                 <span class="entry_type_name">int32</span>
13833
13834               <span class="entry_type_visibility"> [system]</span>
13835
13836
13837
13838               <span class="entry_type_deprecated">[deprecated] </span>
13839
13840
13841
13842             </td> <!-- entry_type -->
13843
13844             <td class="entry_description">
13845               <p>A frame counter set by the framework.<wbr/> Must
13846 be maintained unchanged in output frame.<wbr/> This value monotonically
13847 increases with every new result (that is,<wbr/> each new result has a unique
13848 frameCount value).<wbr/></p>
13849             </td>
13850
13851             <td class="entry_units">
13852               incrementing integer
13853             </td>
13854
13855             <td class="entry_range">
13856               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13857               <p>Any int.<wbr/></p>
13858             </td>
13859
13860             <td class="entry_tags">
13861             </td>
13862
13863           </tr>
13864
13865
13866           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13867            <!-- end of entry -->
13868         
13869                 
13870           <tr class="entry" id="controls_android.request.id">
13871             <td class="entry_name
13872              " rowspan="1">
13873               android.<wbr/>request.<wbr/>id
13874             </td>
13875             <td class="entry_type">
13876                 <span class="entry_type_name">int32</span>
13877
13878               <span class="entry_type_visibility"> [hidden]</span>
13879
13880
13881
13882
13883
13884
13885             </td> <!-- entry_type -->
13886
13887             <td class="entry_description">
13888               <p>An application-specified ID for the current
13889 request.<wbr/> Must be maintained unchanged in output
13890 frame</p>
13891             </td>
13892
13893             <td class="entry_units">
13894               arbitrary integer assigned by application
13895             </td>
13896
13897             <td class="entry_range">
13898               <p>Any int</p>
13899             </td>
13900
13901             <td class="entry_tags">
13902               <ul class="entry_tags">
13903                   <li><a href="#tag_V1">V1</a></li>
13904               </ul>
13905             </td>
13906
13907           </tr>
13908
13909
13910           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13911            <!-- end of entry -->
13912         
13913                 
13914           <tr class="entry" id="controls_android.request.inputStreams">
13915             <td class="entry_name
13916                 entry_name_deprecated
13917              " rowspan="3">
13918               android.<wbr/>request.<wbr/>input<wbr/>Streams
13919             </td>
13920             <td class="entry_type">
13921                 <span class="entry_type_name">int32</span>
13922                 <span class="entry_type_container">x</span>
13923
13924                 <span class="entry_type_array">
13925                   n
13926                 </span>
13927               <span class="entry_type_visibility"> [system]</span>
13928
13929
13930
13931               <span class="entry_type_deprecated">[deprecated] </span>
13932
13933
13934
13935             </td> <!-- entry_type -->
13936
13937             <td class="entry_description">
13938               <p>List which camera reprocess stream is used
13939 for the source of reprocessing data.<wbr/></p>
13940             </td>
13941
13942             <td class="entry_units">
13943               List of camera reprocess stream IDs
13944             </td>
13945
13946             <td class="entry_range">
13947               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
13948               <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
13949             </td>
13950
13951             <td class="entry_tags">
13952               <ul class="entry_tags">
13953                   <li><a href="#tag_HAL2">HAL2</a></li>
13954               </ul>
13955             </td>
13956
13957           </tr>
13958           <tr class="entries_header">
13959             <th class="th_details" colspan="5">Details</th>
13960           </tr>
13961           <tr class="entry_cont">
13962             <td class="entry_details" colspan="5">
13963               <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
13964 REPROCESS.<wbr/> Ignored otherwise</p>
13965             </td>
13966           </tr>
13967
13968
13969           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
13970            <!-- end of entry -->
13971         
13972                 
13973           <tr class="entry" id="controls_android.request.metadataMode">
13974             <td class="entry_name
13975              " rowspan="1">
13976               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
13977             </td>
13978             <td class="entry_type">
13979                 <span class="entry_type_name entry_type_name_enum">byte</span>
13980
13981               <span class="entry_type_visibility"> [system]</span>
13982
13983
13984
13985
13986
13987                 <ul class="entry_type_enum">
13988                   <li>
13989                     <span class="entry_type_enum_name">NONE</span>
13990                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
13991 for application-bound buffer data.<wbr/> If no
13992 application-bound streams exist,<wbr/> no frame should be
13993 placed in the output frame queue.<wbr/> If such streams
13994 exist,<wbr/> a frame should be placed on the output queue
13995 with null metadata but with the necessary output buffer
13996 information.<wbr/> Timestamp information should still be
13997 included with any output stream buffers</p></span>
13998                   </li>
13999                   <li>
14000                     <span class="entry_type_enum_name">FULL</span>
14001                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
14002 only be produced if they are separately
14003 enabled</p></span>
14004                   </li>
14005                 </ul>
14006
14007             </td> <!-- entry_type -->
14008
14009             <td class="entry_description">
14010               <p>How much metadata to produce on
14011 output</p>
14012             </td>
14013
14014             <td class="entry_units">
14015             </td>
14016
14017             <td class="entry_range">
14018             </td>
14019
14020             <td class="entry_tags">
14021               <ul class="entry_tags">
14022                   <li><a href="#tag_FUTURE">FUTURE</a></li>
14023               </ul>
14024             </td>
14025
14026           </tr>
14027
14028
14029           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14030            <!-- end of entry -->
14031         
14032                 
14033           <tr class="entry" id="controls_android.request.outputStreams">
14034             <td class="entry_name
14035                 entry_name_deprecated
14036              " rowspan="3">
14037               android.<wbr/>request.<wbr/>output<wbr/>Streams
14038             </td>
14039             <td class="entry_type">
14040                 <span class="entry_type_name">int32</span>
14041                 <span class="entry_type_container">x</span>
14042
14043                 <span class="entry_type_array">
14044                   n
14045                 </span>
14046               <span class="entry_type_visibility"> [system]</span>
14047
14048
14049
14050               <span class="entry_type_deprecated">[deprecated] </span>
14051
14052
14053
14054             </td> <!-- entry_type -->
14055
14056             <td class="entry_description">
14057               <p>Lists which camera output streams image data
14058 from this capture must be sent to</p>
14059             </td>
14060
14061             <td class="entry_units">
14062               List of camera stream IDs
14063             </td>
14064
14065             <td class="entry_range">
14066               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14067               <p>List must only include streams that have been
14068 created</p>
14069             </td>
14070
14071             <td class="entry_tags">
14072               <ul class="entry_tags">
14073                   <li><a href="#tag_HAL2">HAL2</a></li>
14074               </ul>
14075             </td>
14076
14077           </tr>
14078           <tr class="entries_header">
14079             <th class="th_details" colspan="5">Details</th>
14080           </tr>
14081           <tr class="entry_cont">
14082             <td class="entry_details" colspan="5">
14083               <p>If no output streams are listed,<wbr/> then the image
14084 data should simply be discarded.<wbr/> The image data must
14085 still be captured for metadata and statistics production,<wbr/>
14086 and the lens and flash must operate as requested.<wbr/></p>
14087             </td>
14088           </tr>
14089
14090
14091           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14092            <!-- end of entry -->
14093         
14094                 
14095           <tr class="entry" id="controls_android.request.type">
14096             <td class="entry_name
14097                 entry_name_deprecated
14098              " rowspan="1">
14099               android.<wbr/>request.<wbr/>type
14100             </td>
14101             <td class="entry_type">
14102                 <span class="entry_type_name entry_type_name_enum">byte</span>
14103
14104               <span class="entry_type_visibility"> [system]</span>
14105
14106
14107
14108               <span class="entry_type_deprecated">[deprecated] </span>
14109
14110
14111                 <ul class="entry_type_enum">
14112                   <li>
14113                     <span class="entry_type_enum_name">CAPTURE</span>
14114                     <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
14115 and process it according to the
14116 settings</p></span>
14117                   </li>
14118                   <li>
14119                     <span class="entry_type_enum_name">REPROCESS</span>
14120                     <span class="entry_type_enum_notes"><p>Process previously captured data; the
14121 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
14122 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
14123 needed for reprocessing with [RP]</p></span>
14124                   </li>
14125                 </ul>
14126
14127             </td> <!-- entry_type -->
14128
14129             <td class="entry_description">
14130               <p>The type of the request; either CAPTURE or
14131 REPROCESS.<wbr/> For HAL3,<wbr/> this tag is redundant.<wbr/></p>
14132             </td>
14133
14134             <td class="entry_units">
14135             </td>
14136
14137             <td class="entry_range">
14138               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14139             </td>
14140
14141             <td class="entry_tags">
14142               <ul class="entry_tags">
14143                   <li><a href="#tag_HAL2">HAL2</a></li>
14144               </ul>
14145             </td>
14146
14147           </tr>
14148
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">static</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="static_android.request.maxNumOutputStreams">
14182             <td class="entry_name
14183              " rowspan="3">
14184               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
14185             </td>
14186             <td class="entry_type">
14187                 <span class="entry_type_name">int32</span>
14188                 <span class="entry_type_container">x</span>
14189
14190                 <span class="entry_type_array">
14191                   3
14192                 </span>
14193               <span class="entry_type_visibility"> [hidden]</span>
14194
14195
14196               <span class="entry_type_hwlevel">[legacy] </span>
14197
14198
14199
14200
14201             </td> <!-- entry_type -->
14202
14203             <td class="entry_description">
14204               <p>The maximum numbers of different types of output streams
14205 that can be configured and used simultaneously by a camera device.<wbr/></p>
14206             </td>
14207
14208             <td class="entry_units">
14209             </td>
14210
14211             <td class="entry_range">
14212               <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
14213 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
14214 <p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
14215 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
14216 &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>
14217             </td>
14218
14219             <td class="entry_tags">
14220               <ul class="entry_tags">
14221                   <li><a href="#tag_BC">BC</a></li>
14222               </ul>
14223             </td>
14224
14225           </tr>
14226           <tr class="entries_header">
14227             <th class="th_details" colspan="5">Details</th>
14228           </tr>
14229           <tr class="entry_cont">
14230             <td class="entry_details" colspan="5">
14231               <p>This is a 3 element tuple that contains the max number of output simultaneous
14232 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
14233 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
14234 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
14235 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>
14236 <p>This lists the upper bound of the number of output streams supported by
14237 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14238 CPU resources that will consume more power.<wbr/> The image format for an output stream can
14239 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
14240 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
14241 into the 3 stream types as below:</p>
14242 <ul>
14243 <li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
14244   Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
14245 <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>
14246 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>
14247   Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
14248   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or
14249   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li>
14250 </ul>
14251             </td>
14252           </tr>
14253
14254
14255           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14256            <!-- end of entry -->
14257         
14258                 
14259           <tr class="entry" id="static_android.request.maxNumOutputRaw">
14260             <td class="entry_name
14261              " rowspan="3">
14262               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
14263             </td>
14264             <td class="entry_type">
14265                 <span class="entry_type_name">int32</span>
14266
14267               <span class="entry_type_visibility"> [public]</span>
14268
14269               <span class="entry_type_synthetic">[synthetic] </span>
14270
14271               <span class="entry_type_hwlevel">[legacy] </span>
14272
14273
14274
14275
14276             </td> <!-- entry_type -->
14277
14278             <td class="entry_description">
14279               <p>The maximum numbers of different types of output streams
14280 that can be configured and used simultaneously by a camera device
14281 for any <code>RAW</code> formats.<wbr/></p>
14282             </td>
14283
14284             <td class="entry_units">
14285             </td>
14286
14287             <td class="entry_range">
14288               <p>&gt;= 0</p>
14289             </td>
14290
14291             <td class="entry_tags">
14292             </td>
14293
14294           </tr>
14295           <tr class="entries_header">
14296             <th class="th_details" colspan="5">Details</th>
14297           </tr>
14298           <tr class="entry_cont">
14299             <td class="entry_details" colspan="5">
14300               <p>This value contains the max number of output simultaneous
14301 streams from the raw sensor.<wbr/></p>
14302 <p>This lists the upper bound of the number of output streams supported by
14303 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14304 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
14305 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>
14306 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
14307 <ul>
14308 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
14309 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
14310 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
14311 </ul>
14312 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
14313 never support raw streams.<wbr/></p>
14314             </td>
14315           </tr>
14316
14317
14318           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14319            <!-- end of entry -->
14320         
14321                 
14322           <tr class="entry" id="static_android.request.maxNumOutputProc">
14323             <td class="entry_name
14324              " rowspan="3">
14325               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
14326             </td>
14327             <td class="entry_type">
14328                 <span class="entry_type_name">int32</span>
14329
14330               <span class="entry_type_visibility"> [public]</span>
14331
14332               <span class="entry_type_synthetic">[synthetic] </span>
14333
14334               <span class="entry_type_hwlevel">[legacy] </span>
14335
14336
14337
14338
14339             </td> <!-- entry_type -->
14340
14341             <td class="entry_description">
14342               <p>The maximum numbers of different types of output streams
14343 that can be configured and used simultaneously by a camera device
14344 for any processed (but not-stalling) formats.<wbr/></p>
14345             </td>
14346
14347             <td class="entry_units">
14348             </td>
14349
14350             <td class="entry_range">
14351               <p>&gt;= 3
14352 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
14353 &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>
14354             </td>
14355
14356             <td class="entry_tags">
14357             </td>
14358
14359           </tr>
14360           <tr class="entries_header">
14361             <th class="th_details" colspan="5">Details</th>
14362           </tr>
14363           <tr class="entry_cont">
14364             <td class="entry_details" colspan="5">
14365               <p>This value contains the max number of output simultaneous
14366 streams for any processed (but not-stalling) formats.<wbr/></p>
14367 <p>This lists the upper bound of the number of output streams supported by
14368 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14369 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
14370 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>
14371 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
14372 Typically:</p>
14373 <ul>
14374 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
14375 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
14376 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
14377 <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>
14378 </ul>
14379 <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
14380 processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
14381 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
14382             </td>
14383           </tr>
14384
14385
14386           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14387            <!-- end of entry -->
14388         
14389                 
14390           <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
14391             <td class="entry_name
14392              " rowspan="3">
14393               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
14394             </td>
14395             <td class="entry_type">
14396                 <span class="entry_type_name">int32</span>
14397
14398               <span class="entry_type_visibility"> [public]</span>
14399
14400               <span class="entry_type_synthetic">[synthetic] </span>
14401
14402               <span class="entry_type_hwlevel">[legacy] </span>
14403
14404
14405
14406
14407             </td> <!-- entry_type -->
14408
14409             <td class="entry_description">
14410               <p>The maximum numbers of different types of output streams
14411 that can be configured and used simultaneously by a camera device
14412 for any processed (and stalling) formats.<wbr/></p>
14413             </td>
14414
14415             <td class="entry_units">
14416             </td>
14417
14418             <td class="entry_range">
14419               <p>&gt;= 1</p>
14420             </td>
14421
14422             <td class="entry_tags">
14423             </td>
14424
14425           </tr>
14426           <tr class="entries_header">
14427             <th class="th_details" colspan="5">Details</th>
14428           </tr>
14429           <tr class="entry_cont">
14430             <td class="entry_details" colspan="5">
14431               <p>This value contains the max number of output simultaneous
14432 streams for any processed (but not-stalling) formats.<wbr/></p>
14433 <p>This lists the upper bound of the number of output streams supported by
14434 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
14435 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
14436 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>
14437 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations
14438 &gt; 0.<wbr/>  Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a
14439 stalling format.<wbr/></p>
14440 <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
14441 processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
14442 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
14443             </td>
14444           </tr>
14445
14446
14447           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14448            <!-- end of entry -->
14449         
14450                 
14451           <tr class="entry" id="static_android.request.maxNumReprocessStreams">
14452             <td class="entry_name
14453                 entry_name_deprecated
14454              " rowspan="3">
14455               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
14456             </td>
14457             <td class="entry_type">
14458                 <span class="entry_type_name">int32</span>
14459                 <span class="entry_type_container">x</span>
14460
14461                 <span class="entry_type_array">
14462                   1
14463                 </span>
14464               <span class="entry_type_visibility"> [system]</span>
14465
14466
14467
14468               <span class="entry_type_deprecated">[deprecated] </span>
14469
14470
14471
14472             </td> <!-- entry_type -->
14473
14474             <td class="entry_description">
14475               <p>How many reprocessing streams of any type
14476 can be allocated at the same time.<wbr/></p>
14477             </td>
14478
14479             <td class="entry_units">
14480             </td>
14481
14482             <td class="entry_range">
14483               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
14484               <p>&gt;= 0</p>
14485             </td>
14486
14487             <td class="entry_tags">
14488               <ul class="entry_tags">
14489                   <li><a href="#tag_HAL2">HAL2</a></li>
14490               </ul>
14491             </td>
14492
14493           </tr>
14494           <tr class="entries_header">
14495             <th class="th_details" colspan="5">Details</th>
14496           </tr>
14497           <tr class="entry_cont">
14498             <td class="entry_details" colspan="5">
14499               <p>Only used by HAL2.<wbr/>x.<wbr/></p>
14500 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
14501             </td>
14502           </tr>
14503
14504
14505           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14506            <!-- end of entry -->
14507         
14508                 
14509           <tr class="entry" id="static_android.request.maxNumInputStreams">
14510             <td class="entry_name
14511              " rowspan="5">
14512               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
14513             </td>
14514             <td class="entry_type">
14515                 <span class="entry_type_name">int32</span>
14516
14517               <span class="entry_type_visibility"> [public]</span>
14518
14519
14520               <span class="entry_type_hwlevel">[full] </span>
14521
14522
14523
14524
14525             </td> <!-- entry_type -->
14526
14527             <td class="entry_description">
14528               <p>The maximum numbers of any type of input streams
14529 that can be configured and used simultaneously by a camera device.<wbr/></p>
14530             </td>
14531
14532             <td class="entry_units">
14533             </td>
14534
14535             <td class="entry_range">
14536               <p>0 or 1.<wbr/></p>
14537             </td>
14538
14539             <td class="entry_tags">
14540               <ul class="entry_tags">
14541                   <li><a href="#tag_REPROC">REPROC</a></li>
14542               </ul>
14543             </td>
14544
14545           </tr>
14546           <tr class="entries_header">
14547             <th class="th_details" colspan="5">Details</th>
14548           </tr>
14549           <tr class="entry_cont">
14550             <td class="entry_details" colspan="5">
14551               <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
14552 <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
14553 input stream,<wbr/> there must be at least one output stream configured to to receive the
14554 reprocessed images.<wbr/></p>
14555 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
14556 only the input buffer will be used to produce these output stream buffers,<wbr/> and a
14557 new sensor image will not be captured.<wbr/></p>
14558 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
14559 stream image format will be PRIVATE,<wbr/> the associated output stream image format
14560 should be JPEG.<wbr/></p>
14561             </td>
14562           </tr>
14563
14564           <tr class="entries_header">
14565             <th class="th_details" colspan="5">HAL Implementation Details</th>
14566           </tr>
14567           <tr class="entry_cont">
14568             <td class="entry_details" colspan="5">
14569               <p>For the reprocessing flow and controls,<wbr/> see
14570 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
14571             </td>
14572           </tr>
14573
14574           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14575            <!-- end of entry -->
14576         
14577                 
14578           <tr class="entry" id="static_android.request.pipelineMaxDepth">
14579             <td class="entry_name
14580              " rowspan="5">
14581               android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
14582             </td>
14583             <td class="entry_type">
14584                 <span class="entry_type_name">byte</span>
14585
14586               <span class="entry_type_visibility"> [public]</span>
14587
14588
14589               <span class="entry_type_hwlevel">[legacy] </span>
14590
14591
14592
14593
14594             </td> <!-- entry_type -->
14595
14596             <td class="entry_description">
14597               <p>Specifies the number of maximum pipeline stages a frame
14598 has to go through from when it's exposed to when it's available
14599 to the framework.<wbr/></p>
14600             </td>
14601
14602             <td class="entry_units">
14603             </td>
14604
14605             <td class="entry_range">
14606             </td>
14607
14608             <td class="entry_tags">
14609             </td>
14610
14611           </tr>
14612           <tr class="entries_header">
14613             <th class="th_details" colspan="5">Details</th>
14614           </tr>
14615           <tr class="entry_cont">
14616             <td class="entry_details" colspan="5">
14617               <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
14618 one stage to readout) from the sensor.<wbr/> The ISP then usually adds
14619 its own stages to do custom HW processing.<wbr/> Further stages may be
14620 added by SW processing.<wbr/></p>
14621 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
14622 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
14623 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
14624 the max pipeline depth.<wbr/></p>
14625 <p>A pipeline depth of X stages is equivalent to a pipeline latency of
14626 X frame intervals.<wbr/></p>
14627 <p>This value will be 8 or less.<wbr/></p>
14628             </td>
14629           </tr>
14630
14631           <tr class="entries_header">
14632             <th class="th_details" colspan="5">HAL Implementation Details</th>
14633           </tr>
14634           <tr class="entry_cont">
14635             <td class="entry_details" colspan="5">
14636               <p>This value should be 4 or less.<wbr/></p>
14637             </td>
14638           </tr>
14639
14640           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14641            <!-- end of entry -->
14642         
14643                 
14644           <tr class="entry" id="static_android.request.partialResultCount">
14645             <td class="entry_name
14646              " rowspan="3">
14647               android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
14648             </td>
14649             <td class="entry_type">
14650                 <span class="entry_type_name">int32</span>
14651
14652               <span class="entry_type_visibility"> [public]</span>
14653
14654
14655
14656
14657
14658
14659             </td> <!-- entry_type -->
14660
14661             <td class="entry_description">
14662               <p>Defines how many sub-components
14663 a result will be composed of.<wbr/></p>
14664             </td>
14665
14666             <td class="entry_units">
14667             </td>
14668
14669             <td class="entry_range">
14670               <p>&gt;= 1</p>
14671             </td>
14672
14673             <td class="entry_tags">
14674             </td>
14675
14676           </tr>
14677           <tr class="entries_header">
14678             <th class="th_details" colspan="5">Details</th>
14679           </tr>
14680           <tr class="entry_cont">
14681             <td class="entry_details" colspan="5">
14682               <p>In order to combat the pipeline latency,<wbr/> partial results
14683 may be delivered to the application layer from the camera device as
14684 soon as they are available.<wbr/></p>
14685 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
14686 results are not supported,<wbr/> and only the final TotalCaptureResult will
14687 be produced by the camera device.<wbr/></p>
14688 <p>A typical use case for this might be: after requesting an
14689 auto-focus (AF) lock the new AF state might be available 50%
14690 of the way through the pipeline.<wbr/>  The camera device could
14691 then immediately dispatch this state via a partial result to
14692 the application,<wbr/> and the rest of the metadata via later
14693 partial results.<wbr/></p>
14694             </td>
14695           </tr>
14696
14697
14698           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
14699            <!-- end of entry -->
14700         
14701                 
14702           <tr class="entry" id="static_android.request.availableCapabilities">
14703             <td class="entry_name
14704              " rowspan="5">
14705               android.<wbr/>request.<wbr/>available<wbr/>Capabilities
14706             </td>
14707             <td class="entry_type">
14708                 <span class="entry_type_name entry_type_name_enum">byte</span>
14709                 <span class="entry_type_container">x</span>
14710
14711                 <span class="entry_type_array">
14712                   n
14713                 </span>
14714               <span class="entry_type_visibility"> [public]</span>
14715
14716
14717               <span class="entry_type_hwlevel">[legacy] </span>
14718
14719
14720
14721                 <ul class="entry_type_enum">
14722                   <li>
14723                     <span class="entry_type_enum_name">BACKWARD_COMPATIBLE</span>
14724                     <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
14725 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
14726 supports.<wbr/></p>
14727 <p>This capability is listed by all normal devices,<wbr/> and
14728 indicates that the camera device has a feature set
14729 that's comparable to the baseline requirements for the
14730 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
14731 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
14732 capability,<wbr/> indicating that they support only depth measurement,<wbr/>
14733 not standard color output.<wbr/></p></span>
14734                   </li>
14735                   <li>
14736                     <span class="entry_type_enum_name">MANUAL_SENSOR</span>
14737                     <span class="entry_type_enum_optional">[optional]</span>
14738                     <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
14739 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
14740 The camera device supports basic manual control of the sensor image
14741 acquisition related stages.<wbr/> This means the following controls are
14742 guaranteed to be supported:</p>
14743 <ul>
14744 <li>Manual frame duration control<ul>
14745 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
14746 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
14747 </ul>
14748 </li>
14749 <li>Manual exposure control<ul>
14750 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
14751 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
14752 </ul>
14753 </li>
14754 <li>Manual sensitivity control<ul>
14755 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
14756 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
14757 </ul>
14758 </li>
14759 <li>Manual lens control (if the lens is adjustable)<ul>
14760 <li>android.<wbr/>lens.<wbr/>*</li>
14761 </ul>
14762 </li>
14763 <li>Manual flash control (if a flash unit is present)<ul>
14764 <li>android.<wbr/>flash.<wbr/>*</li>
14765 </ul>
14766 </li>
14767 <li>Manual black level locking<ul>
14768 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
14769 </ul>
14770 </li>
14771 <li>Auto exposure lock<ul>
14772 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
14773 </ul>
14774 </li>
14775 </ul>
14776 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
14777 device will accurately report the values applied by 3A in the
14778 result.<wbr/></p>
14779 <p>A given camera device may also support additional manual sensor controls,<wbr/>
14780 but this capability only covers the above list of controls.<wbr/></p>
14781 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
14782 additionally return a min frame duration that is greater than
14783 zero for each supported size-format combination.<wbr/></p></span>
14784                   </li>
14785                   <li>
14786                     <span class="entry_type_enum_name">MANUAL_POST_PROCESSING</span>
14787                     <span class="entry_type_enum_optional">[optional]</span>
14788                     <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
14789 The camera device supports basic manual control of the image post-processing
14790 stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
14791 <ul>
14792 <li>
14793 <p>Manual tonemap control</p>
14794 <ul>
14795 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
14796 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
14797 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
14798 <li><a href="#dynamic_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
14799 <li><a href="#dynamic_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
14800 </ul>
14801 </li>
14802 <li>
14803 <p>Manual white balance control</p>
14804 <ul>
14805 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
14806 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
14807 </ul>
14808 </li>
14809 <li>Manual lens shading map control<ul>
14810 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
14811 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
14812 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
14813 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
14814 </ul>
14815 </li>
14816 <li>Manual aberration correction control (if aberration correction is supported)<ul>
14817 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
14818 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
14819 </ul>
14820 </li>
14821 <li>Auto white balance lock<ul>
14822 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
14823 </ul>
14824 </li>
14825 </ul>
14826 <p>If auto white balance is enabled,<wbr/> then the camera device
14827 will accurately report the values applied by AWB in the result.<wbr/></p>
14828 <p>A given camera device may also support additional post-processing
14829 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
14830                   </li>
14831                   <li>
14832                     <span class="entry_type_enum_name">RAW</span>
14833                     <span class="entry_type_enum_optional">[optional]</span>
14834                     <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
14835 metadata for interpreting them.<wbr/></p>
14836 <p>Devices supporting the RAW capability allow both for
14837 saving DNG files,<wbr/> and for direct application processing of
14838 raw sensor images.<wbr/></p>
14839 <ul>
14840 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
14841 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams
14842   will match either the value in
14843   <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
14844   <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
14845 <li>All DNG-related optional metadata entries are provided
14846   by the camera device.<wbr/></li>
14847 </ul></span>
14848                   </li>
14849                   <li>
14850                     <span class="entry_type_enum_name">PRIVATE_REPROCESSING</span>
14851                     <span class="entry_type_enum_optional">[optional]</span>
14852                     <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
14853 <ul>
14854 <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>
14855 <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/>
14856   that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
14857   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>
14858 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
14859   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>
14860 <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>
14861 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
14862   relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
14863 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
14864   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
14865   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
14866 <li>The maximum available resolution for PRIVATE streams
14867   (both input/<wbr/>output) will match the maximum available
14868   resolution of JPEG streams.<wbr/></li>
14869 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
14870 <li>Only below controls are effective for reprocessing requests and
14871   will be present in capture results,<wbr/> other controls in reprocess
14872   requests will be ignored by the camera device.<wbr/><ul>
14873 <li>android.<wbr/>jpeg.<wbr/>*</li>
14874 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
14875 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
14876 </ul>
14877 </li>
14878 </ul></span>
14879                   </li>
14880                   <li>
14881                     <span class="entry_type_enum_name">READ_SENSOR_SETTINGS</span>
14882                     <span class="entry_type_enum_optional">[optional]</span>
14883                     <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
14884 the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
14885 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
14886 <p>The values reported for the following controls are guaranteed to be available
14887 in the CaptureResult,<wbr/> including when 3A is enabled:</p>
14888 <ul>
14889 <li>Exposure control<ul>
14890 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
14891 </ul>
14892 </li>
14893 <li>Sensitivity control<ul>
14894 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
14895 </ul>
14896 </li>
14897 <li>Lens controls (if the lens is adjustable)<ul>
14898 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
14899 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
14900 </ul>
14901 </li>
14902 </ul>
14903 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
14904 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
14905                   </li>
14906                   <li>
14907                     <span class="entry_type_enum_name">BURST_CAPTURE</span>
14908                     <span class="entry_type_enum_optional">[optional]</span>
14909                     <span class="entry_type_enum_notes"><p>The camera device supports capturing maximum-resolution
14910 images at &gt;= 20 frames per second,<wbr/> in at least the
14911 uncompressed YUV format,<wbr/> when post-processing settings
14912 are set to FAST.<wbr/></p>
14913 <p>More specifically,<wbr/> this means that a size matching the
14914 camera device's active array size is listed as a
14915 supported size for the YUV_<wbr/>420_<wbr/>888 format in
14916 <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>,<wbr/> the minimum frame
14917 duration for that format and size is &lt;= 1/<wbr/>20 s,<wbr/> and
14918 the <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a> entry
14919 lists at least one FPS range where the minimum FPS is</p>
14920 <blockquote>
14921 <p>= 1 /<wbr/> minimumFrameDuration for the maximum-size
14922 YUV_<wbr/>420_<wbr/>888 format.<wbr/></p>
14923 </blockquote>
14924 <p>In addition,<wbr/> the <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> field is
14925 guaranted to have a value between 0 and 4,<wbr/> inclusive.<wbr/>
14926 <a href="#static_android.control.aeLockAvailable">android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available</a> and
14927 <a href="#static_android.control.awbLockAvailable">android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available</a> are also guaranteed
14928 to be <code>true</code> so burst capture with these two locks ON
14929 yields consistent image output.<wbr/></p>
14930 <p>On a camera device that reports the HIGH_<wbr/>RESOLUTION hardware
14931 level,<wbr/> meaning the device supports very large capture sizes,<wbr/>
14932 BURST_<wbr/>CAPTURE means that at least 8-megapixel images can be
14933 captured at <code>&gt;=</code> 20 fps,<wbr/> and maximum-resolution images can be
14934 captured at <code>&gt;=</code> 10 fps.<wbr/></p></span>
14935                   </li>
14936                   <li>
14937                     <span class="entry_type_enum_name">YUV_REPROCESSING</span>
14938                     <span class="entry_type_enum_optional">[optional]</span>
14939                     <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
14940 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
14941 following:</p>
14942 <ul>
14943 <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>
14944 <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/>
14945   YUV_<wbr/>420_<wbr/>888 is included in the lists of formats returned by
14946   <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getInputFormats">StreamConfigurationMap#getInputFormats</a> and
14947   <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputFormats">StreamConfigurationMap#getOutputFormats</a>.<wbr/></li>
14948 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
14949   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>
14950 <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>
14951 <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
14952   relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
14953 <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
14954   <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>
14955 <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
14956   maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
14957 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
14958 <li>Only the below controls are effective for reprocessing requests and will be present
14959   in capture results.<wbr/> The reprocess requests are from the original capture results that
14960   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>
14961   output buffers.<wbr/>  All other controls in the reprocess requests will be ignored by the
14962   camera device.<wbr/><ul>
14963 <li>android.<wbr/>jpeg.<wbr/>*</li>
14964 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
14965 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
14966 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
14967 </ul>
14968 </li>
14969 </ul></span>
14970                   </li>
14971                   <li>
14972                     <span class="entry_type_enum_name">DEPTH_OUTPUT</span>
14973                     <span class="entry_type_enum_optional">[optional]</span>
14974                     <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
14975 <p>This capability requires the camera device to support the following:</p>
14976 <ul>
14977 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as an output format.<wbr/></li>
14978 <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
14979   output format.<wbr/></li>
14980 <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/>
14981   will list the following calibration entries in both
14982   <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a> and
14983   <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
14984 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
14985 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
14986 <li><a href="#dynamic_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
14987 <li><a href="#dynamic_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
14988 </ul>
14989 </li>
14990 <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>
14991 <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
14992   normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
14993   format.<wbr/></li>
14994 </ul>
14995 <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
14996 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
14997 should be accounted for (see
14998 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
14999 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
15000 using a repeating burst is recommended,<wbr/> where a depth-output target is only included
15001 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
15002 rate,<wbr/> including depth stall time.<wbr/></p></span>
15003                   </li>
15004                 </ul>
15005
15006             </td> <!-- entry_type -->
15007
15008             <td class="entry_description">
15009               <p>List of capabilities that this camera device
15010 advertises as fully supporting.<wbr/></p>
15011             </td>
15012
15013             <td class="entry_units">
15014             </td>
15015
15016             <td class="entry_range">
15017             </td>
15018
15019             <td class="entry_tags">
15020             </td>
15021
15022           </tr>
15023           <tr class="entries_header">
15024             <th class="th_details" colspan="5">Details</th>
15025           </tr>
15026           <tr class="entry_cont">
15027             <td class="entry_details" colspan="5">
15028               <p>A capability is a contract that the camera device makes in order
15029 to be able to satisfy one or more use cases.<wbr/></p>
15030 <p>Listing a capability guarantees that the whole set of features
15031 required to support a common use will all be available.<wbr/></p>
15032 <p>Using a subset of the functionality provided by an unsupported
15033 capability may be possible on a specific camera device implementation;
15034 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
15035 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
15036 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
15037 <p>The following capabilities are guaranteed to be available on
15038 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
15039 <ul>
15040 <li>MANUAL_<wbr/>SENSOR</li>
15041 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
15042 </ul>
15043 <p>Other capabilities may be available on either FULL or LIMITED
15044 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
15045             </td>
15046           </tr>
15047
15048           <tr class="entries_header">
15049             <th class="th_details" colspan="5">HAL Implementation Details</th>
15050           </tr>
15051           <tr class="entry_cont">
15052             <td class="entry_details" colspan="5">
15053               <p>Additional constraint details per-capability will be available
15054 in the Compatibility Test Suite.<wbr/></p>
15055 <p>Minimum baseline requirements required for the
15056 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
15057 Instead refer to "BC" tags and the camera CTS tests in the
15058 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
15059 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
15060 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
15061 request and the result in order to be considered to be
15062 capability-compliant.<wbr/></p>
15063 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
15064 then exposure time must be configurable via the request <em>and</em>
15065 the actual exposure applied must be available via
15066 the result.<wbr/></p>
15067 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
15068 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
15069 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
15070 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
15071 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
15072 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
15073 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
15074 YUV_<wbr/>REPROCESSING capability must support the
15075 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
15076 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
15077 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
15078 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
15079 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
15080 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
15081 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
15082 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
15083 DEPTH).<wbr/></p>
15084             </td>
15085           </tr>
15086
15087           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15088            <!-- end of entry -->
15089         
15090                 
15091           <tr class="entry" id="static_android.request.availableRequestKeys">
15092             <td class="entry_name
15093              " rowspan="5">
15094               android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
15095             </td>
15096             <td class="entry_type">
15097                 <span class="entry_type_name">int32</span>
15098                 <span class="entry_type_container">x</span>
15099
15100                 <span class="entry_type_array">
15101                   n
15102                 </span>
15103               <span class="entry_type_visibility"> [hidden]</span>
15104
15105
15106               <span class="entry_type_hwlevel">[legacy] </span>
15107
15108
15109
15110
15111             </td> <!-- entry_type -->
15112
15113             <td class="entry_description">
15114               <p>A list of all keys that the camera device has available
15115 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
15116             </td>
15117
15118             <td class="entry_units">
15119             </td>
15120
15121             <td class="entry_range">
15122             </td>
15123
15124             <td class="entry_tags">
15125             </td>
15126
15127           </tr>
15128           <tr class="entries_header">
15129             <th class="th_details" colspan="5">Details</th>
15130           </tr>
15131           <tr class="entry_cont">
15132             <td class="entry_details" colspan="5">
15133               <p>Attempting to set a key into a CaptureRequest that is not
15134 listed here will result in an invalid request and will be rejected
15135 by the camera device.<wbr/></p>
15136 <p>This field can be used to query the feature set of a camera device
15137 at a more granular level than capabilities.<wbr/> This is especially
15138 important for optional keys that are not listed under any capability
15139 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
15140             </td>
15141           </tr>
15142
15143           <tr class="entries_header">
15144             <th class="th_details" colspan="5">HAL Implementation Details</th>
15145           </tr>
15146           <tr class="entry_cont">
15147             <td class="entry_details" colspan="5">
15148               <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15149 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15150 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15151 vendor extensions API and not against this field.<wbr/></p>
15152 <p>The HAL must not consume any request tags that are not listed either
15153 here or in the vendor tag list.<wbr/></p>
15154 <p>The public camera2 API will always make the vendor tags visible
15155 via
15156 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
15157             </td>
15158           </tr>
15159
15160           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15161            <!-- end of entry -->
15162         
15163                 
15164           <tr class="entry" id="static_android.request.availableResultKeys">
15165             <td class="entry_name
15166              " rowspan="5">
15167               android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
15168             </td>
15169             <td class="entry_type">
15170                 <span class="entry_type_name">int32</span>
15171                 <span class="entry_type_container">x</span>
15172
15173                 <span class="entry_type_array">
15174                   n
15175                 </span>
15176               <span class="entry_type_visibility"> [hidden]</span>
15177
15178
15179               <span class="entry_type_hwlevel">[legacy] </span>
15180
15181
15182
15183
15184             </td> <!-- entry_type -->
15185
15186             <td class="entry_description">
15187               <p>A list of all keys that the camera device has available
15188 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p>
15189             </td>
15190
15191             <td class="entry_units">
15192             </td>
15193
15194             <td class="entry_range">
15195             </td>
15196
15197             <td class="entry_tags">
15198             </td>
15199
15200           </tr>
15201           <tr class="entries_header">
15202             <th class="th_details" colspan="5">Details</th>
15203           </tr>
15204           <tr class="entry_cont">
15205             <td class="entry_details" colspan="5">
15206               <p>Attempting to get a key from a CaptureResult that is not
15207 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
15208 a CaptureResult that is listed here will generally never return a <code>null</code>
15209 value.<wbr/></p>
15210 <p>The following keys may return <code>null</code> unless they are enabled:</p>
15211 <ul>
15212 <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>
15213 </ul>
15214 <p>(Those sometimes-null keys will nevertheless be listed here
15215 if they are available.<wbr/>)</p>
15216 <p>This field can be used to query the feature set of a camera device
15217 at a more granular level than capabilities.<wbr/> This is especially
15218 important for optional keys that are not listed under any capability
15219 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
15220             </td>
15221           </tr>
15222
15223           <tr class="entries_header">
15224             <th class="th_details" colspan="5">HAL Implementation Details</th>
15225           </tr>
15226           <tr class="entry_cont">
15227             <td class="entry_details" colspan="5">
15228               <p>Tags listed here must always have an entry in the result metadata,<wbr/>
15229 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
15230 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
15231 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15232 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15233 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15234 vendor extensions API and not against this field.<wbr/></p>
15235 <p>The HAL must not produce any result tags that are not listed either
15236 here or in the vendor tag list.<wbr/></p>
15237 <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>
15238             </td>
15239           </tr>
15240
15241           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15242            <!-- end of entry -->
15243         
15244                 
15245           <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
15246             <td class="entry_name
15247              " rowspan="5">
15248               android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
15249             </td>
15250             <td class="entry_type">
15251                 <span class="entry_type_name">int32</span>
15252                 <span class="entry_type_container">x</span>
15253
15254                 <span class="entry_type_array">
15255                   n
15256                 </span>
15257               <span class="entry_type_visibility"> [hidden]</span>
15258
15259
15260               <span class="entry_type_hwlevel">[legacy] </span>
15261
15262
15263
15264
15265             </td> <!-- entry_type -->
15266
15267             <td class="entry_description">
15268               <p>A list of all keys that the camera device has available
15269 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
15270             </td>
15271
15272             <td class="entry_units">
15273             </td>
15274
15275             <td class="entry_range">
15276             </td>
15277
15278             <td class="entry_tags">
15279             </td>
15280
15281           </tr>
15282           <tr class="entries_header">
15283             <th class="th_details" colspan="5">Details</th>
15284           </tr>
15285           <tr class="entry_cont">
15286             <td class="entry_details" colspan="5">
15287               <p>This entry follows the same rules as
15288 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
15289 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
15290 details.<wbr/></p>
15291             </td>
15292           </tr>
15293
15294           <tr class="entries_header">
15295             <th class="th_details" colspan="5">HAL Implementation Details</th>
15296           </tr>
15297           <tr class="entry_cont">
15298             <td class="entry_details" colspan="5">
15299               <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
15300 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
15301 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
15302 <p>Vendor tags must not be listed here.<wbr/> Use the vendor tag metadata
15303 extensions C api instead (refer to camera3.<wbr/>h for more details).<wbr/></p>
15304 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
15305 vendor extensions API and not against this field.<wbr/></p>
15306 <p>The HAL must not have any tags in its static info that are not listed
15307 either here or in the vendor tag list.<wbr/></p>
15308 <p>The public camera2 API will always make the vendor tags visible
15309 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
15310             </td>
15311           </tr>
15312
15313           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15314            <!-- end of entry -->
15315         
15316         
15317
15318       <!-- end of kind -->
15319       </tbody>
15320       <tr><td colspan="6" class="kind">dynamic</td></tr>
15321
15322       <thead class="entries_header">
15323         <tr>
15324           <th class="th_name">Property Name</th>
15325           <th class="th_type">Type</th>
15326           <th class="th_description">Description</th>
15327           <th class="th_units">Units</th>
15328           <th class="th_range">Range</th>
15329           <th class="th_tags">Tags</th>
15330         </tr>
15331       </thead>
15332
15333       <tbody>
15334
15335         
15336
15337         
15338
15339         
15340
15341         
15342
15343                 
15344           <tr class="entry" id="dynamic_android.request.frameCount">
15345             <td class="entry_name
15346                 entry_name_deprecated
15347              " rowspan="3">
15348               android.<wbr/>request.<wbr/>frame<wbr/>Count
15349             </td>
15350             <td class="entry_type">
15351                 <span class="entry_type_name">int32</span>
15352
15353               <span class="entry_type_visibility"> [hidden]</span>
15354
15355
15356
15357               <span class="entry_type_deprecated">[deprecated] </span>
15358
15359
15360
15361             </td> <!-- entry_type -->
15362
15363             <td class="entry_description">
15364               <p>A frame counter set by the framework.<wbr/> This value monotonically
15365 increases with every new result (that is,<wbr/> each new result has a unique
15366 frameCount value).<wbr/></p>
15367             </td>
15368
15369             <td class="entry_units">
15370               count of frames
15371             </td>
15372
15373             <td class="entry_range">
15374               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15375               <p>&gt; 0</p>
15376             </td>
15377
15378             <td class="entry_tags">
15379             </td>
15380
15381           </tr>
15382           <tr class="entries_header">
15383             <th class="th_details" colspan="5">Details</th>
15384           </tr>
15385           <tr class="entry_cont">
15386             <td class="entry_details" colspan="5">
15387               <p>Reset on release()</p>
15388             </td>
15389           </tr>
15390
15391
15392           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15393            <!-- end of entry -->
15394         
15395                 
15396           <tr class="entry" id="dynamic_android.request.id">
15397             <td class="entry_name
15398              " rowspan="1">
15399               android.<wbr/>request.<wbr/>id
15400             </td>
15401             <td class="entry_type">
15402                 <span class="entry_type_name">int32</span>
15403
15404               <span class="entry_type_visibility"> [hidden]</span>
15405
15406
15407
15408
15409
15410
15411             </td> <!-- entry_type -->
15412
15413             <td class="entry_description">
15414               <p>An application-specified ID for the current
15415 request.<wbr/> Must be maintained unchanged in output
15416 frame</p>
15417             </td>
15418
15419             <td class="entry_units">
15420               arbitrary integer assigned by application
15421             </td>
15422
15423             <td class="entry_range">
15424               <p>Any int</p>
15425             </td>
15426
15427             <td class="entry_tags">
15428               <ul class="entry_tags">
15429                   <li><a href="#tag_V1">V1</a></li>
15430               </ul>
15431             </td>
15432
15433           </tr>
15434
15435
15436           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15437            <!-- end of entry -->
15438         
15439                 
15440           <tr class="entry" id="dynamic_android.request.metadataMode">
15441             <td class="entry_name
15442              " rowspan="1">
15443               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
15444             </td>
15445             <td class="entry_type">
15446                 <span class="entry_type_name entry_type_name_enum">byte</span>
15447
15448               <span class="entry_type_visibility"> [system]</span>
15449
15450
15451
15452
15453
15454                 <ul class="entry_type_enum">
15455                   <li>
15456                     <span class="entry_type_enum_name">NONE</span>
15457                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
15458 for application-bound buffer data.<wbr/> If no
15459 application-bound streams exist,<wbr/> no frame should be
15460 placed in the output frame queue.<wbr/> If such streams
15461 exist,<wbr/> a frame should be placed on the output queue
15462 with null metadata but with the necessary output buffer
15463 information.<wbr/> Timestamp information should still be
15464 included with any output stream buffers</p></span>
15465                   </li>
15466                   <li>
15467                     <span class="entry_type_enum_name">FULL</span>
15468                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
15469 only be produced if they are separately
15470 enabled</p></span>
15471                   </li>
15472                 </ul>
15473
15474             </td> <!-- entry_type -->
15475
15476             <td class="entry_description">
15477               <p>How much metadata to produce on
15478 output</p>
15479             </td>
15480
15481             <td class="entry_units">
15482             </td>
15483
15484             <td class="entry_range">
15485             </td>
15486
15487             <td class="entry_tags">
15488               <ul class="entry_tags">
15489                   <li><a href="#tag_FUTURE">FUTURE</a></li>
15490               </ul>
15491             </td>
15492
15493           </tr>
15494
15495
15496           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15497            <!-- end of entry -->
15498         
15499                 
15500           <tr class="entry" id="dynamic_android.request.outputStreams">
15501             <td class="entry_name
15502                 entry_name_deprecated
15503              " rowspan="3">
15504               android.<wbr/>request.<wbr/>output<wbr/>Streams
15505             </td>
15506             <td class="entry_type">
15507                 <span class="entry_type_name">int32</span>
15508                 <span class="entry_type_container">x</span>
15509
15510                 <span class="entry_type_array">
15511                   n
15512                 </span>
15513               <span class="entry_type_visibility"> [system]</span>
15514
15515
15516
15517               <span class="entry_type_deprecated">[deprecated] </span>
15518
15519
15520
15521             </td> <!-- entry_type -->
15522
15523             <td class="entry_description">
15524               <p>Lists which camera output streams image data
15525 from this capture must be sent to</p>
15526             </td>
15527
15528             <td class="entry_units">
15529               List of camera stream IDs
15530             </td>
15531
15532             <td class="entry_range">
15533               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15534               <p>List must only include streams that have been
15535 created</p>
15536             </td>
15537
15538             <td class="entry_tags">
15539               <ul class="entry_tags">
15540                   <li><a href="#tag_HAL2">HAL2</a></li>
15541               </ul>
15542             </td>
15543
15544           </tr>
15545           <tr class="entries_header">
15546             <th class="th_details" colspan="5">Details</th>
15547           </tr>
15548           <tr class="entry_cont">
15549             <td class="entry_details" colspan="5">
15550               <p>If no output streams are listed,<wbr/> then the image
15551 data should simply be discarded.<wbr/> The image data must
15552 still be captured for metadata and statistics production,<wbr/>
15553 and the lens and flash must operate as requested.<wbr/></p>
15554             </td>
15555           </tr>
15556
15557
15558           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15559            <!-- end of entry -->
15560         
15561                 
15562           <tr class="entry" id="dynamic_android.request.pipelineDepth">
15563             <td class="entry_name
15564              " rowspan="5">
15565               android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
15566             </td>
15567             <td class="entry_type">
15568                 <span class="entry_type_name">byte</span>
15569
15570               <span class="entry_type_visibility"> [public]</span>
15571
15572
15573               <span class="entry_type_hwlevel">[legacy] </span>
15574
15575
15576
15577
15578             </td> <!-- entry_type -->
15579
15580             <td class="entry_description">
15581               <p>Specifies the number of pipeline stages the frame went
15582 through from when it was exposed to when the final completed result
15583 was available to the framework.<wbr/></p>
15584             </td>
15585
15586             <td class="entry_units">
15587             </td>
15588
15589             <td class="entry_range">
15590               <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
15591             </td>
15592
15593             <td class="entry_tags">
15594             </td>
15595
15596           </tr>
15597           <tr class="entries_header">
15598             <th class="th_details" colspan="5">Details</th>
15599           </tr>
15600           <tr class="entry_cont">
15601             <td class="entry_details" colspan="5">
15602               <p>Depending on what settings are used in the request,<wbr/> and
15603 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
15604 and some pipeline stages skipped.<wbr/></p>
15605 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
15606             </td>
15607           </tr>
15608
15609           <tr class="entries_header">
15610             <th class="th_details" colspan="5">HAL Implementation Details</th>
15611           </tr>
15612           <tr class="entry_cont">
15613             <td class="entry_details" colspan="5">
15614               <p>This value must always represent the accurate count of how many
15615 pipeline stages were actually used.<wbr/></p>
15616             </td>
15617           </tr>
15618
15619           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15620            <!-- end of entry -->
15621         
15622         
15623
15624       <!-- end of kind -->
15625       </tbody>
15626
15627   <!-- end of section -->
15628   <tr><td colspan="6" id="section_scaler" class="section">scaler</td></tr>
15629
15630
15631       <tr><td colspan="6" class="kind">controls</td></tr>
15632
15633       <thead class="entries_header">
15634         <tr>
15635           <th class="th_name">Property Name</th>
15636           <th class="th_type">Type</th>
15637           <th class="th_description">Description</th>
15638           <th class="th_units">Units</th>
15639           <th class="th_range">Range</th>
15640           <th class="th_tags">Tags</th>
15641         </tr>
15642       </thead>
15643
15644       <tbody>
15645
15646         
15647
15648         
15649
15650         
15651
15652         
15653
15654                 
15655           <tr class="entry" id="controls_android.scaler.cropRegion">
15656             <td class="entry_name
15657              " rowspan="5">
15658               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
15659             </td>
15660             <td class="entry_type">
15661                 <span class="entry_type_name">int32</span>
15662                 <span class="entry_type_container">x</span>
15663
15664                 <span class="entry_type_array">
15665                   4
15666                 </span>
15667               <span class="entry_type_visibility"> [public as rectangle]</span>
15668
15669
15670               <span class="entry_type_hwlevel">[legacy] </span>
15671
15672
15673
15674
15675             </td> <!-- entry_type -->
15676
15677             <td class="entry_description">
15678               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
15679             </td>
15680
15681             <td class="entry_units">
15682               Pixel coordinates relative to
15683           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
15684             </td>
15685
15686             <td class="entry_range">
15687             </td>
15688
15689             <td class="entry_tags">
15690               <ul class="entry_tags">
15691                   <li><a href="#tag_BC">BC</a></li>
15692               </ul>
15693             </td>
15694
15695           </tr>
15696           <tr class="entries_header">
15697             <th class="th_details" colspan="5">Details</th>
15698           </tr>
15699           <tr class="entry_cont">
15700             <td class="entry_details" colspan="5">
15701               <p>This control can be used to implement digital zoom.<wbr/></p>
15702 <p>The crop region coordinate system is based off
15703 <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
15704 top-left corner of the sensor active array.<wbr/></p>
15705 <p>Output streams use this rectangle to produce their output,<wbr/>
15706 cropping to a smaller region if necessary to maintain the
15707 stream's aspect ratio,<wbr/> then scaling the sensor input to
15708 match the output's configured resolution.<wbr/></p>
15709 <p>The crop region is applied after the RAW to other color
15710 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
15711 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
15712 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
15713 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
15714 be done to maximize the final pixel area of the stream.<wbr/></p>
15715 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
15716 ratio,<wbr/> then 4:3 streams will use the exact crop
15717 region.<wbr/> 16:9 streams will further crop vertically
15718 (letterbox).<wbr/></p>
15719 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
15720 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
15721 streams will match exactly.<wbr/> These additional crops will
15722 be centered within the crop region.<wbr/></p>
15723 <p>The width and height of the crop region cannot
15724 be set to be smaller than
15725 <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
15726 <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>
15727 <p>The camera device may adjust the crop region to account
15728 for rounding and other hardware requirements; the final
15729 crop region used will be included in the output capture
15730 result.<wbr/></p>
15731             </td>
15732           </tr>
15733
15734           <tr class="entries_header">
15735             <th class="th_details" colspan="5">HAL Implementation Details</th>
15736           </tr>
15737           <tr class="entry_cont">
15738             <td class="entry_details" colspan="5">
15739               <p>The output streams must maintain square pixels at all
15740 times,<wbr/> no matter what the relative aspect ratios of the
15741 crop region and the stream are.<wbr/>  Negative values for
15742 corner are allowed for raw output if full pixel array is
15743 larger than active pixel array.<wbr/> Width and height may be
15744 rounded to nearest larger supportable width,<wbr/> especially
15745 for raw output,<wbr/> where only a few fixed scales may be
15746 possible.<wbr/></p>
15747 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
15748             </td>
15749           </tr>
15750
15751           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15752            <!-- end of entry -->
15753         
15754         
15755
15756       <!-- end of kind -->
15757       </tbody>
15758       <tr><td colspan="6" class="kind">static</td></tr>
15759
15760       <thead class="entries_header">
15761         <tr>
15762           <th class="th_name">Property Name</th>
15763           <th class="th_type">Type</th>
15764           <th class="th_description">Description</th>
15765           <th class="th_units">Units</th>
15766           <th class="th_range">Range</th>
15767           <th class="th_tags">Tags</th>
15768         </tr>
15769       </thead>
15770
15771       <tbody>
15772
15773         
15774
15775         
15776
15777         
15778
15779         
15780
15781                 
15782           <tr class="entry" id="static_android.scaler.availableFormats">
15783             <td class="entry_name
15784                 entry_name_deprecated
15785              " rowspan="5">
15786               android.<wbr/>scaler.<wbr/>available<wbr/>Formats
15787             </td>
15788             <td class="entry_type">
15789                 <span class="entry_type_name entry_type_name_enum">int32</span>
15790                 <span class="entry_type_container">x</span>
15791
15792                 <span class="entry_type_array">
15793                   n
15794                 </span>
15795               <span class="entry_type_visibility"> [hidden as imageFormat]</span>
15796
15797
15798
15799               <span class="entry_type_deprecated">[deprecated] </span>
15800
15801
15802                 <ul class="entry_type_enum">
15803                   <li>
15804                     <span class="entry_type_enum_name">RAW16</span>
15805                     <span class="entry_type_enum_optional">[optional]</span>
15806                     <span class="entry_type_enum_value">0x20</span>
15807                     <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
15808 buffers with 16-bit pixels.<wbr/></p>
15809 <p>Buffers of this format are typically expected to have a
15810 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
15811 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
15812 CFAs that are not representable by a format in
15813 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
15814 use this format.<wbr/></p>
15815 <p>Buffers of this format will also follow the constraints given for
15816 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
15817 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
15818 the full set of performance guarantees.<wbr/></p></span>
15819                   </li>
15820                   <li>
15821                     <span class="entry_type_enum_name">RAW_OPAQUE</span>
15822                     <span class="entry_type_enum_optional">[optional]</span>
15823                     <span class="entry_type_enum_value">0x24</span>
15824                     <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE is a format for raw image buffers coming from an
15825 image sensor.<wbr/></p>
15826 <p>The actual structure of buffers of this format is
15827 platform-specific,<wbr/> but must follow several constraints:</p>
15828 <ol>
15829 <li>No image post-processing operations may have been applied to
15830 buffers of this type.<wbr/> These buffers contain raw image data coming
15831 directly from the image sensor.<wbr/></li>
15832 <li>If a buffer of this format is passed to the camera device for
15833 reprocessing,<wbr/> the resulting images will be identical to the images
15834 produced if the buffer had come directly from the sensor and was
15835 processed with the same settings.<wbr/></li>
15836 </ol>
15837 <p>The intended use for this format is to allow access to the native
15838 raw format buffers coming directly from the camera sensor without
15839 any additional conversions or decrease in framerate.<wbr/></p>
15840 <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
15841 performance guarantees.<wbr/></p></span>
15842                   </li>
15843                   <li>
15844                     <span class="entry_type_enum_name">YV12</span>
15845                     <span class="entry_type_enum_optional">[optional]</span>
15846                     <span class="entry_type_enum_value">0x32315659</span>
15847                     <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
15848                   </li>
15849                   <li>
15850                     <span class="entry_type_enum_name">YCrCb_420_SP</span>
15851                     <span class="entry_type_enum_optional">[optional]</span>
15852                     <span class="entry_type_enum_value">0x11</span>
15853                     <span class="entry_type_enum_notes"><p>NV21</p></span>
15854                   </li>
15855                   <li>
15856                     <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED</span>
15857                     <span class="entry_type_enum_value">0x22</span>
15858                     <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
15859                   </li>
15860                   <li>
15861                     <span class="entry_type_enum_name">YCbCr_420_888</span>
15862                     <span class="entry_type_enum_value">0x23</span>
15863                     <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
15864                   </li>
15865                   <li>
15866                     <span class="entry_type_enum_name">BLOB</span>
15867                     <span class="entry_type_enum_value">0x21</span>
15868                     <span class="entry_type_enum_notes"><p>JPEG format</p></span>
15869                   </li>
15870                 </ul>
15871
15872             </td> <!-- entry_type -->
15873
15874             <td class="entry_description">
15875               <p>The list of image formats that are supported by this
15876 camera device for output streams.<wbr/></p>
15877             </td>
15878
15879             <td class="entry_units">
15880             </td>
15881
15882             <td class="entry_range">
15883               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15884             </td>
15885
15886             <td class="entry_tags">
15887               <ul class="entry_tags">
15888                   <li><a href="#tag_BC">BC</a></li>
15889               </ul>
15890             </td>
15891
15892           </tr>
15893           <tr class="entries_header">
15894             <th class="th_details" colspan="5">Details</th>
15895           </tr>
15896           <tr class="entry_cont">
15897             <td class="entry_details" colspan="5">
15898               <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
15899 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
15900             </td>
15901           </tr>
15902
15903           <tr class="entries_header">
15904             <th class="th_details" colspan="5">HAL Implementation Details</th>
15905           </tr>
15906           <tr class="entry_cont">
15907             <td class="entry_details" colspan="5">
15908               <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
15909 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
15910 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
15911 gralloc module will select a format based on the usage flags provided
15912 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
15913 usually used by preview and recording streams,<wbr/> where the application doesn't
15914 need access the image data.<wbr/></p>
15915 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
15916 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
15917 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
15918 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
15919 recommended that any information used by the camera device when
15920 processing images is fully expressed by the result metadata
15921 for that image buffer.<wbr/></p>
15922             </td>
15923           </tr>
15924
15925           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15926            <!-- end of entry -->
15927         
15928                 
15929           <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
15930             <td class="entry_name
15931                 entry_name_deprecated
15932              " rowspan="3">
15933               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
15934             </td>
15935             <td class="entry_type">
15936                 <span class="entry_type_name">int64</span>
15937                 <span class="entry_type_container">x</span>
15938
15939                 <span class="entry_type_array">
15940                   n
15941                 </span>
15942               <span class="entry_type_visibility"> [hidden]</span>
15943
15944
15945
15946               <span class="entry_type_deprecated">[deprecated] </span>
15947
15948
15949
15950             </td> <!-- entry_type -->
15951
15952             <td class="entry_description">
15953               <p>The minimum frame duration that is supported
15954 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
15955             </td>
15956
15957             <td class="entry_units">
15958               Nanoseconds
15959             </td>
15960
15961             <td class="entry_range">
15962               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15963               <p>TODO: Remove property.<wbr/></p>
15964             </td>
15965
15966             <td class="entry_tags">
15967               <ul class="entry_tags">
15968                   <li><a href="#tag_BC">BC</a></li>
15969               </ul>
15970             </td>
15971
15972           </tr>
15973           <tr class="entries_header">
15974             <th class="th_details" colspan="5">Details</th>
15975           </tr>
15976           <tr class="entry_cont">
15977             <td class="entry_details" colspan="5">
15978               <p>This corresponds to the minimum steady-state frame duration when only
15979 that JPEG stream is active and captured in a burst,<wbr/> with all
15980 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
15981 <p>When multiple streams are configured,<wbr/> the minimum
15982 frame duration will be &gt;= max(individual stream min
15983 durations)</p>
15984             </td>
15985           </tr>
15986
15987
15988           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
15989            <!-- end of entry -->
15990         
15991                 
15992           <tr class="entry" id="static_android.scaler.availableJpegSizes">
15993             <td class="entry_name
15994                 entry_name_deprecated
15995              " rowspan="5">
15996               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
15997             </td>
15998             <td class="entry_type">
15999                 <span class="entry_type_name">int32</span>
16000                 <span class="entry_type_container">x</span>
16001
16002                 <span class="entry_type_array">
16003                   n x 2
16004                 </span>
16005               <span class="entry_type_visibility"> [hidden as size]</span>
16006
16007
16008
16009               <span class="entry_type_deprecated">[deprecated] </span>
16010
16011
16012
16013             </td> <!-- entry_type -->
16014
16015             <td class="entry_description">
16016               <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
16017             </td>
16018
16019             <td class="entry_units">
16020             </td>
16021
16022             <td class="entry_range">
16023               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16024               <p>TODO: Remove property.<wbr/></p>
16025             </td>
16026
16027             <td class="entry_tags">
16028               <ul class="entry_tags">
16029                   <li><a href="#tag_BC">BC</a></li>
16030               </ul>
16031             </td>
16032
16033           </tr>
16034           <tr class="entries_header">
16035             <th class="th_details" colspan="5">Details</th>
16036           </tr>
16037           <tr class="entry_cont">
16038             <td class="entry_details" colspan="5">
16039               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
16040 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>
16041             </td>
16042           </tr>
16043
16044           <tr class="entries_header">
16045             <th class="th_details" colspan="5">HAL Implementation Details</th>
16046           </tr>
16047           <tr class="entry_cont">
16048             <td class="entry_details" colspan="5">
16049               <p>The HAL must include sensor maximum resolution
16050 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
16051 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
16052             </td>
16053           </tr>
16054
16055           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16056            <!-- end of entry -->
16057         
16058                 
16059           <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
16060             <td class="entry_name
16061              " rowspan="3">
16062               android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
16063             </td>
16064             <td class="entry_type">
16065                 <span class="entry_type_name">float</span>
16066
16067               <span class="entry_type_visibility"> [public]</span>
16068
16069
16070               <span class="entry_type_hwlevel">[legacy] </span>
16071
16072
16073
16074
16075             </td> <!-- entry_type -->
16076
16077             <td class="entry_description">
16078               <p>The maximum ratio between both active area width
16079 and crop region width,<wbr/> and active area height and
16080 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
16081             </td>
16082
16083             <td class="entry_units">
16084               Zoom scale factor
16085             </td>
16086
16087             <td class="entry_range">
16088               <p>&gt;=1</p>
16089             </td>
16090
16091             <td class="entry_tags">
16092               <ul class="entry_tags">
16093                   <li><a href="#tag_BC">BC</a></li>
16094               </ul>
16095             </td>
16096
16097           </tr>
16098           <tr class="entries_header">
16099             <th class="th_details" colspan="5">Details</th>
16100           </tr>
16101           <tr class="entry_cont">
16102             <td class="entry_details" colspan="5">
16103               <p>This represents the maximum amount of zooming possible by
16104 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
16105 window size.<wbr/></p>
16106 <p>Crop regions that have a width or height that is smaller
16107 than this ratio allows will be rounded up to the minimum
16108 allowed size by the camera device.<wbr/></p>
16109             </td>
16110           </tr>
16111
16112
16113           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16114            <!-- end of entry -->
16115         
16116                 
16117           <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
16118             <td class="entry_name
16119                 entry_name_deprecated
16120              " rowspan="3">
16121               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
16122             </td>
16123             <td class="entry_type">
16124                 <span class="entry_type_name">int64</span>
16125                 <span class="entry_type_container">x</span>
16126
16127                 <span class="entry_type_array">
16128                   n
16129                 </span>
16130               <span class="entry_type_visibility"> [hidden]</span>
16131
16132
16133
16134               <span class="entry_type_deprecated">[deprecated] </span>
16135
16136
16137
16138             </td> <!-- entry_type -->
16139
16140             <td class="entry_description">
16141               <p>For each available processed output size (defined in
16142 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
16143 minimum supportable frame duration for that size.<wbr/></p>
16144             </td>
16145
16146             <td class="entry_units">
16147               Nanoseconds
16148             </td>
16149
16150             <td class="entry_range">
16151               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16152             </td>
16153
16154             <td class="entry_tags">
16155               <ul class="entry_tags">
16156                   <li><a href="#tag_BC">BC</a></li>
16157               </ul>
16158             </td>
16159
16160           </tr>
16161           <tr class="entries_header">
16162             <th class="th_details" colspan="5">Details</th>
16163           </tr>
16164           <tr class="entry_cont">
16165             <td class="entry_details" colspan="5">
16166               <p>This should correspond to the frame duration when only that processed
16167 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
16168 set to FAST.<wbr/></p>
16169 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
16170 be &gt;= max(individual stream min durations).<wbr/></p>
16171             </td>
16172           </tr>
16173
16174
16175           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16176            <!-- end of entry -->
16177         
16178                 
16179           <tr class="entry" id="static_android.scaler.availableProcessedSizes">
16180             <td class="entry_name
16181                 entry_name_deprecated
16182              " rowspan="5">
16183               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
16184             </td>
16185             <td class="entry_type">
16186                 <span class="entry_type_name">int32</span>
16187                 <span class="entry_type_container">x</span>
16188
16189                 <span class="entry_type_array">
16190                   n x 2
16191                 </span>
16192               <span class="entry_type_visibility"> [hidden as size]</span>
16193
16194
16195
16196               <span class="entry_type_deprecated">[deprecated] </span>
16197
16198
16199
16200             </td> <!-- entry_type -->
16201
16202             <td class="entry_description">
16203               <p>The resolutions available for use with
16204 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
16205 platform opaque YUV/<wbr/>RGB streams to the GPU or video
16206 encoders.<wbr/></p>
16207             </td>
16208
16209             <td class="entry_units">
16210             </td>
16211
16212             <td class="entry_range">
16213               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16214             </td>
16215
16216             <td class="entry_tags">
16217               <ul class="entry_tags">
16218                   <li><a href="#tag_BC">BC</a></li>
16219               </ul>
16220             </td>
16221
16222           </tr>
16223           <tr class="entries_header">
16224             <th class="th_details" colspan="5">Details</th>
16225           </tr>
16226           <tr class="entry_cont">
16227             <td class="entry_details" colspan="5">
16228               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
16229 <p>For a given use case,<wbr/> the actual maximum supported resolution
16230 may be lower than what is listed here,<wbr/> depending on the destination
16231 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
16232 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
16233 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
16234 can provide.<wbr/></p>
16235 <p>Please reference the documentation for the image data destination to
16236 check if it limits the maximum size for image data.<wbr/></p>
16237             </td>
16238           </tr>
16239
16240           <tr class="entries_header">
16241             <th class="th_details" colspan="5">HAL Implementation Details</th>
16242           </tr>
16243           <tr class="entry_cont">
16244             <td class="entry_details" colspan="5">
16245               <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/>
16246 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>
16247 and each below resolution if it is smaller than or equal to the sensor
16248 maximum resolution (if they are not listed in JPEG sizes already):</p>
16249 <ul>
16250 <li>240p (320 x 240)</li>
16251 <li>480p (640 x 480)</li>
16252 <li>720p (1280 x 720)</li>
16253 <li>1080p (1920 x 1080)</li>
16254 </ul>
16255 <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/>
16256 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
16257             </td>
16258           </tr>
16259
16260           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16261            <!-- end of entry -->
16262         
16263                 
16264           <tr class="entry" id="static_android.scaler.availableRawMinDurations">
16265             <td class="entry_name
16266                 entry_name_deprecated
16267              " rowspan="3">
16268               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
16269             </td>
16270             <td class="entry_type">
16271                 <span class="entry_type_name">int64</span>
16272                 <span class="entry_type_container">x</span>
16273
16274                 <span class="entry_type_array">
16275                   n
16276                 </span>
16277               <span class="entry_type_visibility"> [system]</span>
16278
16279
16280
16281               <span class="entry_type_deprecated">[deprecated] </span>
16282
16283
16284
16285             </td> <!-- entry_type -->
16286
16287             <td class="entry_description">
16288               <p>For each available raw output size (defined in
16289 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
16290 supportable frame duration for that size.<wbr/></p>
16291             </td>
16292
16293             <td class="entry_units">
16294               Nanoseconds
16295             </td>
16296
16297             <td class="entry_range">
16298               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16299             </td>
16300
16301             <td class="entry_tags">
16302               <ul class="entry_tags">
16303                   <li><a href="#tag_BC">BC</a></li>
16304               </ul>
16305             </td>
16306
16307           </tr>
16308           <tr class="entries_header">
16309             <th class="th_details" colspan="5">Details</th>
16310           </tr>
16311           <tr class="entry_cont">
16312             <td class="entry_details" colspan="5">
16313               <p>Should correspond to the frame duration when only the raw stream is
16314 active.<wbr/></p>
16315 <p>When multiple streams are configured,<wbr/> the minimum
16316 frame duration will be &gt;= max(individual stream min
16317 durations)</p>
16318             </td>
16319           </tr>
16320
16321
16322           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16323            <!-- end of entry -->
16324         
16325                 
16326           <tr class="entry" id="static_android.scaler.availableRawSizes">
16327             <td class="entry_name
16328                 entry_name_deprecated
16329              " rowspan="1">
16330               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
16331             </td>
16332             <td class="entry_type">
16333                 <span class="entry_type_name">int32</span>
16334                 <span class="entry_type_container">x</span>
16335
16336                 <span class="entry_type_array">
16337                   n x 2
16338                 </span>
16339               <span class="entry_type_visibility"> [system as size]</span>
16340
16341
16342
16343               <span class="entry_type_deprecated">[deprecated] </span>
16344
16345
16346
16347             </td> <!-- entry_type -->
16348
16349             <td class="entry_description">
16350               <p>The resolutions available for use with raw
16351 sensor output streams,<wbr/> listed as width,<wbr/>
16352 height</p>
16353             </td>
16354
16355             <td class="entry_units">
16356             </td>
16357
16358             <td class="entry_range">
16359               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16360             </td>
16361
16362             <td class="entry_tags">
16363             </td>
16364
16365           </tr>
16366
16367
16368           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16369            <!-- end of entry -->
16370         
16371                 
16372           <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
16373             <td class="entry_name
16374              " rowspan="5">
16375               android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
16376             </td>
16377             <td class="entry_type">
16378                 <span class="entry_type_name">int32</span>
16379
16380               <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
16381
16382
16383
16384
16385
16386
16387             </td> <!-- entry_type -->
16388
16389             <td class="entry_description">
16390               <p>The mapping of image formats that are supported by this
16391 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
16392             </td>
16393
16394             <td class="entry_units">
16395             </td>
16396
16397             <td class="entry_range">
16398             </td>
16399
16400             <td class="entry_tags">
16401               <ul class="entry_tags">
16402                   <li><a href="#tag_REPROC">REPROC</a></li>
16403               </ul>
16404             </td>
16405
16406           </tr>
16407           <tr class="entries_header">
16408             <th class="th_details" colspan="5">Details</th>
16409           </tr>
16410           <tr class="entry_cont">
16411             <td class="entry_details" colspan="5">
16412               <p>All camera devices with at least 1
16413 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
16414 available input format.<wbr/></p>
16415 <p>The camera device will support the following map of formats,<wbr/>
16416 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
16417 <table>
16418 <thead>
16419 <tr>
16420 <th align="left">Input Format</th>
16421 <th align="left">Output Format</th>
16422 <th align="left">Capability</th>
16423 </tr>
16424 </thead>
16425 <tbody>
16426 <tr>
16427 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
16428 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
16429 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
16430 </tr>
16431 <tr>
16432 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
16433 <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>
16434 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
16435 </tr>
16436 <tr>
16437 <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>
16438 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
16439 <td align="left">YUV_<wbr/>REPROCESSING</td>
16440 </tr>
16441 <tr>
16442 <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>
16443 <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>
16444 <td align="left">YUV_<wbr/>REPROCESSING</td>
16445 </tr>
16446 </tbody>
16447 </table>
16448 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
16449 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
16450 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
16451 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
16452 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>
16453 <p>Attempting to configure an input stream with output streams not
16454 listed as available in this map is not valid.<wbr/></p>
16455             </td>
16456           </tr>
16457
16458           <tr class="entries_header">
16459             <th class="th_details" colspan="5">HAL Implementation Details</th>
16460           </tr>
16461           <tr class="entry_cont">
16462             <td class="entry_details" colspan="5">
16463               <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
16464 of the image format enumerations.<wbr/> The PRIVATE format refers to the
16465 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
16466 the actual format by using the gralloc usage flags.<wbr/>
16467 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
16468 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
16469 See camera3.<wbr/>h for more details.<wbr/></p>
16470 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
16471 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
16472 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
16473 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
16474 <p>A code sample to read/<wbr/>write this encoding (with a device that
16475 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
16476 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
16477 <pre><code>//<wbr/> reading
16478 int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
16479 for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
16480     int32_<wbr/>t format = contents[i++];
16481     int32_<wbr/>t length = contents[i++];
16482     int32_<wbr/>t output_<wbr/>formats[length];
16483     memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
16484            length * sizeof(int32_<wbr/>t));
16485     i += length;
16486 }
16487
16488 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
16489 int32_<wbr/>t[] contents = {
16490   IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
16491   YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
16492 };
16493 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
16494       sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
16495 </code></pre>
16496 <p>If the HAL claims to support any of the capabilities listed in the
16497 above details,<wbr/> then it must also support all the input-output
16498 combinations listed for that capability.<wbr/> It can optionally support
16499 additional formats if it so chooses.<wbr/></p>
16500             </td>
16501           </tr>
16502
16503           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16504            <!-- end of entry -->
16505         
16506                 
16507           <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
16508             <td class="entry_name
16509              " rowspan="5">
16510               android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
16511             </td>
16512             <td class="entry_type">
16513                 <span class="entry_type_name entry_type_name_enum">int32</span>
16514                 <span class="entry_type_container">x</span>
16515
16516                 <span class="entry_type_array">
16517                   n x 4
16518                 </span>
16519               <span class="entry_type_visibility"> [hidden as streamConfiguration]</span>
16520
16521
16522               <span class="entry_type_hwlevel">[legacy] </span>
16523
16524
16525
16526                 <ul class="entry_type_enum">
16527                   <li>
16528                     <span class="entry_type_enum_name">OUTPUT</span>
16529                   </li>
16530                   <li>
16531                     <span class="entry_type_enum_name">INPUT</span>
16532                   </li>
16533                 </ul>
16534
16535             </td> <!-- entry_type -->
16536
16537             <td class="entry_description">
16538               <p>The available stream configurations that this
16539 camera device supports
16540 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
16541             </td>
16542
16543             <td class="entry_units">
16544             </td>
16545
16546             <td class="entry_range">
16547             </td>
16548
16549             <td class="entry_tags">
16550             </td>
16551
16552           </tr>
16553           <tr class="entries_header">
16554             <th class="th_details" colspan="5">Details</th>
16555           </tr>
16556           <tr class="entry_cont">
16557             <td class="entry_details" colspan="5">
16558               <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
16559 tuples.<wbr/></p>
16560 <p>For a given use case,<wbr/> the actual maximum supported resolution
16561 may be lower than what is listed here,<wbr/> depending on the destination
16562 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
16563 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
16564 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
16565 can provide.<wbr/></p>
16566 <p>Please reference the documentation for the image data destination to
16567 check if it limits the maximum size for image data.<wbr/></p>
16568 <p>Not all output formats may be supported in a configuration with
16569 an input stream of a particular format.<wbr/> For more details,<wbr/> see
16570 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
16571 <p>The following table describes the minimum required output stream
16572 configurations based on the hardware level
16573 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
16574 <table>
16575 <thead>
16576 <tr>
16577 <th align="center">Format</th>
16578 <th align="center">Size</th>
16579 <th align="center">Hardware Level</th>
16580 <th align="center">Notes</th>
16581 </tr>
16582 </thead>
16583 <tbody>
16584 <tr>
16585 <td align="center">JPEG</td>
16586 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
16587 <td align="center">Any</td>
16588 <td align="center"></td>
16589 </tr>
16590 <tr>
16591 <td align="center">JPEG</td>
16592 <td align="center">1920x1080 (1080p)</td>
16593 <td align="center">Any</td>
16594 <td align="center">if 1080p &lt;= activeArraySize</td>
16595 </tr>
16596 <tr>
16597 <td align="center">JPEG</td>
16598 <td align="center">1280x720 (720)</td>
16599 <td align="center">Any</td>
16600 <td align="center">if 720p &lt;= activeArraySize</td>
16601 </tr>
16602 <tr>
16603 <td align="center">JPEG</td>
16604 <td align="center">640x480 (480p)</td>
16605 <td align="center">Any</td>
16606 <td align="center">if 480p &lt;= activeArraySize</td>
16607 </tr>
16608 <tr>
16609 <td align="center">JPEG</td>
16610 <td align="center">320x240 (240p)</td>
16611 <td align="center">Any</td>
16612 <td align="center">if 240p &lt;= activeArraySize</td>
16613 </tr>
16614 <tr>
16615 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
16616 <td align="center">all output sizes available for JPEG</td>
16617 <td align="center">FULL</td>
16618 <td align="center"></td>
16619 </tr>
16620 <tr>
16621 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
16622 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
16623 <td align="center">LIMITED</td>
16624 <td align="center"></td>
16625 </tr>
16626 <tr>
16627 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
16628 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
16629 <td align="center">Any</td>
16630 <td align="center"></td>
16631 </tr>
16632 </tbody>
16633 </table>
16634 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
16635 mandatory stream configurations on a per-capability basis.<wbr/></p>
16636             </td>
16637           </tr>
16638
16639           <tr class="entries_header">
16640             <th class="th_details" colspan="5">HAL Implementation Details</th>
16641           </tr>
16642           <tr class="entry_cont">
16643             <td class="entry_details" colspan="5">
16644               <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
16645 of sensor maximum resolution for JPEG formats (regardless of hardware
16646 level).<wbr/></p>
16647 <p>(The following is a rewording of the above required table):</p>
16648 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
16649 <ul>
16650 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
16651 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
16652 (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/>
16653 it does not have to be included in the supported JPEG sizes.<wbr/></li>
16654 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
16655 the dimensions being a multiple of 16.<wbr/></li>
16656 </ul>
16657 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
16658 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
16659 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
16660 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
16661 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
16662 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
16663 3264x2448.<wbr/></p>
16664 <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/>
16665 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
16666 here as output streams.<wbr/></p>
16667 <p>It must also include each below resolution if it is smaller than or
16668 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
16669 formats),<wbr/> as output streams:</p>
16670 <ul>
16671 <li>240p (320 x 240)</li>
16672 <li>480p (640 x 480)</li>
16673 <li>720p (1280 x 720)</li>
16674 <li>1080p (1920 x 1080)</li>
16675 </ul>
16676 <p>For LIMITED capability devices
16677 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
16678 the HAL only has to list up to the maximum video size
16679 supported by the device.<wbr/></p>
16680 <p>Regardless of hardware level,<wbr/> every output resolution available for
16681 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
16682 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
16683 <ul>
16684 <li>availableFormats</li>
16685 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
16686 </ul>
16687             </td>
16688           </tr>
16689
16690           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16691            <!-- end of entry -->
16692         
16693                 
16694           <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
16695             <td class="entry_name
16696              " rowspan="3">
16697               android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
16698             </td>
16699             <td class="entry_type">
16700                 <span class="entry_type_name">int64</span>
16701                 <span class="entry_type_container">x</span>
16702
16703                 <span class="entry_type_array">
16704                   4 x n
16705                 </span>
16706               <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
16707
16708
16709               <span class="entry_type_hwlevel">[legacy] </span>
16710
16711
16712
16713
16714             </td> <!-- entry_type -->
16715
16716             <td class="entry_description">
16717               <p>This lists the minimum frame duration for each
16718 format/<wbr/>size combination.<wbr/></p>
16719             </td>
16720
16721             <td class="entry_units">
16722               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
16723             </td>
16724
16725             <td class="entry_range">
16726             </td>
16727
16728             <td class="entry_tags">
16729               <ul class="entry_tags">
16730                   <li><a href="#tag_V1">V1</a></li>
16731               </ul>
16732             </td>
16733
16734           </tr>
16735           <tr class="entries_header">
16736             <th class="th_details" colspan="5">Details</th>
16737           </tr>
16738           <tr class="entry_cont">
16739             <td class="entry_details" colspan="5">
16740               <p>This should correspond to the frame duration when only that
16741 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
16742 set to either OFF or FAST.<wbr/></p>
16743 <p>When multiple streams are used in a request,<wbr/> the minimum frame
16744 duration will be max(individual stream min durations).<wbr/></p>
16745 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
16746 is the same regardless of whether the stream is input or output.<wbr/></p>
16747 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
16748 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
16749 calculating the max frame rate.<wbr/></p>
16750 <p>(Keep in sync with
16751 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
16752             </td>
16753           </tr>
16754
16755
16756           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16757            <!-- end of entry -->
16758         
16759                 
16760           <tr class="entry" id="static_android.scaler.availableStallDurations">
16761             <td class="entry_name
16762              " rowspan="5">
16763               android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
16764             </td>
16765             <td class="entry_type">
16766                 <span class="entry_type_name">int64</span>
16767                 <span class="entry_type_container">x</span>
16768
16769                 <span class="entry_type_array">
16770                   4 x n
16771                 </span>
16772               <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
16773
16774
16775               <span class="entry_type_hwlevel">[legacy] </span>
16776
16777
16778
16779
16780             </td> <!-- entry_type -->
16781
16782             <td class="entry_description">
16783               <p>This lists the maximum stall duration for each
16784 output format/<wbr/>size combination.<wbr/></p>
16785             </td>
16786
16787             <td class="entry_units">
16788               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
16789             </td>
16790
16791             <td class="entry_range">
16792             </td>
16793
16794             <td class="entry_tags">
16795               <ul class="entry_tags">
16796                   <li><a href="#tag_V1">V1</a></li>
16797               </ul>
16798             </td>
16799
16800           </tr>
16801           <tr class="entries_header">
16802             <th class="th_details" colspan="5">Details</th>
16803           </tr>
16804           <tr class="entry_cont">
16805             <td class="entry_details" colspan="5">
16806               <p>A stall duration is how much extra time would get added
16807 to the normal minimum frame duration for a repeating request
16808 that has streams with non-zero stall.<wbr/></p>
16809 <p>For example,<wbr/> consider JPEG captures which have the following
16810 characteristics:</p>
16811 <ul>
16812 <li>JPEG streams act like processed YUV streams in requests for which
16813 they are not included; in requests in which they are directly
16814 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
16815 JPEG stream requires the underlying YUV data to always be ready for
16816 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
16817 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
16818 <li>The JPEG processor can run concurrently to the rest of the camera
16819 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
16820 </ul>
16821 <p>In other words,<wbr/> using a repeating YUV request would result
16822 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
16823 JPEG request is submitted periodically,<wbr/> the frame rate will stay
16824 at 30 FPS (as long as we wait for the previous JPEG to return each
16825 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
16826 the frame rate will drop from 30 FPS.<wbr/></p>
16827 <p>In general,<wbr/> submitting a new request with a non-0 stall time
16828 stream will <em>not</em> cause a frame rate drop unless there are still
16829 outstanding buffers for that stream from previous requests.<wbr/></p>
16830 <p>Submitting a repeating request with streams (call this <code>S</code>)
16831 is the same as setting the minimum frame duration from
16832 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
16833 the maximum stall duration for <code>S</code>.<wbr/></p>
16834 <p>If interleaving requests with and without a stall duration,<wbr/>
16835 a request will stall by the maximum of the remaining times
16836 for each can-stall stream with outstanding buffers.<wbr/></p>
16837 <p>This means that a stalling request will not have an exposure start
16838 until the stall has completed.<wbr/></p>
16839 <p>This should correspond to the stall duration when only that stream is
16840 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
16841 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
16842 effectively results in an indeterminate stall duration for all
16843 streams in a request (the regular stall calculation rules are
16844 ignored).<wbr/></p>
16845 <p>The following formats may always have a stall duration:</p>
16846 <ul>
16847 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
16848 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
16849 </ul>
16850 <p>The following formats will never have a stall duration:</p>
16851 <ul>
16852 <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>
16853 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
16854 </ul>
16855 <p>All other formats may or may not have an allowed stall duration on
16856 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
16857 for more details.<wbr/></p>
16858 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
16859 calculating the max frame rate (absent stalls).<wbr/></p>
16860 <p>(Keep up to date with
16861 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a> )</p>
16862             </td>
16863           </tr>
16864
16865           <tr class="entries_header">
16866             <th class="th_details" colspan="5">HAL Implementation Details</th>
16867           </tr>
16868           <tr class="entry_cont">
16869             <td class="entry_details" colspan="5">
16870               <p>If possible,<wbr/> it is recommended that all non-JPEG formats
16871 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
16872 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
16873             </td>
16874           </tr>
16875
16876           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
16877            <!-- end of entry -->
16878         
16879                 
16880           <tr class="entry" id="static_android.scaler.streamConfigurationMap">
16881             <td class="entry_name
16882              " rowspan="5">
16883               android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
16884             </td>
16885             <td class="entry_type">
16886                 <span class="entry_type_name">int32</span>
16887
16888               <span class="entry_type_visibility"> [public as streamConfigurationMap]</span>
16889
16890               <span class="entry_type_synthetic">[synthetic] </span>
16891
16892               <span class="entry_type_hwlevel">[legacy] </span>
16893
16894
16895
16896
16897             </td> <!-- entry_type -->
16898
16899             <td class="entry_description">
16900               <p>The available stream configurations that this
16901 camera device supports; also includes the minimum frame durations
16902 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
16903             </td>
16904
16905             <td class="entry_units">
16906             </td>
16907
16908             <td class="entry_range">
16909             </td>
16910
16911             <td class="entry_tags">
16912             </td>
16913
16914           </tr>
16915           <tr class="entries_header">
16916             <th class="th_details" colspan="5">Details</th>
16917           </tr>
16918           <tr class="entry_cont">
16919             <td class="entry_details" colspan="5">
16920               <p>All camera devices will support sensor maximum resolution (defined by
16921 <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>
16922 <p>For a given use case,<wbr/> the actual maximum supported resolution
16923 may be lower than what is listed here,<wbr/> depending on the destination
16924 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
16925 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
16926 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
16927 can provide.<wbr/></p>
16928 <p>Please reference the documentation for the image data destination to
16929 check if it limits the maximum size for image data.<wbr/></p>
16930 <p>The following table describes the minimum required output stream
16931 configurations based on the hardware level
16932 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
16933 <table>
16934 <thead>
16935 <tr>
16936 <th align="center">Format</th>
16937 <th align="center">Size</th>
16938 <th align="center">Hardware Level</th>
16939 <th align="center">Notes</th>
16940 </tr>
16941 </thead>
16942 <tbody>
16943 <tr>
16944 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
16945 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
16946 <td align="center">Any</td>
16947 <td align="center"></td>
16948 </tr>
16949 <tr>
16950 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
16951 <td align="center">1920x1080 (1080p)</td>
16952 <td align="center">Any</td>
16953 <td align="center">if 1080p &lt;= activeArraySize</td>
16954 </tr>
16955 <tr>
16956 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
16957 <td align="center">1280x720 (720)</td>
16958 <td align="center">Any</td>
16959 <td align="center">if 720p &lt;= activeArraySize</td>
16960 </tr>
16961 <tr>
16962 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
16963 <td align="center">640x480 (480p)</td>
16964 <td align="center">Any</td>
16965 <td align="center">if 480p &lt;= activeArraySize</td>
16966 </tr>
16967 <tr>
16968 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
16969 <td align="center">320x240 (240p)</td>
16970 <td align="center">Any</td>
16971 <td align="center">if 240p &lt;= activeArraySize</td>
16972 </tr>
16973 <tr>
16974 <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>
16975 <td align="center">all output sizes available for JPEG</td>
16976 <td align="center">FULL</td>
16977 <td align="center"></td>
16978 </tr>
16979 <tr>
16980 <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>
16981 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
16982 <td align="center">LIMITED</td>
16983 <td align="center"></td>
16984 </tr>
16985 <tr>
16986 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
16987 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
16988 <td align="center">Any</td>
16989 <td align="center"></td>
16990 </tr>
16991 </tbody>
16992 </table>
16993 <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
16994 stream configurations on a per-capability basis.<wbr/></p>
16995             </td>
16996           </tr>
16997
16998           <tr class="entries_header">
16999             <th class="th_details" colspan="5">HAL Implementation Details</th>
17000           </tr>
17001           <tr class="entry_cont">
17002             <td class="entry_details" colspan="5">
17003               <p>Do not set this property directly
17004 (it is synthetic and will not be available at the HAL layer);
17005 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
17006 <p>Not all output formats may be supported in a configuration with
17007 an input stream of a particular format.<wbr/> For more details,<wbr/> see
17008 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
17009 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
17010 of sensor maximum resolution for JPEG formats (regardless of hardware
17011 level).<wbr/></p>
17012 <p>(The following is a rewording of the above required table):</p>
17013 <p>The HAL must include sensor maximum resolution (defined by
17014 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
17015 <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/>
17016 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
17017 here as output streams.<wbr/></p>
17018 <p>It must also include each below resolution if it is smaller than or
17019 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
17020 formats),<wbr/> as output streams:</p>
17021 <ul>
17022 <li>240p (320 x 240)</li>
17023 <li>480p (640 x 480)</li>
17024 <li>720p (1280 x 720)</li>
17025 <li>1080p (1920 x 1080)</li>
17026 </ul>
17027 <p>For LIMITED capability devices
17028 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
17029 the HAL only has to list up to the maximum video size
17030 supported by the device.<wbr/></p>
17031 <p>Regardless of hardware level,<wbr/> every output resolution available for
17032 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
17033 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
17034 <ul>
17035 <li>availableFormats</li>
17036 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
17037 </ul>
17038             </td>
17039           </tr>
17040
17041           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17042            <!-- end of entry -->
17043         
17044                 
17045           <tr class="entry" id="static_android.scaler.croppingType">
17046             <td class="entry_name
17047              " rowspan="3">
17048               android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
17049             </td>
17050             <td class="entry_type">
17051                 <span class="entry_type_name entry_type_name_enum">byte</span>
17052
17053               <span class="entry_type_visibility"> [public]</span>
17054
17055
17056               <span class="entry_type_hwlevel">[legacy] </span>
17057
17058
17059
17060                 <ul class="entry_type_enum">
17061                   <li>
17062                     <span class="entry_type_enum_name">CENTER_ONLY</span>
17063                     <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
17064                   </li>
17065                   <li>
17066                     <span class="entry_type_enum_name">FREEFORM</span>
17067                     <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
17068                   </li>
17069                 </ul>
17070
17071             </td> <!-- entry_type -->
17072
17073             <td class="entry_description">
17074               <p>The crop type that this camera device supports.<wbr/></p>
17075             </td>
17076
17077             <td class="entry_units">
17078             </td>
17079
17080             <td class="entry_range">
17081             </td>
17082
17083             <td class="entry_tags">
17084             </td>
17085
17086           </tr>
17087           <tr class="entries_header">
17088             <th class="th_details" colspan="5">Details</th>
17089           </tr>
17090           <tr class="entry_cont">
17091             <td class="entry_details" colspan="5">
17092               <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
17093 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
17094 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>)
17095 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
17096 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
17097 <p>Camera devices that support FREEFORM cropping will support any crop region that
17098 is inside of the active array.<wbr/> The camera device will apply the same crop region and
17099 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>
17100 <p>FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL) will support
17101 FREEFORM cropping.<wbr/> LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
17102             </td>
17103           </tr>
17104
17105
17106           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17107            <!-- end of entry -->
17108         
17109         
17110
17111       <!-- end of kind -->
17112       </tbody>
17113       <tr><td colspan="6" class="kind">dynamic</td></tr>
17114
17115       <thead class="entries_header">
17116         <tr>
17117           <th class="th_name">Property Name</th>
17118           <th class="th_type">Type</th>
17119           <th class="th_description">Description</th>
17120           <th class="th_units">Units</th>
17121           <th class="th_range">Range</th>
17122           <th class="th_tags">Tags</th>
17123         </tr>
17124       </thead>
17125
17126       <tbody>
17127
17128         
17129
17130         
17131
17132         
17133
17134         
17135
17136                 
17137           <tr class="entry" id="dynamic_android.scaler.cropRegion">
17138             <td class="entry_name
17139              " rowspan="5">
17140               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
17141             </td>
17142             <td class="entry_type">
17143                 <span class="entry_type_name">int32</span>
17144                 <span class="entry_type_container">x</span>
17145
17146                 <span class="entry_type_array">
17147                   4
17148                 </span>
17149               <span class="entry_type_visibility"> [public as rectangle]</span>
17150
17151
17152               <span class="entry_type_hwlevel">[legacy] </span>
17153
17154
17155
17156
17157             </td> <!-- entry_type -->
17158
17159             <td class="entry_description">
17160               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
17161             </td>
17162
17163             <td class="entry_units">
17164               Pixel coordinates relative to
17165           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
17166             </td>
17167
17168             <td class="entry_range">
17169             </td>
17170
17171             <td class="entry_tags">
17172               <ul class="entry_tags">
17173                   <li><a href="#tag_BC">BC</a></li>
17174               </ul>
17175             </td>
17176
17177           </tr>
17178           <tr class="entries_header">
17179             <th class="th_details" colspan="5">Details</th>
17180           </tr>
17181           <tr class="entry_cont">
17182             <td class="entry_details" colspan="5">
17183               <p>This control can be used to implement digital zoom.<wbr/></p>
17184 <p>The crop region coordinate system is based off
17185 <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
17186 top-left corner of the sensor active array.<wbr/></p>
17187 <p>Output streams use this rectangle to produce their output,<wbr/>
17188 cropping to a smaller region if necessary to maintain the
17189 stream's aspect ratio,<wbr/> then scaling the sensor input to
17190 match the output's configured resolution.<wbr/></p>
17191 <p>The crop region is applied after the RAW to other color
17192 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
17193 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
17194 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
17195 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
17196 be done to maximize the final pixel area of the stream.<wbr/></p>
17197 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
17198 ratio,<wbr/> then 4:3 streams will use the exact crop
17199 region.<wbr/> 16:9 streams will further crop vertically
17200 (letterbox).<wbr/></p>
17201 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
17202 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
17203 streams will match exactly.<wbr/> These additional crops will
17204 be centered within the crop region.<wbr/></p>
17205 <p>The width and height of the crop region cannot
17206 be set to be smaller than
17207 <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
17208 <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>
17209 <p>The camera device may adjust the crop region to account
17210 for rounding and other hardware requirements; the final
17211 crop region used will be included in the output capture
17212 result.<wbr/></p>
17213             </td>
17214           </tr>
17215
17216           <tr class="entries_header">
17217             <th class="th_details" colspan="5">HAL Implementation Details</th>
17218           </tr>
17219           <tr class="entry_cont">
17220             <td class="entry_details" colspan="5">
17221               <p>The output streams must maintain square pixels at all
17222 times,<wbr/> no matter what the relative aspect ratios of the
17223 crop region and the stream are.<wbr/>  Negative values for
17224 corner are allowed for raw output if full pixel array is
17225 larger than active pixel array.<wbr/> Width and height may be
17226 rounded to nearest larger supportable width,<wbr/> especially
17227 for raw output,<wbr/> where only a few fixed scales may be
17228 possible.<wbr/></p>
17229 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
17230             </td>
17231           </tr>
17232
17233           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17234            <!-- end of entry -->
17235         
17236         
17237
17238       <!-- end of kind -->
17239       </tbody>
17240
17241   <!-- end of section -->
17242   <tr><td colspan="6" id="section_sensor" class="section">sensor</td></tr>
17243
17244
17245       <tr><td colspan="6" class="kind">controls</td></tr>
17246
17247       <thead class="entries_header">
17248         <tr>
17249           <th class="th_name">Property Name</th>
17250           <th class="th_type">Type</th>
17251           <th class="th_description">Description</th>
17252           <th class="th_units">Units</th>
17253           <th class="th_range">Range</th>
17254           <th class="th_tags">Tags</th>
17255         </tr>
17256       </thead>
17257
17258       <tbody>
17259
17260         
17261
17262         
17263
17264         
17265
17266         
17267
17268                 
17269           <tr class="entry" id="controls_android.sensor.exposureTime">
17270             <td class="entry_name
17271              " rowspan="3">
17272               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
17273             </td>
17274             <td class="entry_type">
17275                 <span class="entry_type_name">int64</span>
17276
17277               <span class="entry_type_visibility"> [public]</span>
17278
17279
17280               <span class="entry_type_hwlevel">[full] </span>
17281
17282
17283
17284
17285             </td> <!-- entry_type -->
17286
17287             <td class="entry_description">
17288               <p>Duration each pixel is exposed to
17289 light.<wbr/></p>
17290             </td>
17291
17292             <td class="entry_units">
17293               Nanoseconds
17294             </td>
17295
17296             <td class="entry_range">
17297               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
17298             </td>
17299
17300             <td class="entry_tags">
17301               <ul class="entry_tags">
17302                   <li><a href="#tag_V1">V1</a></li>
17303               </ul>
17304             </td>
17305
17306           </tr>
17307           <tr class="entries_header">
17308             <th class="th_details" colspan="5">Details</th>
17309           </tr>
17310           <tr class="entry_cont">
17311             <td class="entry_details" colspan="5">
17312               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
17313 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
17314 The final exposure time used will be available in the output capture result.<wbr/></p>
17315 <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
17316 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
17317             </td>
17318           </tr>
17319
17320
17321           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17322            <!-- end of entry -->
17323         
17324                 
17325           <tr class="entry" id="controls_android.sensor.frameDuration">
17326             <td class="entry_name
17327              " rowspan="5">
17328               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
17329             </td>
17330             <td class="entry_type">
17331                 <span class="entry_type_name">int64</span>
17332
17333               <span class="entry_type_visibility"> [public]</span>
17334
17335
17336               <span class="entry_type_hwlevel">[full] </span>
17337
17338
17339
17340
17341             </td> <!-- entry_type -->
17342
17343             <td class="entry_description">
17344               <p>Duration from start of frame exposure to
17345 start of next frame exposure.<wbr/></p>
17346             </td>
17347
17348             <td class="entry_units">
17349               Nanoseconds
17350             </td>
17351
17352             <td class="entry_range">
17353               <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
17354 <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
17355 is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
17356             </td>
17357
17358             <td class="entry_tags">
17359               <ul class="entry_tags">
17360                   <li><a href="#tag_V1">V1</a></li>
17361               </ul>
17362             </td>
17363
17364           </tr>
17365           <tr class="entries_header">
17366             <th class="th_details" colspan="5">Details</th>
17367           </tr>
17368           <tr class="entry_cont">
17369             <td class="entry_details" colspan="5">
17370               <p>The maximum frame rate that can be supported by a camera subsystem is
17371 a function of many factors:</p>
17372 <ul>
17373 <li>Requested resolutions of output image streams</li>
17374 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
17375 <li>The bandwidth of the imager interface</li>
17376 <li>The bandwidth of the various ISP processing blocks</li>
17377 </ul>
17378 <p>Since these factors can vary greatly between different ISPs and
17379 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
17380 restrictions with as simple a model as possible.<wbr/></p>
17381 <p>The model presented has the following characteristics:</p>
17382 <ul>
17383 <li>The image sensor is always configured to output the smallest
17384 resolution possible given the application's requested output stream
17385 sizes.<wbr/>  The smallest resolution is defined as being at least as large
17386 as the largest requested output stream size; the camera pipeline must
17387 never digitally upsample sensor data when the crop region covers the
17388 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
17389 resolutions are configured,<wbr/> the sensor can provide a higher frame
17390 rate.<wbr/></li>
17391 <li>Since any request may use any or all the currently configured
17392 output streams,<wbr/> the sensor and ISP must be configured to support
17393 scaling a single capture to all the streams at the same time.<wbr/>  This
17394 means the camera pipeline must be ready to produce the largest
17395 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
17396 frame rate of a given configured stream set is governed only by the
17397 largest requested stream resolution.<wbr/></li>
17398 <li>Using more than one output stream in a request does not affect the
17399 frame duration.<wbr/></li>
17400 <li>Certain format-streams may need to do additional background processing
17401 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
17402 can run concurrently to the rest of the camera pipeline,<wbr/> but
17403 cannot process more than 1 capture at a time.<wbr/></li>
17404 </ul>
17405 <p>The necessary information for the application,<wbr/> given the model above,<wbr/>
17406 is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
17407 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
17408 These are used to determine the maximum frame rate /<wbr/> minimum frame
17409 duration that is possible for a given stream configuration.<wbr/></p>
17410 <p>Specifically,<wbr/> the application can use the following rules to
17411 determine the minimum frame duration it can request from the camera
17412 device:</p>
17413 <ol>
17414 <li>Let the set of currently configured input/<wbr/>output streams
17415 be called <code>S</code>.<wbr/></li>
17416 <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
17417 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>
17418 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
17419 called <code>F</code>.<wbr/></li>
17420 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
17421 for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
17422 used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
17423 </ol>
17424 <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>
17425 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
17426 determines the steady state frame rate that the application will get
17427 if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
17428 request be called <code>Rsimple</code>.<wbr/></p>
17429 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
17430 by a single capture of a new request <code>Rstall</code> (which has at least
17431 one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
17432 same minimum frame duration this will not cause a frame rate loss
17433 if all buffers from the previous <code>Rstall</code> have already been
17434 delivered.<wbr/></p>
17435 <p>For more details about stalling,<wbr/> see
17436 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
17437 <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
17438 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
17439             </td>
17440           </tr>
17441
17442           <tr class="entries_header">
17443             <th class="th_details" colspan="5">HAL Implementation Details</th>
17444           </tr>
17445           <tr class="entry_cont">
17446             <td class="entry_details" colspan="5">
17447               <p>For more details about stalling,<wbr/> see
17448 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
17449             </td>
17450           </tr>
17451
17452           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17453            <!-- end of entry -->
17454         
17455                 
17456           <tr class="entry" id="controls_android.sensor.sensitivity">
17457             <td class="entry_name
17458              " rowspan="5">
17459               android.<wbr/>sensor.<wbr/>sensitivity
17460             </td>
17461             <td class="entry_type">
17462                 <span class="entry_type_name">int32</span>
17463
17464               <span class="entry_type_visibility"> [public]</span>
17465
17466
17467               <span class="entry_type_hwlevel">[full] </span>
17468
17469
17470
17471
17472             </td> <!-- entry_type -->
17473
17474             <td class="entry_description">
17475               <p>The amount of gain applied to sensor data
17476 before processing.<wbr/></p>
17477             </td>
17478
17479             <td class="entry_units">
17480               ISO arithmetic units
17481             </td>
17482
17483             <td class="entry_range">
17484               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
17485             </td>
17486
17487             <td class="entry_tags">
17488               <ul class="entry_tags">
17489                   <li><a href="#tag_V1">V1</a></li>
17490               </ul>
17491             </td>
17492
17493           </tr>
17494           <tr class="entries_header">
17495             <th class="th_details" colspan="5">Details</th>
17496           </tr>
17497           <tr class="entry_cont">
17498             <td class="entry_details" colspan="5">
17499               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
17500 as defined in ISO 12232:2006.<wbr/></p>
17501 <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
17502 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
17503 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
17504 <p>If the camera device cannot apply the exact sensitivity
17505 requested,<wbr/> it will reduce the gain to the nearest supported
17506 value.<wbr/> The final sensitivity used will be available in the
17507 output capture result.<wbr/></p>
17508             </td>
17509           </tr>
17510
17511           <tr class="entries_header">
17512             <th class="th_details" colspan="5">HAL Implementation Details</th>
17513           </tr>
17514           <tr class="entry_cont">
17515             <td class="entry_details" colspan="5">
17516               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
17517             </td>
17518           </tr>
17519
17520           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17521            <!-- end of entry -->
17522         
17523                 
17524           <tr class="entry" id="controls_android.sensor.testPatternData">
17525             <td class="entry_name
17526              " rowspan="5">
17527               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
17528             </td>
17529             <td class="entry_type">
17530                 <span class="entry_type_name">int32</span>
17531                 <span class="entry_type_container">x</span>
17532
17533                 <span class="entry_type_array">
17534                   4
17535                 </span>
17536               <span class="entry_type_visibility"> [public]</span>
17537
17538
17539
17540
17541
17542
17543             </td> <!-- entry_type -->
17544
17545             <td class="entry_description">
17546               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
17547 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
17548             </td>
17549
17550             <td class="entry_units">
17551             </td>
17552
17553             <td class="entry_range">
17554             </td>
17555
17556             <td class="entry_tags">
17557             </td>
17558
17559           </tr>
17560           <tr class="entries_header">
17561             <th class="th_details" colspan="5">Details</th>
17562           </tr>
17563           <tr class="entry_cont">
17564             <td class="entry_details" colspan="5">
17565               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
17566 The camera device then uses the most significant X bits
17567 that correspond to how many bits are in its Bayer raw sensor
17568 output.<wbr/></p>
17569 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
17570 10 most significant bits from each color channel.<wbr/></p>
17571             </td>
17572           </tr>
17573
17574           <tr class="entries_header">
17575             <th class="th_details" colspan="5">HAL Implementation Details</th>
17576           </tr>
17577           <tr class="entry_cont">
17578             <td class="entry_details" colspan="5">
17579               
17580             </td>
17581           </tr>
17582
17583           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17584            <!-- end of entry -->
17585         
17586                 
17587           <tr class="entry" id="controls_android.sensor.testPatternMode">
17588             <td class="entry_name
17589              " rowspan="5">
17590               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
17591             </td>
17592             <td class="entry_type">
17593                 <span class="entry_type_name entry_type_name_enum">int32</span>
17594
17595               <span class="entry_type_visibility"> [public]</span>
17596
17597
17598
17599
17600
17601                 <ul class="entry_type_enum">
17602                   <li>
17603                     <span class="entry_type_enum_name">OFF</span>
17604                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
17605 device returns captures from the image sensor.<wbr/></p>
17606 <p>This is the default if the key is not set.<wbr/></p></span>
17607                   </li>
17608                   <li>
17609                     <span class="entry_type_enum_name">SOLID_COLOR</span>
17610                     <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
17611 respective color channel provided in
17612 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
17613 <p>For example:</p>
17614 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
17615 </code></pre>
17616 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
17617 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
17618 </code></pre>
17619 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
17620 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
17621                   </li>
17622                   <li>
17623                     <span class="entry_type_enum_name">COLOR_BARS</span>
17624                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
17625 <p>The vertical bars (left-to-right) are as follows:</p>
17626 <ul>
17627 <li>100% white</li>
17628 <li>yellow</li>
17629 <li>cyan</li>
17630 <li>green</li>
17631 <li>magenta</li>
17632 <li>red</li>
17633 <li>blue</li>
17634 <li>black</li>
17635 </ul>
17636 <p>In general the image would look like the following:</p>
17637 <pre><code>W Y C G M R B K
17638 W Y C G M R B K
17639 W Y C G M R B K
17640 W Y C G M R B K
17641 W Y C G M R B K
17642 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
17643 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
17644 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
17645
17646 (B = Blue,<wbr/> K = Black)
17647 </code></pre>
17648 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
17649 When this is not possible,<wbr/> the bar size should be rounded
17650 down to the nearest integer and the pattern can repeat
17651 on the right side.<wbr/></p>
17652 <p>Each bar's height must always take up the full sensor
17653 pixel array height.<wbr/></p>
17654 <p>Each pixel in this test pattern must be set to either
17655 0% intensity or 100% intensity.<wbr/></p></span>
17656                   </li>
17657                   <li>
17658                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
17659                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
17660 each bar should start at its specified color at the top,<wbr/>
17661 and fade to gray at the bottom.<wbr/></p>
17662 <p>Furthermore each bar is further subdivided into a left and
17663 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
17664 and the right half should have a quantized gradient.<wbr/></p>
17665 <p>In particular,<wbr/> the right half's should consist of blocks of the
17666 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
17667 <p>The least significant bits in the quantized gradient should
17668 be copied from the most significant bits of the smooth gradient.<wbr/></p>
17669 <p>The height of each bar should always be a multiple of 128.<wbr/>
17670 When this is not the case,<wbr/> the pattern should repeat at the bottom
17671 of the image.<wbr/></p></span>
17672                   </li>
17673                   <li>
17674                     <span class="entry_type_enum_name">PN9</span>
17675                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
17676 generated from a PN9 512-bit sequence (typically implemented
17677 in hardware with a linear feedback shift register).<wbr/></p>
17678 <p>The generator should be reset at the beginning of each frame,<wbr/>
17679 and thus each subsequent raw frame with this test pattern should
17680 be exactly the same as the last.<wbr/></p></span>
17681                   </li>
17682                   <li>
17683                     <span class="entry_type_enum_name">CUSTOM1</span>
17684                     <span class="entry_type_enum_value">256</span>
17685                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
17686 available only on this camera device are at least this numeric
17687 value.<wbr/></p>
17688 <p>All of the custom test patterns will be static
17689 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
17690                   </li>
17691                 </ul>
17692
17693             </td> <!-- entry_type -->
17694
17695             <td class="entry_description">
17696               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
17697 doing a real exposure from the camera.<wbr/></p>
17698             </td>
17699
17700             <td class="entry_units">
17701             </td>
17702
17703             <td class="entry_range">
17704               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
17705             </td>
17706
17707             <td class="entry_tags">
17708             </td>
17709
17710           </tr>
17711           <tr class="entries_header">
17712             <th class="th_details" colspan="5">Details</th>
17713           </tr>
17714           <tr class="entry_cont">
17715             <td class="entry_details" colspan="5">
17716               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
17717 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
17718 work as normal.<wbr/></p>
17719 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
17720 occur (and that the test pattern remain unmodified,<wbr/> since the flash
17721 would not actually affect it).<wbr/></p>
17722 <p>Defaults to OFF.<wbr/></p>
17723             </td>
17724           </tr>
17725
17726           <tr class="entries_header">
17727             <th class="th_details" colspan="5">HAL Implementation Details</th>
17728           </tr>
17729           <tr class="entry_cont">
17730             <td class="entry_details" colspan="5">
17731               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
17732 <p>The HAL may choose to substitute test patterns from the sensor
17733 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
17734 indistinguishable to the ISP whether the data came from the
17735 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
17736             </td>
17737           </tr>
17738
17739           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17740            <!-- end of entry -->
17741         
17742         
17743
17744       <!-- end of kind -->
17745       </tbody>
17746       <tr><td colspan="6" class="kind">static</td></tr>
17747
17748       <thead class="entries_header">
17749         <tr>
17750           <th class="th_name">Property Name</th>
17751           <th class="th_type">Type</th>
17752           <th class="th_description">Description</th>
17753           <th class="th_units">Units</th>
17754           <th class="th_range">Range</th>
17755           <th class="th_tags">Tags</th>
17756         </tr>
17757       </thead>
17758
17759       <tbody>
17760
17761         
17762
17763         
17764
17765         
17766
17767         
17768                 
17769             
17770
17771                 
17772           <tr class="entry" id="static_android.sensor.info.activeArraySize">
17773             <td class="entry_name
17774              " rowspan="5">
17775               android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
17776             </td>
17777             <td class="entry_type">
17778                 <span class="entry_type_name">int32</span>
17779                 <span class="entry_type_container">x</span>
17780
17781                 <span class="entry_type_array">
17782                   4
17783                 </span>
17784               <span class="entry_type_visibility"> [public as rectangle]</span>
17785
17786
17787               <span class="entry_type_hwlevel">[legacy] </span>
17788
17789
17790                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
17791
17792
17793             </td> <!-- entry_type -->
17794
17795             <td class="entry_description">
17796               <p>The area of the image sensor which corresponds to
17797 active pixels.<wbr/></p>
17798             </td>
17799
17800             <td class="entry_units">
17801               Pixel coordinates on the image sensor
17802             </td>
17803
17804             <td class="entry_range">
17805               
17806             </td>
17807
17808             <td class="entry_tags">
17809               <ul class="entry_tags">
17810                   <li><a href="#tag_RAW">RAW</a></li>
17811               </ul>
17812             </td>
17813
17814           </tr>
17815           <tr class="entries_header">
17816             <th class="th_details" colspan="5">Details</th>
17817           </tr>
17818           <tr class="entry_cont">
17819             <td class="entry_details" colspan="5">
17820               <p>This is the region of the sensor that actually receives light from the scene.<wbr/>
17821 Therefore,<wbr/> the size of this region determines the maximum field of view and the maximum
17822 number of pixels that an image from this sensor can contain.<wbr/></p>
17823 <p>The rectangle is defined in terms of the full pixel array; (0,<wbr/>0) is the top-left of the
17824 full pixel array,<wbr/> and the size of the full pixel array is given by
17825 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
17826 <p>Most other keys listing pixel coordinates have their coordinate systems based on the
17827 active array,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of the active array rectangle.<wbr/></p>
17828 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
17829 include black calibration pixels or other inactive regions.<wbr/></p>
17830             </td>
17831           </tr>
17832
17833           <tr class="entries_header">
17834             <th class="th_details" colspan="5">HAL Implementation Details</th>
17835           </tr>
17836           <tr class="entry_cont">
17837             <td class="entry_details" colspan="5">
17838               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
17839 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
17840 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>
17841             </td>
17842           </tr>
17843
17844           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17845            <!-- end of entry -->
17846         
17847                 
17848           <tr class="entry" id="static_android.sensor.info.sensitivityRange">
17849             <td class="entry_name
17850              " rowspan="3">
17851               android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
17852             </td>
17853             <td class="entry_type">
17854                 <span class="entry_type_name">int32</span>
17855                 <span class="entry_type_container">x</span>
17856
17857                 <span class="entry_type_array">
17858                   2
17859                 </span>
17860               <span class="entry_type_visibility"> [public as rangeInt]</span>
17861
17862
17863               <span class="entry_type_hwlevel">[full] </span>
17864
17865
17866                 <div class="entry_type_notes">Range of supported sensitivities</div>
17867
17868
17869             </td> <!-- entry_type -->
17870
17871             <td class="entry_description">
17872               <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
17873 camera device.<wbr/></p>
17874             </td>
17875
17876             <td class="entry_units">
17877             </td>
17878
17879             <td class="entry_range">
17880               <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
17881             </td>
17882
17883             <td class="entry_tags">
17884               <ul class="entry_tags">
17885                   <li><a href="#tag_BC">BC</a></li>
17886                   <li><a href="#tag_V1">V1</a></li>
17887               </ul>
17888             </td>
17889
17890           </tr>
17891           <tr class="entries_header">
17892             <th class="th_details" colspan="5">Details</th>
17893           </tr>
17894           <tr class="entry_cont">
17895             <td class="entry_details" colspan="5">
17896               <p>The values are the standard ISO sensitivity values,<wbr/>
17897 as defined in ISO 12232:2006.<wbr/></p>
17898             </td>
17899           </tr>
17900
17901
17902           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17903            <!-- end of entry -->
17904         
17905                 
17906           <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
17907             <td class="entry_name
17908              " rowspan="1">
17909               android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
17910             </td>
17911             <td class="entry_type">
17912                 <span class="entry_type_name entry_type_name_enum">byte</span>
17913
17914               <span class="entry_type_visibility"> [public]</span>
17915
17916
17917               <span class="entry_type_hwlevel">[full] </span>
17918
17919
17920
17921                 <ul class="entry_type_enum">
17922                   <li>
17923                     <span class="entry_type_enum_name">RGGB</span>
17924                   </li>
17925                   <li>
17926                     <span class="entry_type_enum_name">GRBG</span>
17927                   </li>
17928                   <li>
17929                     <span class="entry_type_enum_name">GBRG</span>
17930                   </li>
17931                   <li>
17932                     <span class="entry_type_enum_name">BGGR</span>
17933                   </li>
17934                   <li>
17935                     <span class="entry_type_enum_name">RGB</span>
17936                     <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
17937 values for each pixel,<wbr/> instead of just 1 16-bit value
17938 per pixel.<wbr/></p></span>
17939                   </li>
17940                 </ul>
17941
17942             </td> <!-- entry_type -->
17943
17944             <td class="entry_description">
17945               <p>The arrangement of color filters on sensor;
17946 represents the colors in the top-left 2x2 section of
17947 the sensor,<wbr/> in reading order.<wbr/></p>
17948             </td>
17949
17950             <td class="entry_units">
17951             </td>
17952
17953             <td class="entry_range">
17954             </td>
17955
17956             <td class="entry_tags">
17957               <ul class="entry_tags">
17958                   <li><a href="#tag_RAW">RAW</a></li>
17959               </ul>
17960             </td>
17961
17962           </tr>
17963
17964
17965           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
17966            <!-- end of entry -->
17967         
17968                 
17969           <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
17970             <td class="entry_name
17971              " rowspan="3">
17972               android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
17973             </td>
17974             <td class="entry_type">
17975                 <span class="entry_type_name">int64</span>
17976                 <span class="entry_type_container">x</span>
17977
17978                 <span class="entry_type_array">
17979                   2
17980                 </span>
17981               <span class="entry_type_visibility"> [public as rangeLong]</span>
17982
17983
17984               <span class="entry_type_hwlevel">[full] </span>
17985
17986
17987                 <div class="entry_type_notes">nanoseconds</div>
17988
17989
17990             </td> <!-- entry_type -->
17991
17992             <td class="entry_description">
17993               <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
17994 by this camera device.<wbr/></p>
17995             </td>
17996
17997             <td class="entry_units">
17998               Nanoseconds
17999             </td>
18000
18001             <td class="entry_range">
18002               <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
18003 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18004 the maximum exposure time will be greater than 100ms.<wbr/></p>
18005             </td>
18006
18007             <td class="entry_tags">
18008               <ul class="entry_tags">
18009                   <li><a href="#tag_V1">V1</a></li>
18010               </ul>
18011             </td>
18012
18013           </tr>
18014
18015           <tr class="entries_header">
18016             <th class="th_details" colspan="5">HAL Implementation Details</th>
18017           </tr>
18018           <tr class="entry_cont">
18019             <td class="entry_details" colspan="5">
18020               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18021 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
18022 100ms.<wbr/></p>
18023             </td>
18024           </tr>
18025
18026           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18027            <!-- end of entry -->
18028         
18029                 
18030           <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
18031             <td class="entry_name
18032              " rowspan="5">
18033               android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
18034             </td>
18035             <td class="entry_type">
18036                 <span class="entry_type_name">int64</span>
18037
18038               <span class="entry_type_visibility"> [public]</span>
18039
18040
18041               <span class="entry_type_hwlevel">[full] </span>
18042
18043
18044
18045
18046             </td> <!-- entry_type -->
18047
18048             <td class="entry_description">
18049               <p>The maximum possible frame duration (minimum frame rate) for
18050 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
18051             </td>
18052
18053             <td class="entry_units">
18054               Nanoseconds
18055             </td>
18056
18057             <td class="entry_range">
18058               <p>For FULL capability devices
18059 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
18060             </td>
18061
18062             <td class="entry_tags">
18063               <ul class="entry_tags">
18064                   <li><a href="#tag_V1">V1</a></li>
18065               </ul>
18066             </td>
18067
18068           </tr>
18069           <tr class="entries_header">
18070             <th class="th_details" colspan="5">Details</th>
18071           </tr>
18072           <tr class="entry_cont">
18073             <td class="entry_details" colspan="5">
18074               <p>Attempting to use frame durations beyond the maximum will result in the frame
18075 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
18076 durations.<wbr/></p>
18077 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
18078 for the minimum frame duration values.<wbr/></p>
18079             </td>
18080           </tr>
18081
18082           <tr class="entries_header">
18083             <th class="th_details" colspan="5">HAL Implementation Details</th>
18084           </tr>
18085           <tr class="entry_cont">
18086             <td class="entry_details" colspan="5">
18087               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
18088 The maximum of the range SHOULD be at least
18089 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
18090 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
18091 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
18092 value (since exposure time overrides frame duration).<wbr/></p>
18093 <p>Available minimum frame durations for JPEG must be no greater
18094 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
18095 minimum frame durations (for that respective size).<wbr/></p>
18096 <p>Since JPEG processing is considered offline and can take longer than
18097 a single uncompressed capture,<wbr/> refer to
18098 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
18099 for details about encoding this scenario.<wbr/></p>
18100             </td>
18101           </tr>
18102
18103           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18104            <!-- end of entry -->
18105         
18106                 
18107           <tr class="entry" id="static_android.sensor.info.physicalSize">
18108             <td class="entry_name
18109              " rowspan="5">
18110               android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
18111             </td>
18112             <td class="entry_type">
18113                 <span class="entry_type_name">float</span>
18114                 <span class="entry_type_container">x</span>
18115
18116                 <span class="entry_type_array">
18117                   2
18118                 </span>
18119               <span class="entry_type_visibility"> [public as sizeF]</span>
18120
18121
18122               <span class="entry_type_hwlevel">[legacy] </span>
18123
18124
18125                 <div class="entry_type_notes">width x height</div>
18126
18127
18128             </td> <!-- entry_type -->
18129
18130             <td class="entry_description">
18131               <p>The physical dimensions of the full pixel
18132 array.<wbr/></p>
18133             </td>
18134
18135             <td class="entry_units">
18136               Millimeters
18137             </td>
18138
18139             <td class="entry_range">
18140             </td>
18141
18142             <td class="entry_tags">
18143               <ul class="entry_tags">
18144                   <li><a href="#tag_V1">V1</a></li>
18145                   <li><a href="#tag_BC">BC</a></li>
18146               </ul>
18147             </td>
18148
18149           </tr>
18150           <tr class="entries_header">
18151             <th class="th_details" colspan="5">Details</th>
18152           </tr>
18153           <tr class="entry_cont">
18154             <td class="entry_details" colspan="5">
18155               <p>This is the physical size of the sensor pixel
18156 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
18157             </td>
18158           </tr>
18159
18160           <tr class="entries_header">
18161             <th class="th_details" colspan="5">HAL Implementation Details</th>
18162           </tr>
18163           <tr class="entry_cont">
18164             <td class="entry_details" colspan="5">
18165               <p>Needed for FOV calculation for old API</p>
18166             </td>
18167           </tr>
18168
18169           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18170            <!-- end of entry -->
18171         
18172                 
18173           <tr class="entry" id="static_android.sensor.info.pixelArraySize">
18174             <td class="entry_name
18175              " rowspan="3">
18176               android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
18177             </td>
18178             <td class="entry_type">
18179                 <span class="entry_type_name">int32</span>
18180                 <span class="entry_type_container">x</span>
18181
18182                 <span class="entry_type_array">
18183                   2
18184                 </span>
18185               <span class="entry_type_visibility"> [public as size]</span>
18186
18187
18188               <span class="entry_type_hwlevel">[legacy] </span>
18189
18190
18191
18192
18193             </td> <!-- entry_type -->
18194
18195             <td class="entry_description">
18196               <p>Dimensions of the full pixel array,<wbr/> possibly
18197 including black calibration pixels.<wbr/></p>
18198             </td>
18199
18200             <td class="entry_units">
18201               Pixels
18202             </td>
18203
18204             <td class="entry_range">
18205             </td>
18206
18207             <td class="entry_tags">
18208               <ul class="entry_tags">
18209                   <li><a href="#tag_RAW">RAW</a></li>
18210                   <li><a href="#tag_BC">BC</a></li>
18211               </ul>
18212             </td>
18213
18214           </tr>
18215           <tr class="entries_header">
18216             <th class="th_details" colspan="5">Details</th>
18217           </tr>
18218           <tr class="entry_cont">
18219             <td class="entry_details" colspan="5">
18220               <p>The pixel count of the full pixel array,<wbr/>
18221 which covers <a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a> area.<wbr/></p>
18222 <p>If a camera device supports raw sensor formats,<wbr/> either this
18223 or <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> is the maximum output
18224 raw size listed in <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/>
18225 If a size corresponding to pixelArraySize is listed,<wbr/> the resulting
18226 raw sensor image will include black pixels.<wbr/></p>
18227 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
18228 or are otherwise inactive.<wbr/>  The <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> key
18229 defines the rectangle of active pixels that actually forms an image.<wbr/></p>
18230             </td>
18231           </tr>
18232
18233
18234           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18235            <!-- end of entry -->
18236         
18237                 
18238           <tr class="entry" id="static_android.sensor.info.whiteLevel">
18239             <td class="entry_name
18240              " rowspan="5">
18241               android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
18242             </td>
18243             <td class="entry_type">
18244                 <span class="entry_type_name">int32</span>
18245
18246               <span class="entry_type_visibility"> [public]</span>
18247
18248
18249
18250
18251
18252
18253             </td> <!-- entry_type -->
18254
18255             <td class="entry_description">
18256               <p>Maximum raw value output by sensor.<wbr/></p>
18257             </td>
18258
18259             <td class="entry_units">
18260             </td>
18261
18262             <td class="entry_range">
18263               <p>&gt; 255 (8-bit output)</p>
18264             </td>
18265
18266             <td class="entry_tags">
18267               <ul class="entry_tags">
18268                   <li><a href="#tag_RAW">RAW</a></li>
18269               </ul>
18270             </td>
18271
18272           </tr>
18273           <tr class="entries_header">
18274             <th class="th_details" colspan="5">Details</th>
18275           </tr>
18276           <tr class="entry_cont">
18277             <td class="entry_details" colspan="5">
18278               <p>This specifies the fully-saturated encoding level for the raw
18279 sample values from the sensor.<wbr/>  This is typically caused by the
18280 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
18281 each channel is specified by the offset in the
18282 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
18283 <p>The white level is typically determined either by sensor bit depth
18284 (8-14 bits is expected),<wbr/> or by the point where the sensor response
18285 becomes too non-linear to be useful.<wbr/>  The default value for this is
18286 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
18287             </td>
18288           </tr>
18289
18290           <tr class="entries_header">
18291             <th class="th_details" colspan="5">HAL Implementation Details</th>
18292           </tr>
18293           <tr class="entry_cont">
18294             <td class="entry_details" colspan="5">
18295               <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
18296 so the value for linear sensors should not be significantly lower
18297 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
18298             </td>
18299           </tr>
18300
18301           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18302            <!-- end of entry -->
18303         
18304                 
18305           <tr class="entry" id="static_android.sensor.info.timestampSource">
18306             <td class="entry_name
18307              " rowspan="3">
18308               android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
18309             </td>
18310             <td class="entry_type">
18311                 <span class="entry_type_name entry_type_name_enum">byte</span>
18312
18313               <span class="entry_type_visibility"> [public]</span>
18314
18315
18316               <span class="entry_type_hwlevel">[legacy] </span>
18317
18318
18319
18320                 <ul class="entry_type_enum">
18321                   <li>
18322                     <span class="entry_type_enum_name">UNKNOWN</span>
18323                     <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/>
18324 but can not be compared to timestamps from other subsystems
18325 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
18326 camera devices in the same system.<wbr/> Timestamps between streams and results for
18327 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
18328 and the result metadata generated by a single capture are identical.<wbr/></p></span>
18329                   </li>
18330                   <li>
18331                     <span class="entry_type_enum_name">REALTIME</span>
18332                     <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
18333 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
18334 and they can be compared to other timestamps using that base.<wbr/></p></span>
18335                   </li>
18336                 </ul>
18337
18338             </td> <!-- entry_type -->
18339
18340             <td class="entry_description">
18341               <p>The time base source for sensor capture start timestamps.<wbr/></p>
18342             </td>
18343
18344             <td class="entry_units">
18345             </td>
18346
18347             <td class="entry_range">
18348             </td>
18349
18350             <td class="entry_tags">
18351               <ul class="entry_tags">
18352                   <li><a href="#tag_V1">V1</a></li>
18353               </ul>
18354             </td>
18355
18356           </tr>
18357           <tr class="entries_header">
18358             <th class="th_details" colspan="5">Details</th>
18359           </tr>
18360           <tr class="entry_cont">
18361             <td class="entry_details" colspan="5">
18362               <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
18363 may not based on a time source that can be compared to other system time sources.<wbr/></p>
18364 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
18365 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
18366             </td>
18367           </tr>
18368
18369
18370           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18371            <!-- end of entry -->
18372         
18373                 
18374           <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
18375             <td class="entry_name
18376              " rowspan="3">
18377               android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
18378             </td>
18379             <td class="entry_type">
18380                 <span class="entry_type_name entry_type_name_enum">byte</span>
18381
18382               <span class="entry_type_visibility"> [public as boolean]</span>
18383
18384
18385
18386
18387
18388                 <ul class="entry_type_enum">
18389                   <li>
18390                     <span class="entry_type_enum_name">FALSE</span>
18391                   </li>
18392                   <li>
18393                     <span class="entry_type_enum_name">TRUE</span>
18394                   </li>
18395                 </ul>
18396
18397             </td> <!-- entry_type -->
18398
18399             <td class="entry_description">
18400               <p>Whether the RAW images output from this camera device are subject to
18401 lens shading correction.<wbr/></p>
18402             </td>
18403
18404             <td class="entry_units">
18405             </td>
18406
18407             <td class="entry_range">
18408             </td>
18409
18410             <td class="entry_tags">
18411             </td>
18412
18413           </tr>
18414           <tr class="entries_header">
18415             <th class="th_details" colspan="5">Details</th>
18416           </tr>
18417           <tr class="entry_cont">
18418             <td class="entry_details" colspan="5">
18419               <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
18420 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
18421 not be adjusted for lens shading correction.<wbr/>
18422 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>
18423 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
18424 Devices with RAW capability will always report this information in this key.<wbr/></p>
18425             </td>
18426           </tr>
18427
18428
18429           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18430            <!-- end of entry -->
18431         
18432         
18433         
18434
18435                 
18436           <tr class="entry" id="static_android.sensor.referenceIlluminant1">
18437             <td class="entry_name
18438              " rowspan="5">
18439               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
18440             </td>
18441             <td class="entry_type">
18442                 <span class="entry_type_name entry_type_name_enum">byte</span>
18443
18444               <span class="entry_type_visibility"> [public]</span>
18445
18446
18447
18448
18449
18450                 <ul class="entry_type_enum">
18451                   <li>
18452                     <span class="entry_type_enum_name">DAYLIGHT</span>
18453                     <span class="entry_type_enum_value">1</span>
18454                   </li>
18455                   <li>
18456                     <span class="entry_type_enum_name">FLUORESCENT</span>
18457                     <span class="entry_type_enum_value">2</span>
18458                   </li>
18459                   <li>
18460                     <span class="entry_type_enum_name">TUNGSTEN</span>
18461                     <span class="entry_type_enum_value">3</span>
18462                     <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
18463                   </li>
18464                   <li>
18465                     <span class="entry_type_enum_name">FLASH</span>
18466                     <span class="entry_type_enum_value">4</span>
18467                   </li>
18468                   <li>
18469                     <span class="entry_type_enum_name">FINE_WEATHER</span>
18470                     <span class="entry_type_enum_value">9</span>
18471                   </li>
18472                   <li>
18473                     <span class="entry_type_enum_name">CLOUDY_WEATHER</span>
18474                     <span class="entry_type_enum_value">10</span>
18475                   </li>
18476                   <li>
18477                     <span class="entry_type_enum_name">SHADE</span>
18478                     <span class="entry_type_enum_value">11</span>
18479                   </li>
18480                   <li>
18481                     <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT</span>
18482                     <span class="entry_type_enum_value">12</span>
18483                     <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
18484                   </li>
18485                   <li>
18486                     <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT</span>
18487                     <span class="entry_type_enum_value">13</span>
18488                     <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
18489                   </li>
18490                   <li>
18491                     <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT</span>
18492                     <span class="entry_type_enum_value">14</span>
18493                     <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
18494                   </li>
18495                   <li>
18496                     <span class="entry_type_enum_name">WHITE_FLUORESCENT</span>
18497                     <span class="entry_type_enum_value">15</span>
18498                     <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
18499                   </li>
18500                   <li>
18501                     <span class="entry_type_enum_name">STANDARD_A</span>
18502                     <span class="entry_type_enum_value">17</span>
18503                   </li>
18504                   <li>
18505                     <span class="entry_type_enum_name">STANDARD_B</span>
18506                     <span class="entry_type_enum_value">18</span>
18507                   </li>
18508                   <li>
18509                     <span class="entry_type_enum_name">STANDARD_C</span>
18510                     <span class="entry_type_enum_value">19</span>
18511                   </li>
18512                   <li>
18513                     <span class="entry_type_enum_name">D55</span>
18514                     <span class="entry_type_enum_value">20</span>
18515                   </li>
18516                   <li>
18517                     <span class="entry_type_enum_name">D65</span>
18518                     <span class="entry_type_enum_value">21</span>
18519                   </li>
18520                   <li>
18521                     <span class="entry_type_enum_name">D75</span>
18522                     <span class="entry_type_enum_value">22</span>
18523                   </li>
18524                   <li>
18525                     <span class="entry_type_enum_name">D50</span>
18526                     <span class="entry_type_enum_value">23</span>
18527                   </li>
18528                   <li>
18529                     <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN</span>
18530                     <span class="entry_type_enum_value">24</span>
18531                   </li>
18532                 </ul>
18533
18534             </td> <!-- entry_type -->
18535
18536             <td class="entry_description">
18537               <p>The standard reference illuminant used as the scene light source when
18538 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
18539 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
18540 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
18541             </td>
18542
18543             <td class="entry_units">
18544             </td>
18545
18546             <td class="entry_range">
18547             </td>
18548
18549             <td class="entry_tags">
18550               <ul class="entry_tags">
18551                   <li><a href="#tag_RAW">RAW</a></li>
18552               </ul>
18553             </td>
18554
18555           </tr>
18556           <tr class="entries_header">
18557             <th class="th_details" colspan="5">Details</th>
18558           </tr>
18559           <tr class="entry_cont">
18560             <td class="entry_details" colspan="5">
18561               <p>The values in this key correspond to the values defined for the
18562 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
18563 that are often used calibrating camera devices.<wbr/></p>
18564 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
18565 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
18566 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
18567 <p>Some devices may choose to provide a second set of calibration
18568 information for improved quality,<wbr/> including
18569 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
18570             </td>
18571           </tr>
18572
18573           <tr class="entries_header">
18574             <th class="th_details" colspan="5">HAL Implementation Details</th>
18575           </tr>
18576           <tr class="entry_cont">
18577             <td class="entry_details" colspan="5">
18578               <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
18579 and corresponding matrices must be present to support the RAW capability
18580 and DNG output.<wbr/></p>
18581 <p>When producing raw images with a color profile that has only been
18582 calibrated against a single light source,<wbr/> it is valid to omit
18583 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
18584 <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/>
18585 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
18586 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
18587 chosen so that it is representative of typical scene lighting.<wbr/>  In
18588 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
18589 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
18590 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
18591 chosen to represent the typical range of scene lighting conditions.<wbr/>
18592 In general,<wbr/> low color temperature illuminant such as Standard-A will
18593 be chosen for the first reference illuminant and a higher color
18594 temperature illuminant such as D65 will be chosen for the second
18595 reference illuminant.<wbr/></p>
18596             </td>
18597           </tr>
18598
18599           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18600            <!-- end of entry -->
18601         
18602                 
18603           <tr class="entry" id="static_android.sensor.referenceIlluminant2">
18604             <td class="entry_name
18605              " rowspan="3">
18606               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
18607             </td>
18608             <td class="entry_type">
18609                 <span class="entry_type_name">byte</span>
18610
18611               <span class="entry_type_visibility"> [public]</span>
18612
18613
18614
18615
18616
18617
18618             </td> <!-- entry_type -->
18619
18620             <td class="entry_description">
18621               <p>The standard reference illuminant used as the scene light source when
18622 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
18623 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
18624 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
18625             </td>
18626
18627             <td class="entry_units">
18628             </td>
18629
18630             <td class="entry_range">
18631               <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
18632             </td>
18633
18634             <td class="entry_tags">
18635               <ul class="entry_tags">
18636                   <li><a href="#tag_RAW">RAW</a></li>
18637               </ul>
18638             </td>
18639
18640           </tr>
18641           <tr class="entries_header">
18642             <th class="th_details" colspan="5">Details</th>
18643           </tr>
18644           <tr class="entry_cont">
18645             <td class="entry_details" colspan="5">
18646               <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
18647 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
18648 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
18649 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
18650             </td>
18651           </tr>
18652
18653
18654           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18655            <!-- end of entry -->
18656         
18657                 
18658           <tr class="entry" id="static_android.sensor.calibrationTransform1">
18659             <td class="entry_name
18660              " rowspan="3">
18661               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
18662             </td>
18663             <td class="entry_type">
18664                 <span class="entry_type_name">rational</span>
18665                 <span class="entry_type_container">x</span>
18666
18667                 <span class="entry_type_array">
18668                   3 x 3
18669                 </span>
18670               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
18671
18672
18673
18674
18675                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
18676
18677
18678             </td> <!-- entry_type -->
18679
18680             <td class="entry_description">
18681               <p>A per-device calibration transform matrix that maps from the
18682 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
18683             </td>
18684
18685             <td class="entry_units">
18686             </td>
18687
18688             <td class="entry_range">
18689             </td>
18690
18691             <td class="entry_tags">
18692               <ul class="entry_tags">
18693                   <li><a href="#tag_RAW">RAW</a></li>
18694               </ul>
18695             </td>
18696
18697           </tr>
18698           <tr class="entries_header">
18699             <th class="th_details" colspan="5">Details</th>
18700           </tr>
18701           <tr class="entry_cont">
18702             <td class="entry_details" colspan="5">
18703               <p>This matrix is used to correct for per-device variations in the
18704 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
18705 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
18706 contains a per-device calibration transform that maps colors
18707 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
18708 colorspace) into this camera device's native sensor color
18709 space under the first reference illuminant
18710 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
18711             </td>
18712           </tr>
18713
18714
18715           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18716            <!-- end of entry -->
18717         
18718                 
18719           <tr class="entry" id="static_android.sensor.calibrationTransform2">
18720             <td class="entry_name
18721              " rowspan="3">
18722               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
18723             </td>
18724             <td class="entry_type">
18725                 <span class="entry_type_name">rational</span>
18726                 <span class="entry_type_container">x</span>
18727
18728                 <span class="entry_type_array">
18729                   3 x 3
18730                 </span>
18731               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
18732
18733
18734
18735
18736                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
18737
18738
18739             </td> <!-- entry_type -->
18740
18741             <td class="entry_description">
18742               <p>A per-device calibration transform matrix that maps from the
18743 reference sensor colorspace to the actual device sensor colorspace
18744 (this is the colorspace of the raw buffer data).<wbr/></p>
18745             </td>
18746
18747             <td class="entry_units">
18748             </td>
18749
18750             <td class="entry_range">
18751             </td>
18752
18753             <td class="entry_tags">
18754               <ul class="entry_tags">
18755                   <li><a href="#tag_RAW">RAW</a></li>
18756               </ul>
18757             </td>
18758
18759           </tr>
18760           <tr class="entries_header">
18761             <th class="th_details" colspan="5">Details</th>
18762           </tr>
18763           <tr class="entry_cont">
18764             <td class="entry_details" colspan="5">
18765               <p>This matrix is used to correct for per-device variations in the
18766 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
18767 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
18768 contains a per-device calibration transform that maps colors
18769 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
18770 colorspace) into this camera device's native sensor color
18771 space under the second reference illuminant
18772 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
18773 <p>This matrix will only be present if the second reference
18774 illuminant is present.<wbr/></p>
18775             </td>
18776           </tr>
18777
18778
18779           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18780            <!-- end of entry -->
18781         
18782                 
18783           <tr class="entry" id="static_android.sensor.colorTransform1">
18784             <td class="entry_name
18785              " rowspan="3">
18786               android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
18787             </td>
18788             <td class="entry_type">
18789                 <span class="entry_type_name">rational</span>
18790                 <span class="entry_type_container">x</span>
18791
18792                 <span class="entry_type_array">
18793                   3 x 3
18794                 </span>
18795               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
18796
18797
18798
18799
18800                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
18801
18802
18803             </td> <!-- entry_type -->
18804
18805             <td class="entry_description">
18806               <p>A matrix that transforms color values from CIE XYZ color space to
18807 reference sensor color space.<wbr/></p>
18808             </td>
18809
18810             <td class="entry_units">
18811             </td>
18812
18813             <td class="entry_range">
18814             </td>
18815
18816             <td class="entry_tags">
18817               <ul class="entry_tags">
18818                   <li><a href="#tag_RAW">RAW</a></li>
18819               </ul>
18820             </td>
18821
18822           </tr>
18823           <tr class="entries_header">
18824             <th class="th_details" colspan="5">Details</th>
18825           </tr>
18826           <tr class="entry_cont">
18827             <td class="entry_details" colspan="5">
18828               <p>This matrix is used to convert from the standard CIE XYZ color
18829 space to the reference sensor colorspace,<wbr/> and is used when processing
18830 raw buffer data.<wbr/></p>
18831 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
18832 contains a color transform matrix that maps colors from the CIE
18833 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
18834 "golden module" colorspace) under the first reference illuminant
18835 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
18836 <p>The white points chosen in both the reference sensor color space
18837 and the CIE XYZ colorspace when calculating this transform will
18838 match the standard white point for the first reference illuminant
18839 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
18840             </td>
18841           </tr>
18842
18843
18844           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18845            <!-- end of entry -->
18846         
18847                 
18848           <tr class="entry" id="static_android.sensor.colorTransform2">
18849             <td class="entry_name
18850              " rowspan="3">
18851               android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
18852             </td>
18853             <td class="entry_type">
18854                 <span class="entry_type_name">rational</span>
18855                 <span class="entry_type_container">x</span>
18856
18857                 <span class="entry_type_array">
18858                   3 x 3
18859                 </span>
18860               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
18861
18862
18863
18864
18865                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
18866
18867
18868             </td> <!-- entry_type -->
18869
18870             <td class="entry_description">
18871               <p>A matrix that transforms color values from CIE XYZ color space to
18872 reference sensor color space.<wbr/></p>
18873             </td>
18874
18875             <td class="entry_units">
18876             </td>
18877
18878             <td class="entry_range">
18879             </td>
18880
18881             <td class="entry_tags">
18882               <ul class="entry_tags">
18883                   <li><a href="#tag_RAW">RAW</a></li>
18884               </ul>
18885             </td>
18886
18887           </tr>
18888           <tr class="entries_header">
18889             <th class="th_details" colspan="5">Details</th>
18890           </tr>
18891           <tr class="entry_cont">
18892             <td class="entry_details" colspan="5">
18893               <p>This matrix is used to convert from the standard CIE XYZ color
18894 space to the reference sensor colorspace,<wbr/> and is used when processing
18895 raw buffer data.<wbr/></p>
18896 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
18897 contains a color transform matrix that maps colors from the CIE
18898 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
18899 "golden module" colorspace) under the second reference illuminant
18900 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
18901 <p>The white points chosen in both the reference sensor color space
18902 and the CIE XYZ colorspace when calculating this transform will
18903 match the standard white point for the second reference illuminant
18904 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
18905 <p>This matrix will only be present if the second reference
18906 illuminant is present.<wbr/></p>
18907             </td>
18908           </tr>
18909
18910
18911           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18912            <!-- end of entry -->
18913         
18914                 
18915           <tr class="entry" id="static_android.sensor.forwardMatrix1">
18916             <td class="entry_name
18917              " rowspan="3">
18918               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
18919             </td>
18920             <td class="entry_type">
18921                 <span class="entry_type_name">rational</span>
18922                 <span class="entry_type_container">x</span>
18923
18924                 <span class="entry_type_array">
18925                   3 x 3
18926                 </span>
18927               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
18928
18929
18930
18931
18932                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
18933
18934
18935             </td> <!-- entry_type -->
18936
18937             <td class="entry_description">
18938               <p>A matrix that transforms white balanced camera colors from the reference
18939 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
18940             </td>
18941
18942             <td class="entry_units">
18943             </td>
18944
18945             <td class="entry_range">
18946             </td>
18947
18948             <td class="entry_tags">
18949               <ul class="entry_tags">
18950                   <li><a href="#tag_RAW">RAW</a></li>
18951               </ul>
18952             </td>
18953
18954           </tr>
18955           <tr class="entries_header">
18956             <th class="th_details" colspan="5">Details</th>
18957           </tr>
18958           <tr class="entry_cont">
18959             <td class="entry_details" colspan="5">
18960               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
18961 is used when processing raw buffer data.<wbr/></p>
18962 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
18963 a color transform matrix that maps white balanced colors from the
18964 reference sensor color space to the CIE XYZ color space with a D50 white
18965 point.<wbr/></p>
18966 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
18967 this matrix is chosen so that the standard white point for this reference
18968 illuminant in the reference sensor colorspace is mapped to D50 in the
18969 CIE XYZ colorspace.<wbr/></p>
18970             </td>
18971           </tr>
18972
18973
18974           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
18975            <!-- end of entry -->
18976         
18977                 
18978           <tr class="entry" id="static_android.sensor.forwardMatrix2">
18979             <td class="entry_name
18980              " rowspan="3">
18981               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
18982             </td>
18983             <td class="entry_type">
18984                 <span class="entry_type_name">rational</span>
18985                 <span class="entry_type_container">x</span>
18986
18987                 <span class="entry_type_array">
18988                   3 x 3
18989                 </span>
18990               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
18991
18992
18993
18994
18995                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
18996
18997
18998             </td> <!-- entry_type -->
18999
19000             <td class="entry_description">
19001               <p>A matrix that transforms white balanced camera colors from the reference
19002 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
19003             </td>
19004
19005             <td class="entry_units">
19006             </td>
19007
19008             <td class="entry_range">
19009             </td>
19010
19011             <td class="entry_tags">
19012               <ul class="entry_tags">
19013                   <li><a href="#tag_RAW">RAW</a></li>
19014               </ul>
19015             </td>
19016
19017           </tr>
19018           <tr class="entries_header">
19019             <th class="th_details" colspan="5">Details</th>
19020           </tr>
19021           <tr class="entry_cont">
19022             <td class="entry_details" colspan="5">
19023               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
19024 is used when processing raw buffer data.<wbr/></p>
19025 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
19026 a color transform matrix that maps white balanced colors from the
19027 reference sensor color space to the CIE XYZ color space with a D50 white
19028 point.<wbr/></p>
19029 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
19030 this matrix is chosen so that the standard white point for this reference
19031 illuminant in the reference sensor colorspace is mapped to D50 in the
19032 CIE XYZ colorspace.<wbr/></p>
19033 <p>This matrix will only be present if the second reference
19034 illuminant is present.<wbr/></p>
19035             </td>
19036           </tr>
19037
19038
19039           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19040            <!-- end of entry -->
19041         
19042                 
19043           <tr class="entry" id="static_android.sensor.baseGainFactor">
19044             <td class="entry_name
19045              " rowspan="1">
19046               android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
19047             </td>
19048             <td class="entry_type">
19049                 <span class="entry_type_name">rational</span>
19050
19051               <span class="entry_type_visibility"> [system]</span>
19052
19053
19054
19055
19056
19057
19058             </td> <!-- entry_type -->
19059
19060             <td class="entry_description">
19061               <p>Gain factor from electrons to raw units when
19062 ISO=100</p>
19063             </td>
19064
19065             <td class="entry_units">
19066             </td>
19067
19068             <td class="entry_range">
19069             </td>
19070
19071             <td class="entry_tags">
19072               <ul class="entry_tags">
19073                   <li><a href="#tag_FUTURE">FUTURE</a></li>
19074               </ul>
19075             </td>
19076
19077           </tr>
19078
19079
19080           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19081            <!-- end of entry -->
19082         
19083                 
19084           <tr class="entry" id="static_android.sensor.blackLevelPattern">
19085             <td class="entry_name
19086              " rowspan="5">
19087               android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
19088             </td>
19089             <td class="entry_type">
19090                 <span class="entry_type_name">int32</span>
19091                 <span class="entry_type_container">x</span>
19092
19093                 <span class="entry_type_array">
19094                   4
19095                 </span>
19096               <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
19097
19098
19099
19100
19101                 <div class="entry_type_notes">2x2 raw count block</div>
19102
19103
19104             </td> <!-- entry_type -->
19105
19106             <td class="entry_description">
19107               <p>A fixed black level offset for each of the color filter arrangement
19108 (CFA) mosaic channels.<wbr/></p>
19109             </td>
19110
19111             <td class="entry_units">
19112             </td>
19113
19114             <td class="entry_range">
19115               <p>&gt;= 0 for each.<wbr/></p>
19116             </td>
19117
19118             <td class="entry_tags">
19119               <ul class="entry_tags">
19120                   <li><a href="#tag_RAW">RAW</a></li>
19121               </ul>
19122             </td>
19123
19124           </tr>
19125           <tr class="entries_header">
19126             <th class="th_details" colspan="5">Details</th>
19127           </tr>
19128           <tr class="entry_cont">
19129             <td class="entry_details" colspan="5">
19130               <p>This key specifies the zero light value for each of the CFA mosaic
19131 channels in the camera sensor.<wbr/>  The maximal value output by the
19132 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>
19133 <p>The values are given in the same order as channels listed for the CFA
19134 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
19135 nth value given corresponds to the black level offset for the nth
19136 color channel listed in the CFA.<wbr/></p>
19137             </td>
19138           </tr>
19139
19140           <tr class="entries_header">
19141             <th class="th_details" colspan="5">HAL Implementation Details</th>
19142           </tr>
19143           <tr class="entry_cont">
19144             <td class="entry_details" colspan="5">
19145               <p>The values are given in row-column scan order,<wbr/> with the first value
19146 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
19147             </td>
19148           </tr>
19149
19150           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19151            <!-- end of entry -->
19152         
19153                 
19154           <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
19155             <td class="entry_name
19156              " rowspan="3">
19157               android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
19158             </td>
19159             <td class="entry_type">
19160                 <span class="entry_type_name">int32</span>
19161
19162               <span class="entry_type_visibility"> [public]</span>
19163
19164
19165               <span class="entry_type_hwlevel">[full] </span>
19166
19167
19168
19169
19170             </td> <!-- entry_type -->
19171
19172             <td class="entry_description">
19173               <p>Maximum sensitivity that is implemented
19174 purely through analog gain.<wbr/></p>
19175             </td>
19176
19177             <td class="entry_units">
19178             </td>
19179
19180             <td class="entry_range">
19181             </td>
19182
19183             <td class="entry_tags">
19184               <ul class="entry_tags">
19185                   <li><a href="#tag_V1">V1</a></li>
19186                   <li><a href="#tag_FULL">FULL</a></li>
19187               </ul>
19188             </td>
19189
19190           </tr>
19191           <tr class="entries_header">
19192             <th class="th_details" colspan="5">Details</th>
19193           </tr>
19194           <tr class="entry_cont">
19195             <td class="entry_details" colspan="5">
19196               <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
19197 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
19198 values above this,<wbr/> the gain applied can be a mix of analog and
19199 digital.<wbr/></p>
19200             </td>
19201           </tr>
19202
19203
19204           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19205            <!-- end of entry -->
19206         
19207                 
19208           <tr class="entry" id="static_android.sensor.orientation">
19209             <td class="entry_name
19210              " rowspan="3">
19211               android.<wbr/>sensor.<wbr/>orientation
19212             </td>
19213             <td class="entry_type">
19214                 <span class="entry_type_name">int32</span>
19215
19216               <span class="entry_type_visibility"> [public]</span>
19217
19218
19219               <span class="entry_type_hwlevel">[legacy] </span>
19220
19221
19222
19223
19224             </td> <!-- entry_type -->
19225
19226             <td class="entry_description">
19227               <p>Clockwise angle through which the output image needs to be rotated to be
19228 upright on the device screen in its native orientation.<wbr/></p>
19229             </td>
19230
19231             <td class="entry_units">
19232               Degrees of clockwise rotation; always a multiple of
19233           90
19234             </td>
19235
19236             <td class="entry_range">
19237               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
19238             </td>
19239
19240             <td class="entry_tags">
19241               <ul class="entry_tags">
19242                   <li><a href="#tag_BC">BC</a></li>
19243               </ul>
19244             </td>
19245
19246           </tr>
19247           <tr class="entries_header">
19248             <th class="th_details" colspan="5">Details</th>
19249           </tr>
19250           <tr class="entry_cont">
19251             <td class="entry_details" colspan="5">
19252               <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
19253 the sensor's coordinate system.<wbr/></p>
19254             </td>
19255           </tr>
19256
19257
19258           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19259            <!-- end of entry -->
19260         
19261                 
19262           <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
19263             <td class="entry_name
19264              " rowspan="3">
19265               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
19266             </td>
19267             <td class="entry_type">
19268                 <span class="entry_type_name">int32</span>
19269                 <span class="entry_type_container">x</span>
19270
19271                 <span class="entry_type_array">
19272                   3
19273                 </span>
19274               <span class="entry_type_visibility"> [system]</span>
19275
19276
19277
19278
19279                 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
19280
19281
19282             </td> <!-- entry_type -->
19283
19284             <td class="entry_description">
19285               <p>The number of input samples for each dimension of
19286 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
19287             </td>
19288
19289             <td class="entry_units">
19290             </td>
19291
19292             <td class="entry_range">
19293               <p>Hue &gt;= 1,<wbr/>
19294 Saturation &gt;= 2,<wbr/>
19295 Value &gt;= 1</p>
19296             </td>
19297
19298             <td class="entry_tags">
19299               <ul class="entry_tags">
19300                   <li><a href="#tag_RAW">RAW</a></li>
19301               </ul>
19302             </td>
19303
19304           </tr>
19305           <tr class="entries_header">
19306             <th class="th_details" colspan="5">Details</th>
19307           </tr>
19308           <tr class="entry_cont">
19309             <td class="entry_details" colspan="5">
19310               <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
19311 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
19312 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
19313 element.<wbr/></p>
19314             </td>
19315           </tr>
19316
19317
19318           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19319            <!-- end of entry -->
19320         
19321                 
19322           <tr class="entry" id="static_android.sensor.availableTestPatternModes">
19323             <td class="entry_name
19324              " rowspan="5">
19325               android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
19326             </td>
19327             <td class="entry_type">
19328                 <span class="entry_type_name">int32</span>
19329                 <span class="entry_type_container">x</span>
19330
19331                 <span class="entry_type_array">
19332                   n
19333                 </span>
19334               <span class="entry_type_visibility"> [public]</span>
19335
19336
19337
19338
19339                 <div class="entry_type_notes">list of enums</div>
19340
19341
19342             </td> <!-- entry_type -->
19343
19344             <td class="entry_description">
19345               <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
19346 supported by this camera device.<wbr/></p>
19347             </td>
19348
19349             <td class="entry_units">
19350             </td>
19351
19352             <td class="entry_range">
19353               <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
19354             </td>
19355
19356             <td class="entry_tags">
19357             </td>
19358
19359           </tr>
19360           <tr class="entries_header">
19361             <th class="th_details" colspan="5">Details</th>
19362           </tr>
19363           <tr class="entry_cont">
19364             <td class="entry_details" colspan="5">
19365               <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
19366             </td>
19367           </tr>
19368
19369           <tr class="entries_header">
19370             <th class="th_details" colspan="5">HAL Implementation Details</th>
19371           </tr>
19372           <tr class="entry_cont">
19373             <td class="entry_details" colspan="5">
19374               <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
19375             </td>
19376           </tr>
19377
19378           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19379            <!-- end of entry -->
19380         
19381         
19382
19383       <!-- end of kind -->
19384       </tbody>
19385       <tr><td colspan="6" class="kind">dynamic</td></tr>
19386
19387       <thead class="entries_header">
19388         <tr>
19389           <th class="th_name">Property Name</th>
19390           <th class="th_type">Type</th>
19391           <th class="th_description">Description</th>
19392           <th class="th_units">Units</th>
19393           <th class="th_range">Range</th>
19394           <th class="th_tags">Tags</th>
19395         </tr>
19396       </thead>
19397
19398       <tbody>
19399
19400         
19401
19402         
19403
19404         
19405
19406         
19407
19408                 
19409           <tr class="entry" id="dynamic_android.sensor.exposureTime">
19410             <td class="entry_name
19411              " rowspan="3">
19412               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
19413             </td>
19414             <td class="entry_type">
19415                 <span class="entry_type_name">int64</span>
19416
19417               <span class="entry_type_visibility"> [public]</span>
19418
19419
19420               <span class="entry_type_hwlevel">[full] </span>
19421
19422
19423
19424
19425             </td> <!-- entry_type -->
19426
19427             <td class="entry_description">
19428               <p>Duration each pixel is exposed to
19429 light.<wbr/></p>
19430             </td>
19431
19432             <td class="entry_units">
19433               Nanoseconds
19434             </td>
19435
19436             <td class="entry_range">
19437               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
19438             </td>
19439
19440             <td class="entry_tags">
19441               <ul class="entry_tags">
19442                   <li><a href="#tag_V1">V1</a></li>
19443               </ul>
19444             </td>
19445
19446           </tr>
19447           <tr class="entries_header">
19448             <th class="th_details" colspan="5">Details</th>
19449           </tr>
19450           <tr class="entry_cont">
19451             <td class="entry_details" colspan="5">
19452               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
19453 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
19454 The final exposure time used will be available in the output capture result.<wbr/></p>
19455 <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
19456 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19457             </td>
19458           </tr>
19459
19460
19461           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19462            <!-- end of entry -->
19463         
19464                 
19465           <tr class="entry" id="dynamic_android.sensor.frameDuration">
19466             <td class="entry_name
19467              " rowspan="5">
19468               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
19469             </td>
19470             <td class="entry_type">
19471                 <span class="entry_type_name">int64</span>
19472
19473               <span class="entry_type_visibility"> [public]</span>
19474
19475
19476               <span class="entry_type_hwlevel">[full] </span>
19477
19478
19479
19480
19481             </td> <!-- entry_type -->
19482
19483             <td class="entry_description">
19484               <p>Duration from start of frame exposure to
19485 start of next frame exposure.<wbr/></p>
19486             </td>
19487
19488             <td class="entry_units">
19489               Nanoseconds
19490             </td>
19491
19492             <td class="entry_range">
19493               <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/>
19494 <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a>.<wbr/> The duration
19495 is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
19496             </td>
19497
19498             <td class="entry_tags">
19499               <ul class="entry_tags">
19500                   <li><a href="#tag_V1">V1</a></li>
19501               </ul>
19502             </td>
19503
19504           </tr>
19505           <tr class="entries_header">
19506             <th class="th_details" colspan="5">Details</th>
19507           </tr>
19508           <tr class="entry_cont">
19509             <td class="entry_details" colspan="5">
19510               <p>The maximum frame rate that can be supported by a camera subsystem is
19511 a function of many factors:</p>
19512 <ul>
19513 <li>Requested resolutions of output image streams</li>
19514 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
19515 <li>The bandwidth of the imager interface</li>
19516 <li>The bandwidth of the various ISP processing blocks</li>
19517 </ul>
19518 <p>Since these factors can vary greatly between different ISPs and
19519 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
19520 restrictions with as simple a model as possible.<wbr/></p>
19521 <p>The model presented has the following characteristics:</p>
19522 <ul>
19523 <li>The image sensor is always configured to output the smallest
19524 resolution possible given the application's requested output stream
19525 sizes.<wbr/>  The smallest resolution is defined as being at least as large
19526 as the largest requested output stream size; the camera pipeline must
19527 never digitally upsample sensor data when the crop region covers the
19528 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
19529 resolutions are configured,<wbr/> the sensor can provide a higher frame
19530 rate.<wbr/></li>
19531 <li>Since any request may use any or all the currently configured
19532 output streams,<wbr/> the sensor and ISP must be configured to support
19533 scaling a single capture to all the streams at the same time.<wbr/>  This
19534 means the camera pipeline must be ready to produce the largest
19535 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
19536 frame rate of a given configured stream set is governed only by the
19537 largest requested stream resolution.<wbr/></li>
19538 <li>Using more than one output stream in a request does not affect the
19539 frame duration.<wbr/></li>
19540 <li>Certain format-streams may need to do additional background processing
19541 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
19542 can run concurrently to the rest of the camera pipeline,<wbr/> but
19543 cannot process more than 1 capture at a time.<wbr/></li>
19544 </ul>
19545 <p>The necessary information for the application,<wbr/> given the model above,<wbr/>
19546 is provided via the <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> field using
19547 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
19548 These are used to determine the maximum frame rate /<wbr/> minimum frame
19549 duration that is possible for a given stream configuration.<wbr/></p>
19550 <p>Specifically,<wbr/> the application can use the following rules to
19551 determine the minimum frame duration it can request from the camera
19552 device:</p>
19553 <ol>
19554 <li>Let the set of currently configured input/<wbr/>output streams
19555 be called <code>S</code>.<wbr/></li>
19556 <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking
19557 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>
19558 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be
19559 called <code>F</code>.<wbr/></li>
19560 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed
19561 for <code>R</code> is the maximum out of all values in <code>F</code>.<wbr/> Let the streams
19562 used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
19563 </ol>
19564 <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>
19565 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code>
19566 determines the steady state frame rate that the application will get
19567 if it uses <code>R</code> as a repeating request.<wbr/> Let this special kind of
19568 request be called <code>Rsimple</code>.<wbr/></p>
19569 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved
19570 by a single capture of a new request <code>Rstall</code> (which has at least
19571 one in-use stream with a non-0 stall time) and if <code>Rstall</code> has the
19572 same minimum frame duration this will not cause a frame rate loss
19573 if all buffers from the previous <code>Rstall</code> have already been
19574 delivered.<wbr/></p>
19575 <p>For more details about stalling,<wbr/> see
19576 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
19577 <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
19578 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19579             </td>
19580           </tr>
19581
19582           <tr class="entries_header">
19583             <th class="th_details" colspan="5">HAL Implementation Details</th>
19584           </tr>
19585           <tr class="entry_cont">
19586             <td class="entry_details" colspan="5">
19587               <p>For more details about stalling,<wbr/> see
19588 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
19589             </td>
19590           </tr>
19591
19592           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19593            <!-- end of entry -->
19594         
19595                 
19596           <tr class="entry" id="dynamic_android.sensor.sensitivity">
19597             <td class="entry_name
19598              " rowspan="5">
19599               android.<wbr/>sensor.<wbr/>sensitivity
19600             </td>
19601             <td class="entry_type">
19602                 <span class="entry_type_name">int32</span>
19603
19604               <span class="entry_type_visibility"> [public]</span>
19605
19606
19607               <span class="entry_type_hwlevel">[full] </span>
19608
19609
19610
19611
19612             </td> <!-- entry_type -->
19613
19614             <td class="entry_description">
19615               <p>The amount of gain applied to sensor data
19616 before processing.<wbr/></p>
19617             </td>
19618
19619             <td class="entry_units">
19620               ISO arithmetic units
19621             </td>
19622
19623             <td class="entry_range">
19624               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
19625             </td>
19626
19627             <td class="entry_tags">
19628               <ul class="entry_tags">
19629                   <li><a href="#tag_V1">V1</a></li>
19630               </ul>
19631             </td>
19632
19633           </tr>
19634           <tr class="entries_header">
19635             <th class="th_details" colspan="5">Details</th>
19636           </tr>
19637           <tr class="entry_cont">
19638             <td class="entry_details" colspan="5">
19639               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
19640 as defined in ISO 12232:2006.<wbr/></p>
19641 <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
19642 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
19643 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
19644 <p>If the camera device cannot apply the exact sensitivity
19645 requested,<wbr/> it will reduce the gain to the nearest supported
19646 value.<wbr/> The final sensitivity used will be available in the
19647 output capture result.<wbr/></p>
19648             </td>
19649           </tr>
19650
19651           <tr class="entries_header">
19652             <th class="th_details" colspan="5">HAL Implementation Details</th>
19653           </tr>
19654           <tr class="entry_cont">
19655             <td class="entry_details" colspan="5">
19656               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
19657             </td>
19658           </tr>
19659
19660           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19661            <!-- end of entry -->
19662         
19663                 
19664           <tr class="entry" id="dynamic_android.sensor.timestamp">
19665             <td class="entry_name
19666              " rowspan="5">
19667               android.<wbr/>sensor.<wbr/>timestamp
19668             </td>
19669             <td class="entry_type">
19670                 <span class="entry_type_name">int64</span>
19671
19672               <span class="entry_type_visibility"> [public]</span>
19673
19674
19675               <span class="entry_type_hwlevel">[legacy] </span>
19676
19677
19678
19679
19680             </td> <!-- entry_type -->
19681
19682             <td class="entry_description">
19683               <p>Time at start of exposure of first
19684 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
19685             </td>
19686
19687             <td class="entry_units">
19688               Nanoseconds
19689             </td>
19690
19691             <td class="entry_range">
19692               <p>&gt; 0</p>
19693             </td>
19694
19695             <td class="entry_tags">
19696               <ul class="entry_tags">
19697                   <li><a href="#tag_BC">BC</a></li>
19698               </ul>
19699             </td>
19700
19701           </tr>
19702           <tr class="entries_header">
19703             <th class="th_details" colspan="5">Details</th>
19704           </tr>
19705           <tr class="entry_cont">
19706             <td class="entry_details" colspan="5">
19707               <p>The timestamps are also included in all image
19708 buffers produced for the same capture,<wbr/> and will be identical
19709 on all the outputs.<wbr/></p>
19710 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
19711 the timestamps measure time since an unspecified starting point,<wbr/>
19712 and are monotonically increasing.<wbr/> They can be compared with the
19713 timestamps for other captures from the same camera device,<wbr/> but are
19714 not guaranteed to be comparable to any other time source.<wbr/></p>
19715 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
19716 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
19717 be compared to other timestamps from other subsystems that
19718 are using that base.<wbr/></p>
19719             </td>
19720           </tr>
19721
19722           <tr class="entries_header">
19723             <th class="th_details" colspan="5">HAL Implementation Details</th>
19724           </tr>
19725           <tr class="entry_cont">
19726             <td class="entry_details" colspan="5">
19727               <p>All timestamps must be in reference to the kernel's
19728 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
19729 time spent asleep.<wbr/> This allows for synchronization with
19730 sensors that continue to operate while the system is
19731 otherwise asleep.<wbr/></p>
19732 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
19733 The timestamp must be synchronized with the timestamps from other
19734 sensor subsystems that are using the same timebase.<wbr/></p>
19735             </td>
19736           </tr>
19737
19738           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19739            <!-- end of entry -->
19740         
19741                 
19742           <tr class="entry" id="dynamic_android.sensor.temperature">
19743             <td class="entry_name
19744              " rowspan="1">
19745               android.<wbr/>sensor.<wbr/>temperature
19746             </td>
19747             <td class="entry_type">
19748                 <span class="entry_type_name">float</span>
19749
19750               <span class="entry_type_visibility"> [system]</span>
19751
19752
19753
19754
19755
19756
19757             </td> <!-- entry_type -->
19758
19759             <td class="entry_description">
19760               <p>The temperature of the sensor,<wbr/> sampled at the time
19761 exposure began for this frame.<wbr/></p>
19762 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
19763 somewhere close to it.<wbr/></p>
19764             </td>
19765
19766             <td class="entry_units">
19767               Celsius
19768             </td>
19769
19770             <td class="entry_range">
19771               <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
19772             </td>
19773
19774             <td class="entry_tags">
19775               <ul class="entry_tags">
19776                   <li><a href="#tag_FUTURE">FUTURE</a></li>
19777               </ul>
19778             </td>
19779
19780           </tr>
19781
19782
19783           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19784            <!-- end of entry -->
19785         
19786                 
19787           <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
19788             <td class="entry_name
19789              " rowspan="3">
19790               android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
19791             </td>
19792             <td class="entry_type">
19793                 <span class="entry_type_name">rational</span>
19794                 <span class="entry_type_container">x</span>
19795
19796                 <span class="entry_type_array">
19797                   3
19798                 </span>
19799               <span class="entry_type_visibility"> [public]</span>
19800
19801
19802
19803
19804
19805
19806             </td> <!-- entry_type -->
19807
19808             <td class="entry_description">
19809               <p>The estimated camera neutral color in the native sensor colorspace at
19810 the time of capture.<wbr/></p>
19811             </td>
19812
19813             <td class="entry_units">
19814             </td>
19815
19816             <td class="entry_range">
19817             </td>
19818
19819             <td class="entry_tags">
19820               <ul class="entry_tags">
19821                   <li><a href="#tag_RAW">RAW</a></li>
19822               </ul>
19823             </td>
19824
19825           </tr>
19826           <tr class="entries_header">
19827             <th class="th_details" colspan="5">Details</th>
19828           </tr>
19829           <tr class="entry_cont">
19830             <td class="entry_details" colspan="5">
19831               <p>This value gives the neutral color point encoded as an RGB value in the
19832 native sensor color space.<wbr/>  The neutral color point indicates the
19833 currently estimated white point of the scene illumination.<wbr/>  It can be
19834 used to interpolate between the provided color transforms when
19835 processing raw sensor data.<wbr/></p>
19836 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
19837             </td>
19838           </tr>
19839
19840
19841           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19842            <!-- end of entry -->
19843         
19844                 
19845           <tr class="entry" id="dynamic_android.sensor.noiseProfile">
19846             <td class="entry_name
19847              " rowspan="5">
19848               android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
19849             </td>
19850             <td class="entry_type">
19851                 <span class="entry_type_name">double</span>
19852                 <span class="entry_type_container">x</span>
19853
19854                 <span class="entry_type_array">
19855                   2 x CFA Channels
19856                 </span>
19857               <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
19858
19859
19860
19861
19862                 <div class="entry_type_notes">Pairs of noise model coefficients</div>
19863
19864
19865             </td> <!-- entry_type -->
19866
19867             <td class="entry_description">
19868               <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
19869             </td>
19870
19871             <td class="entry_units">
19872             </td>
19873
19874             <td class="entry_range">
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 contains two noise model coefficients for each CFA channel
19890 corresponding to the sensor amplification (S) and sensor readout
19891 noise (O).<wbr/>  These are given as pairs of coefficients for each channel
19892 in the same order as channels listed for the CFA layout key
19893 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
19894 represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
19895 the first member of the Pair at index n is the S coefficient and the
19896 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
19897 <p>These coefficients are used in a two parameter noise model to describe
19898 the amount of noise present in the image for each CFA channel.<wbr/>  The
19899 noise model used here is:</p>
19900 <p>N(x) = sqrt(Sx + O)</p>
19901 <p>Where x represents the recorded signal of a CFA channel normalized to
19902 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
19903 that channel.<wbr/></p>
19904 <p>A more detailed description of the noise model can be found in the
19905 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
19906             </td>
19907           </tr>
19908
19909           <tr class="entries_header">
19910             <th class="th_details" colspan="5">HAL Implementation Details</th>
19911           </tr>
19912           <tr class="entry_cont">
19913             <td class="entry_details" colspan="5">
19914               <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
19915 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
19916 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
19917 channel,<wbr/> etc.<wbr/></p>
19918             </td>
19919           </tr>
19920
19921           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19922            <!-- end of entry -->
19923         
19924                 
19925           <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
19926             <td class="entry_name
19927              " rowspan="3">
19928               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
19929             </td>
19930             <td class="entry_type">
19931                 <span class="entry_type_name">float</span>
19932                 <span class="entry_type_container">x</span>
19933
19934                 <span class="entry_type_array">
19935                   hue_samples x saturation_samples x value_samples x 3
19936                 </span>
19937               <span class="entry_type_visibility"> [system]</span>
19938
19939
19940
19941
19942                 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
19943
19944
19945             </td> <!-- entry_type -->
19946
19947             <td class="entry_description">
19948               <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
19949 for each pixel.<wbr/></p>
19950             </td>
19951
19952             <td class="entry_units">
19953               
19954           The hue shift is given in degrees; saturation and value scale factors are
19955           unitless and are between 0 and 1 inclusive
19956           
19957             </td>
19958
19959             <td class="entry_range">
19960             </td>
19961
19962             <td class="entry_tags">
19963               <ul class="entry_tags">
19964                   <li><a href="#tag_RAW">RAW</a></li>
19965               </ul>
19966             </td>
19967
19968           </tr>
19969           <tr class="entries_header">
19970             <th class="th_details" colspan="5">Details</th>
19971           </tr>
19972           <tr class="entry_cont">
19973             <td class="entry_details" colspan="5">
19974               <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
19975 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
19976 <p>Each entry of this map contains three floats corresponding to the
19977 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
19978 hue shift has the lowest index.<wbr/> The map entries are stored in the key
19979 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
19980 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
19981 inner loop.<wbr/> All zero input saturation entries are required to have a
19982 value scale factor of 1.<wbr/>0.<wbr/></p>
19983             </td>
19984           </tr>
19985
19986
19987           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
19988            <!-- end of entry -->
19989         
19990                 
19991           <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
19992             <td class="entry_name
19993              " rowspan="3">
19994               android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
19995             </td>
19996             <td class="entry_type">
19997                 <span class="entry_type_name">float</span>
19998                 <span class="entry_type_container">x</span>
19999
20000                 <span class="entry_type_array">
20001                   samples x 2
20002                 </span>
20003               <span class="entry_type_visibility"> [system]</span>
20004
20005
20006
20007
20008                 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
20009
20010
20011             </td> <!-- entry_type -->
20012
20013             <td class="entry_description">
20014               <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
20015             </td>
20016
20017             <td class="entry_units">
20018             </td>
20019
20020             <td class="entry_range">
20021               <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
20022 <code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
20023 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
20024             </td>
20025
20026             <td class="entry_tags">
20027               <ul class="entry_tags">
20028                   <li><a href="#tag_RAW">RAW</a></li>
20029               </ul>
20030             </td>
20031
20032           </tr>
20033           <tr class="entries_header">
20034             <th class="th_details" colspan="5">Details</th>
20035           </tr>
20036           <tr class="entry_cont">
20037             <td class="entry_details" colspan="5">
20038               <p>This key contains a default tone curve that can be applied while
20039 processing the image as a starting point for user adjustments.<wbr/>
20040 The curve is specified as a list of value pairs in linear gamma.<wbr/>
20041 The curve is interpolated using a cubic spline.<wbr/></p>
20042             </td>
20043           </tr>
20044
20045
20046           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20047            <!-- end of entry -->
20048         
20049                 
20050           <tr class="entry" id="dynamic_android.sensor.greenSplit">
20051             <td class="entry_name
20052              " rowspan="5">
20053               android.<wbr/>sensor.<wbr/>green<wbr/>Split
20054             </td>
20055             <td class="entry_type">
20056                 <span class="entry_type_name">float</span>
20057
20058               <span class="entry_type_visibility"> [public]</span>
20059
20060
20061
20062
20063
20064
20065             </td> <!-- entry_type -->
20066
20067             <td class="entry_description">
20068               <p>The worst-case divergence between Bayer green channels.<wbr/></p>
20069             </td>
20070
20071             <td class="entry_units">
20072             </td>
20073
20074             <td class="entry_range">
20075               <p>&gt;= 0</p>
20076             </td>
20077
20078             <td class="entry_tags">
20079               <ul class="entry_tags">
20080                   <li><a href="#tag_RAW">RAW</a></li>
20081               </ul>
20082             </td>
20083
20084           </tr>
20085           <tr class="entries_header">
20086             <th class="th_details" colspan="5">Details</th>
20087           </tr>
20088           <tr class="entry_cont">
20089             <td class="entry_details" colspan="5">
20090               <p>This value is an estimate of the worst case split between the
20091 Bayer green channels in the red and blue rows in the sensor color
20092 filter array.<wbr/></p>
20093 <p>The green split is calculated as follows:</p>
20094 <ol>
20095 <li>A 5x5 pixel (or larger) window W within the active sensor array is
20096 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
20097 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
20098 chosen is implementation defined,<wbr/> and should be chosen to provide a
20099 green split estimate that is both representative of the entire image
20100 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
20101 <li>The arithmetic mean of the green channels from the red
20102 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
20103 <li>The arithmetic mean of the green channels from the blue
20104 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
20105 <li>The maximum ratio R of the two means is computed as follows:
20106 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
20107 </ol>
20108 <p>The ratio R is the green split divergence reported for this property,<wbr/>
20109 which represents how much the green channels differ in the mosaic
20110 pattern.<wbr/>  This value is typically used to determine the treatment of
20111 the green mosaic channels when demosaicing.<wbr/></p>
20112 <p>The green split value can be roughly interpreted as follows:</p>
20113 <ul>
20114 <li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
20115 <li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
20116 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
20117 <li>R &gt; 1.<wbr/>20 will require strong software correction to produce
20118 a usuable image (&gt;20% divergence).<wbr/></li>
20119 </ul>
20120             </td>
20121           </tr>
20122
20123           <tr class="entries_header">
20124             <th class="th_details" colspan="5">HAL Implementation Details</th>
20125           </tr>
20126           <tr class="entry_cont">
20127             <td class="entry_details" colspan="5">
20128               <p>The green split given may be a static value based on prior
20129 characterization of the camera sensor using the green split
20130 calculation method given here over a large,<wbr/> representative,<wbr/> sample
20131 set of images.<wbr/>  Other methods of calculation that produce equivalent
20132 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
20133             </td>
20134           </tr>
20135
20136           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20137            <!-- end of entry -->
20138         
20139                 
20140           <tr class="entry" id="dynamic_android.sensor.testPatternData">
20141             <td class="entry_name
20142              " rowspan="5">
20143               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
20144             </td>
20145             <td class="entry_type">
20146                 <span class="entry_type_name">int32</span>
20147                 <span class="entry_type_container">x</span>
20148
20149                 <span class="entry_type_array">
20150                   4
20151                 </span>
20152               <span class="entry_type_visibility"> [public]</span>
20153
20154
20155
20156
20157
20158
20159             </td> <!-- entry_type -->
20160
20161             <td class="entry_description">
20162               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
20163 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
20164             </td>
20165
20166             <td class="entry_units">
20167             </td>
20168
20169             <td class="entry_range">
20170             </td>
20171
20172             <td class="entry_tags">
20173             </td>
20174
20175           </tr>
20176           <tr class="entries_header">
20177             <th class="th_details" colspan="5">Details</th>
20178           </tr>
20179           <tr class="entry_cont">
20180             <td class="entry_details" colspan="5">
20181               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
20182 The camera device then uses the most significant X bits
20183 that correspond to how many bits are in its Bayer raw sensor
20184 output.<wbr/></p>
20185 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
20186 10 most significant bits from each color channel.<wbr/></p>
20187             </td>
20188           </tr>
20189
20190           <tr class="entries_header">
20191             <th class="th_details" colspan="5">HAL Implementation Details</th>
20192           </tr>
20193           <tr class="entry_cont">
20194             <td class="entry_details" colspan="5">
20195               
20196             </td>
20197           </tr>
20198
20199           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20200            <!-- end of entry -->
20201         
20202                 
20203           <tr class="entry" id="dynamic_android.sensor.testPatternMode">
20204             <td class="entry_name
20205              " rowspan="5">
20206               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
20207             </td>
20208             <td class="entry_type">
20209                 <span class="entry_type_name entry_type_name_enum">int32</span>
20210
20211               <span class="entry_type_visibility"> [public]</span>
20212
20213
20214
20215
20216
20217                 <ul class="entry_type_enum">
20218                   <li>
20219                     <span class="entry_type_enum_name">OFF</span>
20220                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
20221 device returns captures from the image sensor.<wbr/></p>
20222 <p>This is the default if the key is not set.<wbr/></p></span>
20223                   </li>
20224                   <li>
20225                     <span class="entry_type_enum_name">SOLID_COLOR</span>
20226                     <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
20227 respective color channel provided in
20228 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
20229 <p>For example:</p>
20230 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20231 </code></pre>
20232 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
20233 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
20234 </code></pre>
20235 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
20236 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
20237                   </li>
20238                   <li>
20239                     <span class="entry_type_enum_name">COLOR_BARS</span>
20240                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
20241 <p>The vertical bars (left-to-right) are as follows:</p>
20242 <ul>
20243 <li>100% white</li>
20244 <li>yellow</li>
20245 <li>cyan</li>
20246 <li>green</li>
20247 <li>magenta</li>
20248 <li>red</li>
20249 <li>blue</li>
20250 <li>black</li>
20251 </ul>
20252 <p>In general the image would look like the following:</p>
20253 <pre><code>W Y C G M R B K
20254 W Y C G M R B K
20255 W Y C G M R B K
20256 W Y C G M R B K
20257 W Y C G M R B K
20258 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20259 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20260 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
20261
20262 (B = Blue,<wbr/> K = Black)
20263 </code></pre>
20264 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
20265 When this is not possible,<wbr/> the bar size should be rounded
20266 down to the nearest integer and the pattern can repeat
20267 on the right side.<wbr/></p>
20268 <p>Each bar's height must always take up the full sensor
20269 pixel array height.<wbr/></p>
20270 <p>Each pixel in this test pattern must be set to either
20271 0% intensity or 100% intensity.<wbr/></p></span>
20272                   </li>
20273                   <li>
20274                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY</span>
20275                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
20276 each bar should start at its specified color at the top,<wbr/>
20277 and fade to gray at the bottom.<wbr/></p>
20278 <p>Furthermore each bar is further subdivided into a left and
20279 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
20280 and the right half should have a quantized gradient.<wbr/></p>
20281 <p>In particular,<wbr/> the right half's should consist of blocks of the
20282 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
20283 <p>The least significant bits in the quantized gradient should
20284 be copied from the most significant bits of the smooth gradient.<wbr/></p>
20285 <p>The height of each bar should always be a multiple of 128.<wbr/>
20286 When this is not the case,<wbr/> the pattern should repeat at the bottom
20287 of the image.<wbr/></p></span>
20288                   </li>
20289                   <li>
20290                     <span class="entry_type_enum_name">PN9</span>
20291                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
20292 generated from a PN9 512-bit sequence (typically implemented
20293 in hardware with a linear feedback shift register).<wbr/></p>
20294 <p>The generator should be reset at the beginning of each frame,<wbr/>
20295 and thus each subsequent raw frame with this test pattern should
20296 be exactly the same as the last.<wbr/></p></span>
20297                   </li>
20298                   <li>
20299                     <span class="entry_type_enum_name">CUSTOM1</span>
20300                     <span class="entry_type_enum_value">256</span>
20301                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
20302 available only on this camera device are at least this numeric
20303 value.<wbr/></p>
20304 <p>All of the custom test patterns will be static
20305 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
20306                   </li>
20307                 </ul>
20308
20309             </td> <!-- entry_type -->
20310
20311             <td class="entry_description">
20312               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
20313 doing a real exposure from the camera.<wbr/></p>
20314             </td>
20315
20316             <td class="entry_units">
20317             </td>
20318
20319             <td class="entry_range">
20320               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
20321             </td>
20322
20323             <td class="entry_tags">
20324             </td>
20325
20326           </tr>
20327           <tr class="entries_header">
20328             <th class="th_details" colspan="5">Details</th>
20329           </tr>
20330           <tr class="entry_cont">
20331             <td class="entry_details" colspan="5">
20332               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
20333 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
20334 work as normal.<wbr/></p>
20335 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
20336 occur (and that the test pattern remain unmodified,<wbr/> since the flash
20337 would not actually affect it).<wbr/></p>
20338 <p>Defaults to OFF.<wbr/></p>
20339             </td>
20340           </tr>
20341
20342           <tr class="entries_header">
20343             <th class="th_details" colspan="5">HAL Implementation Details</th>
20344           </tr>
20345           <tr class="entry_cont">
20346             <td class="entry_details" colspan="5">
20347               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
20348 <p>The HAL may choose to substitute test patterns from the sensor
20349 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
20350 indistinguishable to the ISP whether the data came from the
20351 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
20352             </td>
20353           </tr>
20354
20355           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20356            <!-- end of entry -->
20357         
20358                 
20359           <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
20360             <td class="entry_name
20361              " rowspan="5">
20362               android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
20363             </td>
20364             <td class="entry_type">
20365                 <span class="entry_type_name">int64</span>
20366
20367               <span class="entry_type_visibility"> [public]</span>
20368
20369
20370               <span class="entry_type_hwlevel">[limited] </span>
20371
20372
20373
20374
20375             </td> <!-- entry_type -->
20376
20377             <td class="entry_description">
20378               <p>Duration between the start of first row exposure
20379 and the start of last row exposure.<wbr/></p>
20380             </td>
20381
20382             <td class="entry_units">
20383               Nanoseconds
20384             </td>
20385
20386             <td class="entry_range">
20387               <p>&gt;= 0 and &lt;
20388 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
20389             </td>
20390
20391             <td class="entry_tags">
20392               <ul class="entry_tags">
20393                   <li><a href="#tag_V1">V1</a></li>
20394               </ul>
20395             </td>
20396
20397           </tr>
20398           <tr class="entries_header">
20399             <th class="th_details" colspan="5">Details</th>
20400           </tr>
20401           <tr class="entry_cont">
20402             <td class="entry_details" colspan="5">
20403               <p>This is the exposure time skew between the first and last
20404 row exposure start times.<wbr/> The first row and the last row are
20405 the first and last rows inside of the
20406 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20407 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
20408 to the frame readout time.<wbr/></p>
20409             </td>
20410           </tr>
20411
20412           <tr class="entries_header">
20413             <th class="th_details" colspan="5">HAL Implementation Details</th>
20414           </tr>
20415           <tr class="entry_cont">
20416             <td class="entry_details" colspan="5">
20417               <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
20418 exposure at the same time.<wbr/></p>
20419             </td>
20420           </tr>
20421
20422           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20423            <!-- end of entry -->
20424         
20425         
20426
20427       <!-- end of kind -->
20428       </tbody>
20429
20430   <!-- end of section -->
20431   <tr><td colspan="6" id="section_shading" class="section">shading</td></tr>
20432
20433
20434       <tr><td colspan="6" class="kind">controls</td></tr>
20435
20436       <thead class="entries_header">
20437         <tr>
20438           <th class="th_name">Property Name</th>
20439           <th class="th_type">Type</th>
20440           <th class="th_description">Description</th>
20441           <th class="th_units">Units</th>
20442           <th class="th_range">Range</th>
20443           <th class="th_tags">Tags</th>
20444         </tr>
20445       </thead>
20446
20447       <tbody>
20448
20449         
20450
20451         
20452
20453         
20454
20455         
20456
20457                 
20458           <tr class="entry" id="controls_android.shading.mode">
20459             <td class="entry_name
20460              " rowspan="3">
20461               android.<wbr/>shading.<wbr/>mode
20462             </td>
20463             <td class="entry_type">
20464                 <span class="entry_type_name entry_type_name_enum">byte</span>
20465
20466               <span class="entry_type_visibility"> [public]</span>
20467
20468
20469               <span class="entry_type_hwlevel">[full] </span>
20470
20471
20472
20473                 <ul class="entry_type_enum">
20474                   <li>
20475                     <span class="entry_type_enum_name">OFF</span>
20476                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
20477                   </li>
20478                   <li>
20479                     <span class="entry_type_enum_name">FAST</span>
20480                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
20481 frame rate relative to sensor raw output</p></span>
20482                   </li>
20483                   <li>
20484                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
20485                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
20486 cost of possibly reduced frame rate.<wbr/></p></span>
20487                   </li>
20488                 </ul>
20489
20490             </td> <!-- entry_type -->
20491
20492             <td class="entry_description">
20493               <p>Quality of lens shading correction applied
20494 to the image data.<wbr/></p>
20495             </td>
20496
20497             <td class="entry_units">
20498             </td>
20499
20500             <td class="entry_range">
20501               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
20502             </td>
20503
20504             <td class="entry_tags">
20505             </td>
20506
20507           </tr>
20508           <tr class="entries_header">
20509             <th class="th_details" colspan="5">Details</th>
20510           </tr>
20511           <tr class="entry_cont">
20512             <td class="entry_details" colspan="5">
20513               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
20514 camera device,<wbr/> and an identity lens shading map data will be provided
20515 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
20516 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
20517 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
20518 map shown below:</p>
20519 <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/>
20520  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/>
20521  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/>
20522  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/>
20523  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/>
20524  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 ]
20525 </code></pre>
20526 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
20527 device.<wbr/> Applications can request lens shading map data by setting
20528 <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
20529 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
20530 data will be the one applied by the camera device for this capture request.<wbr/></p>
20531 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
20532 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
20533 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>
20534 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
20535 to be converged before using the returned shading map data.<wbr/></p>
20536             </td>
20537           </tr>
20538
20539
20540           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20541            <!-- end of entry -->
20542         
20543                 
20544           <tr class="entry" id="controls_android.shading.strength">
20545             <td class="entry_name
20546              " rowspan="1">
20547               android.<wbr/>shading.<wbr/>strength
20548             </td>
20549             <td class="entry_type">
20550                 <span class="entry_type_name">byte</span>
20551
20552               <span class="entry_type_visibility"> [system]</span>
20553
20554
20555
20556
20557
20558
20559             </td> <!-- entry_type -->
20560
20561             <td class="entry_description">
20562               <p>Control the amount of shading correction
20563 applied to the images</p>
20564             </td>
20565
20566             <td class="entry_units">
20567               unitless: 1-10; 10 is full shading
20568           compensation
20569             </td>
20570
20571             <td class="entry_range">
20572             </td>
20573
20574             <td class="entry_tags">
20575               <ul class="entry_tags">
20576                   <li><a href="#tag_FUTURE">FUTURE</a></li>
20577               </ul>
20578             </td>
20579
20580           </tr>
20581
20582
20583           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20584            <!-- end of entry -->
20585         
20586         
20587
20588       <!-- end of kind -->
20589       </tbody>
20590       <tr><td colspan="6" class="kind">dynamic</td></tr>
20591
20592       <thead class="entries_header">
20593         <tr>
20594           <th class="th_name">Property Name</th>
20595           <th class="th_type">Type</th>
20596           <th class="th_description">Description</th>
20597           <th class="th_units">Units</th>
20598           <th class="th_range">Range</th>
20599           <th class="th_tags">Tags</th>
20600         </tr>
20601       </thead>
20602
20603       <tbody>
20604
20605         
20606
20607         
20608
20609         
20610
20611         
20612
20613                 
20614           <tr class="entry" id="dynamic_android.shading.mode">
20615             <td class="entry_name
20616              " rowspan="3">
20617               android.<wbr/>shading.<wbr/>mode
20618             </td>
20619             <td class="entry_type">
20620                 <span class="entry_type_name entry_type_name_enum">byte</span>
20621
20622               <span class="entry_type_visibility"> [public]</span>
20623
20624
20625               <span class="entry_type_hwlevel">[full] </span>
20626
20627
20628
20629                 <ul class="entry_type_enum">
20630                   <li>
20631                     <span class="entry_type_enum_name">OFF</span>
20632                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
20633                   </li>
20634                   <li>
20635                     <span class="entry_type_enum_name">FAST</span>
20636                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
20637 frame rate relative to sensor raw output</p></span>
20638                   </li>
20639                   <li>
20640                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
20641                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
20642 cost of possibly reduced frame rate.<wbr/></p></span>
20643                   </li>
20644                 </ul>
20645
20646             </td> <!-- entry_type -->
20647
20648             <td class="entry_description">
20649               <p>Quality of lens shading correction applied
20650 to the image data.<wbr/></p>
20651             </td>
20652
20653             <td class="entry_units">
20654             </td>
20655
20656             <td class="entry_range">
20657               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
20658             </td>
20659
20660             <td class="entry_tags">
20661             </td>
20662
20663           </tr>
20664           <tr class="entries_header">
20665             <th class="th_details" colspan="5">Details</th>
20666           </tr>
20667           <tr class="entry_cont">
20668             <td class="entry_details" colspan="5">
20669               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
20670 camera device,<wbr/> and an identity lens shading map data will be provided
20671 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
20672 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
20673 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
20674 map shown below:</p>
20675 <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/>
20676  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/>
20677  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/>
20678  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/>
20679  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/>
20680  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 ]
20681 </code></pre>
20682 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
20683 device.<wbr/> Applications can request lens shading map data by setting
20684 <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
20685 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
20686 data will be the one applied by the camera device for this capture request.<wbr/></p>
20687 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
20688 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
20689 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>
20690 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
20691 to be converged before using the returned shading map data.<wbr/></p>
20692             </td>
20693           </tr>
20694
20695
20696           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20697            <!-- end of entry -->
20698         
20699         
20700
20701       <!-- end of kind -->
20702       </tbody>
20703       <tr><td colspan="6" class="kind">static</td></tr>
20704
20705       <thead class="entries_header">
20706         <tr>
20707           <th class="th_name">Property Name</th>
20708           <th class="th_type">Type</th>
20709           <th class="th_description">Description</th>
20710           <th class="th_units">Units</th>
20711           <th class="th_range">Range</th>
20712           <th class="th_tags">Tags</th>
20713         </tr>
20714       </thead>
20715
20716       <tbody>
20717
20718         
20719
20720         
20721
20722         
20723
20724         
20725
20726                 
20727           <tr class="entry" id="static_android.shading.availableModes">
20728             <td class="entry_name
20729              " rowspan="5">
20730               android.<wbr/>shading.<wbr/>available<wbr/>Modes
20731             </td>
20732             <td class="entry_type">
20733                 <span class="entry_type_name">byte</span>
20734                 <span class="entry_type_container">x</span>
20735
20736                 <span class="entry_type_array">
20737                   n
20738                 </span>
20739               <span class="entry_type_visibility"> [public as enumList]</span>
20740
20741
20742               <span class="entry_type_hwlevel">[legacy] </span>
20743
20744
20745                 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
20746
20747
20748             </td> <!-- entry_type -->
20749
20750             <td class="entry_description">
20751               <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>
20752             </td>
20753
20754             <td class="entry_units">
20755             </td>
20756
20757             <td class="entry_range">
20758               <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
20759             </td>
20760
20761             <td class="entry_tags">
20762             </td>
20763
20764           </tr>
20765           <tr class="entries_header">
20766             <th class="th_details" colspan="5">Details</th>
20767           </tr>
20768           <tr class="entry_cont">
20769             <td class="entry_details" colspan="5">
20770               <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
20771 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
20772 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
20773 LEGACY devices will always only support FAST mode.<wbr/></p>
20774             </td>
20775           </tr>
20776
20777           <tr class="entries_header">
20778             <th class="th_details" colspan="5">HAL Implementation Details</th>
20779           </tr>
20780           <tr class="entry_cont">
20781             <td class="entry_details" colspan="5">
20782               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
20783 available on the camera device,<wbr/> but the underlying implementation can be the same for
20784 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
20785 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
20786             </td>
20787           </tr>
20788
20789           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20790            <!-- end of entry -->
20791         
20792         
20793
20794       <!-- end of kind -->
20795       </tbody>
20796
20797   <!-- end of section -->
20798   <tr><td colspan="6" id="section_statistics" class="section">statistics</td></tr>
20799
20800
20801       <tr><td colspan="6" class="kind">controls</td></tr>
20802
20803       <thead class="entries_header">
20804         <tr>
20805           <th class="th_name">Property Name</th>
20806           <th class="th_type">Type</th>
20807           <th class="th_description">Description</th>
20808           <th class="th_units">Units</th>
20809           <th class="th_range">Range</th>
20810           <th class="th_tags">Tags</th>
20811         </tr>
20812       </thead>
20813
20814       <tbody>
20815
20816         
20817
20818         
20819
20820         
20821
20822         
20823
20824                 
20825           <tr class="entry" id="controls_android.statistics.faceDetectMode">
20826             <td class="entry_name
20827              " rowspan="5">
20828               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
20829             </td>
20830             <td class="entry_type">
20831                 <span class="entry_type_name entry_type_name_enum">byte</span>
20832
20833               <span class="entry_type_visibility"> [public]</span>
20834
20835
20836               <span class="entry_type_hwlevel">[legacy] </span>
20837
20838
20839
20840                 <ul class="entry_type_enum">
20841                   <li>
20842                     <span class="entry_type_enum_name">OFF</span>
20843                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
20844 results.<wbr/></p></span>
20845                   </li>
20846                   <li>
20847                     <span class="entry_type_enum_name">SIMPLE</span>
20848                     <span class="entry_type_enum_optional">[optional]</span>
20849                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
20850                   </li>
20851                   <li>
20852                     <span class="entry_type_enum_name">FULL</span>
20853                     <span class="entry_type_enum_optional">[optional]</span>
20854                     <span class="entry_type_enum_notes"><p>Return all face
20855 metadata.<wbr/></p>
20856 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
20857                   </li>
20858                 </ul>
20859
20860             </td> <!-- entry_type -->
20861
20862             <td class="entry_description">
20863               <p>Operating mode for the face detector
20864 unit.<wbr/></p>
20865             </td>
20866
20867             <td class="entry_units">
20868             </td>
20869
20870             <td class="entry_range">
20871               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
20872             </td>
20873
20874             <td class="entry_tags">
20875               <ul class="entry_tags">
20876                   <li><a href="#tag_BC">BC</a></li>
20877               </ul>
20878             </td>
20879
20880           </tr>
20881           <tr class="entries_header">
20882             <th class="th_details" colspan="5">Details</th>
20883           </tr>
20884           <tr class="entry_cont">
20885             <td class="entry_details" colspan="5">
20886               <p>Whether face detection is enabled,<wbr/> and whether it
20887 should output just the basic fields or the full set of
20888 fields.<wbr/></p>
20889             </td>
20890           </tr>
20891
20892           <tr class="entries_header">
20893             <th class="th_details" colspan="5">HAL Implementation Details</th>
20894           </tr>
20895           <tr class="entry_cont">
20896             <td class="entry_details" colspan="5">
20897               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
20898 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
20899 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
20900 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
20901             </td>
20902           </tr>
20903
20904           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20905            <!-- end of entry -->
20906         
20907                 
20908           <tr class="entry" id="controls_android.statistics.histogramMode">
20909             <td class="entry_name
20910              " rowspan="1">
20911               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
20912             </td>
20913             <td class="entry_type">
20914                 <span class="entry_type_name entry_type_name_enum">byte</span>
20915
20916               <span class="entry_type_visibility"> [system as boolean]</span>
20917
20918
20919
20920
20921
20922                 <ul class="entry_type_enum">
20923                   <li>
20924                     <span class="entry_type_enum_name">OFF</span>
20925                   </li>
20926                   <li>
20927                     <span class="entry_type_enum_name">ON</span>
20928                   </li>
20929                 </ul>
20930
20931             </td> <!-- entry_type -->
20932
20933             <td class="entry_description">
20934               <p>Operating mode for histogram
20935 generation</p>
20936             </td>
20937
20938             <td class="entry_units">
20939             </td>
20940
20941             <td class="entry_range">
20942             </td>
20943
20944             <td class="entry_tags">
20945               <ul class="entry_tags">
20946                   <li><a href="#tag_FUTURE">FUTURE</a></li>
20947               </ul>
20948             </td>
20949
20950           </tr>
20951
20952
20953           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
20954            <!-- end of entry -->
20955         
20956                 
20957           <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
20958             <td class="entry_name
20959              " rowspan="1">
20960               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
20961             </td>
20962             <td class="entry_type">
20963                 <span class="entry_type_name entry_type_name_enum">byte</span>
20964
20965               <span class="entry_type_visibility"> [system as boolean]</span>
20966
20967
20968
20969
20970
20971                 <ul class="entry_type_enum">
20972                   <li>
20973                     <span class="entry_type_enum_name">OFF</span>
20974                   </li>
20975                   <li>
20976                     <span class="entry_type_enum_name">ON</span>
20977                   </li>
20978                 </ul>
20979
20980             </td> <!-- entry_type -->
20981
20982             <td class="entry_description">
20983               <p>Operating mode for sharpness map
20984 generation</p>
20985             </td>
20986
20987             <td class="entry_units">
20988             </td>
20989
20990             <td class="entry_range">
20991             </td>
20992
20993             <td class="entry_tags">
20994               <ul class="entry_tags">
20995                   <li><a href="#tag_FUTURE">FUTURE</a></li>
20996               </ul>
20997             </td>
20998
20999           </tr>
21000
21001
21002           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21003            <!-- end of entry -->
21004         
21005                 
21006           <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
21007             <td class="entry_name
21008              " rowspan="3">
21009               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
21010             </td>
21011             <td class="entry_type">
21012                 <span class="entry_type_name entry_type_name_enum">byte</span>
21013
21014               <span class="entry_type_visibility"> [public as boolean]</span>
21015
21016
21017
21018
21019
21020                 <ul class="entry_type_enum">
21021                   <li>
21022                     <span class="entry_type_enum_name">OFF</span>
21023                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
21024                   </li>
21025                   <li>
21026                     <span class="entry_type_enum_name">ON</span>
21027                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
21028                   </li>
21029                 </ul>
21030
21031             </td> <!-- entry_type -->
21032
21033             <td class="entry_description">
21034               <p>Operating mode for hot pixel map generation.<wbr/></p>
21035             </td>
21036
21037             <td class="entry_units">
21038             </td>
21039
21040             <td class="entry_range">
21041               <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>
21042             </td>
21043
21044             <td class="entry_tags">
21045               <ul class="entry_tags">
21046                   <li><a href="#tag_V1">V1</a></li>
21047                   <li><a href="#tag_RAW">RAW</a></li>
21048               </ul>
21049             </td>
21050
21051           </tr>
21052           <tr class="entries_header">
21053             <th class="th_details" colspan="5">Details</th>
21054           </tr>
21055           <tr class="entry_cont">
21056             <td class="entry_details" colspan="5">
21057               <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/>
21058 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
21059             </td>
21060           </tr>
21061
21062
21063           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21064            <!-- end of entry -->
21065         
21066                 
21067           <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
21068             <td class="entry_name
21069              " rowspan="3">
21070               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
21071             </td>
21072             <td class="entry_type">
21073                 <span class="entry_type_name entry_type_name_enum">byte</span>
21074
21075               <span class="entry_type_visibility"> [public]</span>
21076
21077
21078               <span class="entry_type_hwlevel">[full] </span>
21079
21080
21081
21082                 <ul class="entry_type_enum">
21083                   <li>
21084                     <span class="entry_type_enum_name">OFF</span>
21085                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
21086                   </li>
21087                   <li>
21088                     <span class="entry_type_enum_name">ON</span>
21089                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
21090                   </li>
21091                 </ul>
21092
21093             </td> <!-- entry_type -->
21094
21095             <td class="entry_description">
21096               <p>Whether the camera device will output the lens
21097 shading map in output result metadata.<wbr/></p>
21098             </td>
21099
21100             <td class="entry_units">
21101             </td>
21102
21103             <td class="entry_range">
21104               <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>
21105             </td>
21106
21107             <td class="entry_tags">
21108               <ul class="entry_tags">
21109                   <li><a href="#tag_RAW">RAW</a></li>
21110               </ul>
21111             </td>
21112
21113           </tr>
21114           <tr class="entries_header">
21115             <th class="th_details" colspan="5">Details</th>
21116           </tr>
21117           <tr class="entry_cont">
21118             <td class="entry_details" colspan="5">
21119               <p>When set to ON,<wbr/>
21120 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
21121 the output result metadata.<wbr/></p>
21122 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
21123             </td>
21124           </tr>
21125
21126
21127           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21128            <!-- end of entry -->
21129         
21130         
21131
21132       <!-- end of kind -->
21133       </tbody>
21134       <tr><td colspan="6" class="kind">static</td></tr>
21135
21136       <thead class="entries_header">
21137         <tr>
21138           <th class="th_name">Property Name</th>
21139           <th class="th_type">Type</th>
21140           <th class="th_description">Description</th>
21141           <th class="th_units">Units</th>
21142           <th class="th_range">Range</th>
21143           <th class="th_tags">Tags</th>
21144         </tr>
21145       </thead>
21146
21147       <tbody>
21148
21149         
21150
21151         
21152
21153         
21154
21155         
21156                 
21157             
21158
21159                 
21160           <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
21161             <td class="entry_name
21162              " rowspan="3">
21163               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
21164             </td>
21165             <td class="entry_type">
21166                 <span class="entry_type_name">byte</span>
21167                 <span class="entry_type_container">x</span>
21168
21169                 <span class="entry_type_array">
21170                   n
21171                 </span>
21172               <span class="entry_type_visibility"> [public as enumList]</span>
21173
21174
21175               <span class="entry_type_hwlevel">[legacy] </span>
21176
21177
21178                 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
21179
21180
21181             </td> <!-- entry_type -->
21182
21183             <td class="entry_description">
21184               <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
21185 supported by this camera device.<wbr/></p>
21186             </td>
21187
21188             <td class="entry_units">
21189             </td>
21190
21191             <td class="entry_range">
21192               <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
21193             </td>
21194
21195             <td class="entry_tags">
21196             </td>
21197
21198           </tr>
21199           <tr class="entries_header">
21200             <th class="th_details" colspan="5">Details</th>
21201           </tr>
21202           <tr class="entry_cont">
21203             <td class="entry_details" colspan="5">
21204               <p>OFF is always supported.<wbr/></p>
21205             </td>
21206           </tr>
21207
21208
21209           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21210            <!-- end of entry -->
21211         
21212                 
21213           <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
21214             <td class="entry_name
21215              " rowspan="1">
21216               android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
21217             </td>
21218             <td class="entry_type">
21219                 <span class="entry_type_name">int32</span>
21220
21221               <span class="entry_type_visibility"> [system]</span>
21222
21223
21224
21225
21226
21227
21228             </td> <!-- entry_type -->
21229
21230             <td class="entry_description">
21231               <p>Number of histogram buckets
21232 supported</p>
21233             </td>
21234
21235             <td class="entry_units">
21236             </td>
21237
21238             <td class="entry_range">
21239               <p>&gt;= 64</p>
21240             </td>
21241
21242             <td class="entry_tags">
21243               <ul class="entry_tags">
21244                   <li><a href="#tag_FUTURE">FUTURE</a></li>
21245               </ul>
21246             </td>
21247
21248           </tr>
21249
21250
21251           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21252            <!-- end of entry -->
21253         
21254                 
21255           <tr class="entry" id="static_android.statistics.info.maxFaceCount">
21256             <td class="entry_name
21257              " rowspan="1">
21258               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
21259             </td>
21260             <td class="entry_type">
21261                 <span class="entry_type_name">int32</span>
21262
21263               <span class="entry_type_visibility"> [public]</span>
21264
21265
21266               <span class="entry_type_hwlevel">[legacy] </span>
21267
21268
21269
21270
21271             </td> <!-- entry_type -->
21272
21273             <td class="entry_description">
21274               <p>The maximum number of simultaneously detectable
21275 faces.<wbr/></p>
21276             </td>
21277
21278             <td class="entry_units">
21279             </td>
21280
21281             <td class="entry_range">
21282               <p>0 for cameras without available face detection; otherwise:
21283 <code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
21284 <code>&gt;0</code> for LEGACY devices.<wbr/></p>
21285             </td>
21286
21287             <td class="entry_tags">
21288               <ul class="entry_tags">
21289                   <li><a href="#tag_BC">BC</a></li>
21290               </ul>
21291             </td>
21292
21293           </tr>
21294
21295
21296           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21297            <!-- end of entry -->
21298         
21299                 
21300           <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
21301             <td class="entry_name
21302              " rowspan="1">
21303               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
21304             </td>
21305             <td class="entry_type">
21306                 <span class="entry_type_name">int32</span>
21307
21308               <span class="entry_type_visibility"> [system]</span>
21309
21310
21311
21312
21313
21314
21315             </td> <!-- entry_type -->
21316
21317             <td class="entry_description">
21318               <p>Maximum value possible for a histogram
21319 bucket</p>
21320             </td>
21321
21322             <td class="entry_units">
21323             </td>
21324
21325             <td class="entry_range">
21326             </td>
21327
21328             <td class="entry_tags">
21329               <ul class="entry_tags">
21330                   <li><a href="#tag_FUTURE">FUTURE</a></li>
21331               </ul>
21332             </td>
21333
21334           </tr>
21335
21336
21337           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21338            <!-- end of entry -->
21339         
21340                 
21341           <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
21342             <td class="entry_name
21343              " rowspan="1">
21344               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
21345             </td>
21346             <td class="entry_type">
21347                 <span class="entry_type_name">int32</span>
21348
21349               <span class="entry_type_visibility"> [system]</span>
21350
21351
21352
21353
21354
21355
21356             </td> <!-- entry_type -->
21357
21358             <td class="entry_description">
21359               <p>Maximum value possible for a sharpness map
21360 region.<wbr/></p>
21361             </td>
21362
21363             <td class="entry_units">
21364             </td>
21365
21366             <td class="entry_range">
21367             </td>
21368
21369             <td class="entry_tags">
21370               <ul class="entry_tags">
21371                   <li><a href="#tag_FUTURE">FUTURE</a></li>
21372               </ul>
21373             </td>
21374
21375           </tr>
21376
21377
21378           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21379            <!-- end of entry -->
21380         
21381                 
21382           <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
21383             <td class="entry_name
21384              " rowspan="1">
21385               android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
21386             </td>
21387             <td class="entry_type">
21388                 <span class="entry_type_name">int32</span>
21389                 <span class="entry_type_container">x</span>
21390
21391                 <span class="entry_type_array">
21392                   2
21393                 </span>
21394               <span class="entry_type_visibility"> [system as size]</span>
21395
21396
21397
21398
21399                 <div class="entry_type_notes">width x height</div>
21400
21401
21402             </td> <!-- entry_type -->
21403
21404             <td class="entry_description">
21405               <p>Dimensions of the sharpness
21406 map</p>
21407             </td>
21408
21409             <td class="entry_units">
21410             </td>
21411
21412             <td class="entry_range">
21413               <p>Must be at least 32 x 32</p>
21414             </td>
21415
21416             <td class="entry_tags">
21417               <ul class="entry_tags">
21418                   <li><a href="#tag_FUTURE">FUTURE</a></li>
21419               </ul>
21420             </td>
21421
21422           </tr>
21423
21424
21425           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21426            <!-- end of entry -->
21427         
21428                 
21429           <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
21430             <td class="entry_name
21431              " rowspan="3">
21432               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
21433             </td>
21434             <td class="entry_type">
21435                 <span class="entry_type_name">byte</span>
21436                 <span class="entry_type_container">x</span>
21437
21438                 <span class="entry_type_array">
21439                   n
21440                 </span>
21441               <span class="entry_type_visibility"> [public as boolean]</span>
21442
21443
21444
21445
21446                 <div class="entry_type_notes">list of enums</div>
21447
21448
21449             </td> <!-- entry_type -->
21450
21451             <td class="entry_description">
21452               <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
21453 supported by this camera device.<wbr/></p>
21454             </td>
21455
21456             <td class="entry_units">
21457             </td>
21458
21459             <td class="entry_range">
21460               <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
21461             </td>
21462
21463             <td class="entry_tags">
21464               <ul class="entry_tags">
21465                   <li><a href="#tag_V1">V1</a></li>
21466                   <li><a href="#tag_RAW">RAW</a></li>
21467               </ul>
21468             </td>
21469
21470           </tr>
21471           <tr class="entries_header">
21472             <th class="th_details" colspan="5">Details</th>
21473           </tr>
21474           <tr class="entry_cont">
21475             <td class="entry_details" colspan="5">
21476               <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
21477 <code>false</code>.<wbr/></p>
21478 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
21479             </td>
21480           </tr>
21481
21482
21483           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21484            <!-- end of entry -->
21485         
21486                 
21487           <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
21488             <td class="entry_name
21489              " rowspan="3">
21490               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
21491             </td>
21492             <td class="entry_type">
21493                 <span class="entry_type_name">byte</span>
21494                 <span class="entry_type_container">x</span>
21495
21496                 <span class="entry_type_array">
21497                   n
21498                 </span>
21499               <span class="entry_type_visibility"> [public]</span>
21500
21501
21502
21503
21504                 <div class="entry_type_notes">list of enums</div>
21505
21506
21507             </td> <!-- entry_type -->
21508
21509             <td class="entry_description">
21510               <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
21511 are supported by this camera device.<wbr/></p>
21512             </td>
21513
21514             <td class="entry_units">
21515             </td>
21516
21517             <td class="entry_range">
21518               <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
21519             </td>
21520
21521             <td class="entry_tags">
21522             </td>
21523
21524           </tr>
21525           <tr class="entries_header">
21526             <th class="th_details" colspan="5">Details</th>
21527           </tr>
21528           <tr class="entry_cont">
21529             <td class="entry_details" colspan="5">
21530               <p>If no lens shading map output is available for this camera device,<wbr/> this key will
21531 contain only OFF.<wbr/></p>
21532 <p>ON is always supported on devices with the RAW capability.<wbr/>
21533 LEGACY mode devices will always only support OFF.<wbr/></p>
21534             </td>
21535           </tr>
21536
21537
21538           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21539            <!-- end of entry -->
21540         
21541         
21542         
21543
21544         
21545
21546       <!-- end of kind -->
21547       </tbody>
21548       <tr><td colspan="6" class="kind">dynamic</td></tr>
21549
21550       <thead class="entries_header">
21551         <tr>
21552           <th class="th_name">Property Name</th>
21553           <th class="th_type">Type</th>
21554           <th class="th_description">Description</th>
21555           <th class="th_units">Units</th>
21556           <th class="th_range">Range</th>
21557           <th class="th_tags">Tags</th>
21558         </tr>
21559       </thead>
21560
21561       <tbody>
21562
21563         
21564
21565         
21566
21567         
21568
21569         
21570
21571                 
21572           <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
21573             <td class="entry_name
21574              " rowspan="5">
21575               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
21576             </td>
21577             <td class="entry_type">
21578                 <span class="entry_type_name entry_type_name_enum">byte</span>
21579
21580               <span class="entry_type_visibility"> [public]</span>
21581
21582
21583               <span class="entry_type_hwlevel">[legacy] </span>
21584
21585
21586
21587                 <ul class="entry_type_enum">
21588                   <li>
21589                     <span class="entry_type_enum_name">OFF</span>
21590                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
21591 results.<wbr/></p></span>
21592                   </li>
21593                   <li>
21594                     <span class="entry_type_enum_name">SIMPLE</span>
21595                     <span class="entry_type_enum_optional">[optional]</span>
21596                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
21597                   </li>
21598                   <li>
21599                     <span class="entry_type_enum_name">FULL</span>
21600                     <span class="entry_type_enum_optional">[optional]</span>
21601                     <span class="entry_type_enum_notes"><p>Return all face
21602 metadata.<wbr/></p>
21603 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
21604                   </li>
21605                 </ul>
21606
21607             </td> <!-- entry_type -->
21608
21609             <td class="entry_description">
21610               <p>Operating mode for the face detector
21611 unit.<wbr/></p>
21612             </td>
21613
21614             <td class="entry_units">
21615             </td>
21616
21617             <td class="entry_range">
21618               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
21619             </td>
21620
21621             <td class="entry_tags">
21622               <ul class="entry_tags">
21623                   <li><a href="#tag_BC">BC</a></li>
21624               </ul>
21625             </td>
21626
21627           </tr>
21628           <tr class="entries_header">
21629             <th class="th_details" colspan="5">Details</th>
21630           </tr>
21631           <tr class="entry_cont">
21632             <td class="entry_details" colspan="5">
21633               <p>Whether face detection is enabled,<wbr/> and whether it
21634 should output just the basic fields or the full set of
21635 fields.<wbr/></p>
21636             </td>
21637           </tr>
21638
21639           <tr class="entries_header">
21640             <th class="th_details" colspan="5">HAL Implementation Details</th>
21641           </tr>
21642           <tr class="entry_cont">
21643             <td class="entry_details" colspan="5">
21644               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
21645 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
21646 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
21647 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
21648             </td>
21649           </tr>
21650
21651           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21652            <!-- end of entry -->
21653         
21654                 
21655           <tr class="entry" id="dynamic_android.statistics.faceIds">
21656             <td class="entry_name
21657              " rowspan="3">
21658               android.<wbr/>statistics.<wbr/>face<wbr/>Ids
21659             </td>
21660             <td class="entry_type">
21661                 <span class="entry_type_name">int32</span>
21662                 <span class="entry_type_container">x</span>
21663
21664                 <span class="entry_type_array">
21665                   n
21666                 </span>
21667               <span class="entry_type_visibility"> [hidden]</span>
21668
21669
21670               <span class="entry_type_hwlevel">[legacy] </span>
21671
21672
21673
21674
21675             </td> <!-- entry_type -->
21676
21677             <td class="entry_description">
21678               <p>List of unique IDs for detected faces.<wbr/></p>
21679             </td>
21680
21681             <td class="entry_units">
21682             </td>
21683
21684             <td class="entry_range">
21685             </td>
21686
21687             <td class="entry_tags">
21688               <ul class="entry_tags">
21689                   <li><a href="#tag_BC">BC</a></li>
21690               </ul>
21691             </td>
21692
21693           </tr>
21694           <tr class="entries_header">
21695             <th class="th_details" colspan="5">Details</th>
21696           </tr>
21697           <tr class="entry_cont">
21698             <td class="entry_details" colspan="5">
21699               <p>Each detected face is given a unique ID that is valid for as long as the face is visible
21700 to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
21701 assigned a new ID.<wbr/></p>
21702 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
21703             </td>
21704           </tr>
21705
21706
21707           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21708            <!-- end of entry -->
21709         
21710                 
21711           <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
21712             <td class="entry_name
21713              " rowspan="3">
21714               android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
21715             </td>
21716             <td class="entry_type">
21717                 <span class="entry_type_name">int32</span>
21718                 <span class="entry_type_container">x</span>
21719
21720                 <span class="entry_type_array">
21721                   n x 6
21722                 </span>
21723               <span class="entry_type_visibility"> [hidden]</span>
21724
21725
21726               <span class="entry_type_hwlevel">[legacy] </span>
21727
21728
21729                 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
21730
21731
21732             </td> <!-- entry_type -->
21733
21734             <td class="entry_description">
21735               <p>List of landmarks for detected
21736 faces.<wbr/></p>
21737             </td>
21738
21739             <td class="entry_units">
21740             </td>
21741
21742             <td class="entry_range">
21743             </td>
21744
21745             <td class="entry_tags">
21746               <ul class="entry_tags">
21747                   <li><a href="#tag_BC">BC</a></li>
21748               </ul>
21749             </td>
21750
21751           </tr>
21752           <tr class="entries_header">
21753             <th class="th_details" colspan="5">Details</th>
21754           </tr>
21755           <tr class="entry_cont">
21756             <td class="entry_details" colspan="5">
21757               <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
21758 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
21759 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
21760             </td>
21761           </tr>
21762
21763
21764           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21765            <!-- end of entry -->
21766         
21767                 
21768           <tr class="entry" id="dynamic_android.statistics.faceRectangles">
21769             <td class="entry_name
21770              " rowspan="3">
21771               android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
21772             </td>
21773             <td class="entry_type">
21774                 <span class="entry_type_name">int32</span>
21775                 <span class="entry_type_container">x</span>
21776
21777                 <span class="entry_type_array">
21778                   n x 4
21779                 </span>
21780               <span class="entry_type_visibility"> [hidden as rectangle]</span>
21781
21782
21783               <span class="entry_type_hwlevel">[legacy] </span>
21784
21785
21786                 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
21787
21788
21789             </td> <!-- entry_type -->
21790
21791             <td class="entry_description">
21792               <p>List of the bounding rectangles for detected
21793 faces.<wbr/></p>
21794             </td>
21795
21796             <td class="entry_units">
21797             </td>
21798
21799             <td class="entry_range">
21800             </td>
21801
21802             <td class="entry_tags">
21803               <ul class="entry_tags">
21804                   <li><a href="#tag_BC">BC</a></li>
21805               </ul>
21806             </td>
21807
21808           </tr>
21809           <tr class="entries_header">
21810             <th class="th_details" colspan="5">Details</th>
21811           </tr>
21812           <tr class="entry_cont">
21813             <td class="entry_details" colspan="5">
21814               <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
21815 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
21816 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
21817             </td>
21818           </tr>
21819
21820
21821           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21822            <!-- end of entry -->
21823         
21824                 
21825           <tr class="entry" id="dynamic_android.statistics.faceScores">
21826             <td class="entry_name
21827              " rowspan="5">
21828               android.<wbr/>statistics.<wbr/>face<wbr/>Scores
21829             </td>
21830             <td class="entry_type">
21831                 <span class="entry_type_name">byte</span>
21832                 <span class="entry_type_container">x</span>
21833
21834                 <span class="entry_type_array">
21835                   n
21836                 </span>
21837               <span class="entry_type_visibility"> [hidden]</span>
21838
21839
21840               <span class="entry_type_hwlevel">[legacy] </span>
21841
21842
21843
21844
21845             </td> <!-- entry_type -->
21846
21847             <td class="entry_description">
21848               <p>List of the face confidence scores for
21849 detected faces</p>
21850             </td>
21851
21852             <td class="entry_units">
21853             </td>
21854
21855             <td class="entry_range">
21856               <p>1-100</p>
21857             </td>
21858
21859             <td class="entry_tags">
21860               <ul class="entry_tags">
21861                   <li><a href="#tag_BC">BC</a></li>
21862               </ul>
21863             </td>
21864
21865           </tr>
21866           <tr class="entries_header">
21867             <th class="th_details" colspan="5">Details</th>
21868           </tr>
21869           <tr class="entry_cont">
21870             <td class="entry_details" colspan="5">
21871               <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
21872             </td>
21873           </tr>
21874
21875           <tr class="entries_header">
21876             <th class="th_details" colspan="5">HAL Implementation Details</th>
21877           </tr>
21878           <tr class="entry_cont">
21879             <td class="entry_details" colspan="5">
21880               <p>The value should be meaningful (for example,<wbr/> setting 100 at
21881 all times is illegal).<wbr/></p>
21882             </td>
21883           </tr>
21884
21885           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21886            <!-- end of entry -->
21887         
21888                 
21889           <tr class="entry" id="dynamic_android.statistics.faces">
21890             <td class="entry_name
21891              " rowspan="3">
21892               android.<wbr/>statistics.<wbr/>faces
21893             </td>
21894             <td class="entry_type">
21895                 <span class="entry_type_name">int32</span>
21896                 <span class="entry_type_container">x</span>
21897
21898                 <span class="entry_type_array">
21899                   n
21900                 </span>
21901               <span class="entry_type_visibility"> [public as face]</span>
21902
21903               <span class="entry_type_synthetic">[synthetic] </span>
21904
21905               <span class="entry_type_hwlevel">[legacy] </span>
21906
21907
21908
21909
21910             </td> <!-- entry_type -->
21911
21912             <td class="entry_description">
21913               <p>List of the faces detected through camera face detection
21914 in this capture.<wbr/></p>
21915             </td>
21916
21917             <td class="entry_units">
21918             </td>
21919
21920             <td class="entry_range">
21921             </td>
21922
21923             <td class="entry_tags">
21924             </td>
21925
21926           </tr>
21927           <tr class="entries_header">
21928             <th class="th_details" colspan="5">Details</th>
21929           </tr>
21930           <tr class="entry_cont">
21931             <td class="entry_details" colspan="5">
21932               <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>
21933             </td>
21934           </tr>
21935
21936
21937           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21938            <!-- end of entry -->
21939         
21940                 
21941           <tr class="entry" id="dynamic_android.statistics.histogram">
21942             <td class="entry_name
21943              " rowspan="3">
21944               android.<wbr/>statistics.<wbr/>histogram
21945             </td>
21946             <td class="entry_type">
21947                 <span class="entry_type_name">int32</span>
21948                 <span class="entry_type_container">x</span>
21949
21950                 <span class="entry_type_array">
21951                   n x 3
21952                 </span>
21953               <span class="entry_type_visibility"> [system]</span>
21954
21955
21956
21957
21958                 <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>
21959
21960
21961             </td> <!-- entry_type -->
21962
21963             <td class="entry_description">
21964               <p>A 3-channel histogram based on the raw
21965 sensor data</p>
21966             </td>
21967
21968             <td class="entry_units">
21969             </td>
21970
21971             <td class="entry_range">
21972             </td>
21973
21974             <td class="entry_tags">
21975               <ul class="entry_tags">
21976                   <li><a href="#tag_FUTURE">FUTURE</a></li>
21977               </ul>
21978             </td>
21979
21980           </tr>
21981           <tr class="entries_header">
21982             <th class="th_details" colspan="5">Details</th>
21983           </tr>
21984           <tr class="entry_cont">
21985             <td class="entry_details" colspan="5">
21986               <p>The k'th bucket (0-based) covers the input range
21987 (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/>
21988 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
21989 supported,<wbr/> all channels should have the same data</p>
21990             </td>
21991           </tr>
21992
21993
21994           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
21995            <!-- end of entry -->
21996         
21997                 
21998           <tr class="entry" id="dynamic_android.statistics.histogramMode">
21999             <td class="entry_name
22000              " rowspan="1">
22001               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
22002             </td>
22003             <td class="entry_type">
22004                 <span class="entry_type_name entry_type_name_enum">byte</span>
22005
22006               <span class="entry_type_visibility"> [system as boolean]</span>
22007
22008
22009
22010
22011
22012                 <ul class="entry_type_enum">
22013                   <li>
22014                     <span class="entry_type_enum_name">OFF</span>
22015                   </li>
22016                   <li>
22017                     <span class="entry_type_enum_name">ON</span>
22018                   </li>
22019                 </ul>
22020
22021             </td> <!-- entry_type -->
22022
22023             <td class="entry_description">
22024               <p>Operating mode for histogram
22025 generation</p>
22026             </td>
22027
22028             <td class="entry_units">
22029             </td>
22030
22031             <td class="entry_range">
22032             </td>
22033
22034             <td class="entry_tags">
22035               <ul class="entry_tags">
22036                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22037               </ul>
22038             </td>
22039
22040           </tr>
22041
22042
22043           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22044            <!-- end of entry -->
22045         
22046                 
22047           <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
22048             <td class="entry_name
22049              " rowspan="3">
22050               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
22051             </td>
22052             <td class="entry_type">
22053                 <span class="entry_type_name">int32</span>
22054                 <span class="entry_type_container">x</span>
22055
22056                 <span class="entry_type_array">
22057                   n x m x 3
22058                 </span>
22059               <span class="entry_type_visibility"> [system]</span>
22060
22061
22062
22063
22064                 <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>
22065
22066
22067             </td> <!-- entry_type -->
22068
22069             <td class="entry_description">
22070               <p>A 3-channel sharpness map,<wbr/> based on the raw
22071 sensor data</p>
22072             </td>
22073
22074             <td class="entry_units">
22075             </td>
22076
22077             <td class="entry_range">
22078             </td>
22079
22080             <td class="entry_tags">
22081               <ul class="entry_tags">
22082                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22083               </ul>
22084             </td>
22085
22086           </tr>
22087           <tr class="entries_header">
22088             <th class="th_details" colspan="5">Details</th>
22089           </tr>
22090           <tr class="entry_cont">
22091             <td class="entry_details" colspan="5">
22092               <p>If only a monochrome sharpness map is supported,<wbr/>
22093 all channels should have the same data</p>
22094             </td>
22095           </tr>
22096
22097
22098           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22099            <!-- end of entry -->
22100         
22101                 
22102           <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
22103             <td class="entry_name
22104              " rowspan="1">
22105               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
22106             </td>
22107             <td class="entry_type">
22108                 <span class="entry_type_name entry_type_name_enum">byte</span>
22109
22110               <span class="entry_type_visibility"> [system as boolean]</span>
22111
22112
22113
22114
22115
22116                 <ul class="entry_type_enum">
22117                   <li>
22118                     <span class="entry_type_enum_name">OFF</span>
22119                   </li>
22120                   <li>
22121                     <span class="entry_type_enum_name">ON</span>
22122                   </li>
22123                 </ul>
22124
22125             </td> <!-- entry_type -->
22126
22127             <td class="entry_description">
22128               <p>Operating mode for sharpness map
22129 generation</p>
22130             </td>
22131
22132             <td class="entry_units">
22133             </td>
22134
22135             <td class="entry_range">
22136             </td>
22137
22138             <td class="entry_tags">
22139               <ul class="entry_tags">
22140                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22141               </ul>
22142             </td>
22143
22144           </tr>
22145
22146
22147           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22148            <!-- end of entry -->
22149         
22150                 
22151           <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
22152             <td class="entry_name
22153              " rowspan="3">
22154               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
22155             </td>
22156             <td class="entry_type">
22157                 <span class="entry_type_name">byte</span>
22158
22159               <span class="entry_type_visibility"> [public as lensShadingMap]</span>
22160
22161
22162               <span class="entry_type_hwlevel">[full] </span>
22163
22164
22165
22166
22167             </td> <!-- entry_type -->
22168
22169             <td class="entry_description">
22170               <p>The shading map is a low-resolution floating-point map
22171 that lists the coefficients used to correct for vignetting,<wbr/> for each
22172 Bayer color channel.<wbr/></p>
22173             </td>
22174
22175             <td class="entry_units">
22176             </td>
22177
22178             <td class="entry_range">
22179               <p>Each gain factor is &gt;= 1</p>
22180             </td>
22181
22182             <td class="entry_tags">
22183             </td>
22184
22185           </tr>
22186           <tr class="entries_header">
22187             <th class="th_details" colspan="5">Details</th>
22188           </tr>
22189           <tr class="entry_cont">
22190             <td class="entry_details" colspan="5">
22191               <p>The least shaded section of the image should have a gain factor
22192 of 1; all other sections should have gains above 1.<wbr/></p>
22193 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
22194 must take into account the colorCorrection settings.<wbr/></p>
22195 <p>The shading map is for the entire active pixel array,<wbr/> and is not
22196 affected by the crop region specified in the request.<wbr/> Each shading map
22197 entry is the value of the shading compensation map over a specific
22198 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
22199 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
22200 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
22201 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
22202 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
22203 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
22204 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
22205 The shading map is stored in a fully interleaved format.<wbr/></p>
22206 <p>The shading map should have on the order of 30-40 rows and columns,<wbr/>
22207 and must be smaller than 64x64.<wbr/></p>
22208 <p>As an example,<wbr/> given a very small map defined as:</p>
22209 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
22210 values =
22211 [ 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/>
22212     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/>
22213   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/>
22214     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/>
22215   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/>
22216     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 ]
22217 </code></pre>
22218 <p>The low-resolution scaling map images for each channel are
22219 (displayed using nearest-neighbor interpolation):</p>
22220 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
22221 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
22222 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
22223 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
22224 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
22225 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
22226 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
22227             </td>
22228           </tr>
22229
22230
22231           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22232            <!-- end of entry -->
22233         
22234                 
22235           <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
22236             <td class="entry_name
22237              " rowspan="5">
22238               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
22239             </td>
22240             <td class="entry_type">
22241                 <span class="entry_type_name">float</span>
22242                 <span class="entry_type_container">x</span>
22243
22244                 <span class="entry_type_array">
22245                   4 x n x m
22246                 </span>
22247               <span class="entry_type_visibility"> [hidden]</span>
22248
22249
22250               <span class="entry_type_hwlevel">[full] </span>
22251
22252
22253                 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
22254
22255
22256             </td> <!-- entry_type -->
22257
22258             <td class="entry_description">
22259               <p>The shading map is a low-resolution floating-point map
22260 that lists the coefficients used to correct for vignetting,<wbr/> for each
22261 Bayer color channel of RAW image data.<wbr/></p>
22262             </td>
22263
22264             <td class="entry_units">
22265             </td>
22266
22267             <td class="entry_range">
22268               <p>Each gain factor is &gt;= 1</p>
22269             </td>
22270
22271             <td class="entry_tags">
22272             </td>
22273
22274           </tr>
22275           <tr class="entries_header">
22276             <th class="th_details" colspan="5">Details</th>
22277           </tr>
22278           <tr class="entry_cont">
22279             <td class="entry_details" colspan="5">
22280               <p>The least shaded section of the image should have a gain factor
22281 of 1; all other sections should have gains above 1.<wbr/></p>
22282 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
22283 must take into account the colorCorrection settings.<wbr/></p>
22284 <p>The shading map is for the entire active pixel array,<wbr/> and is not
22285 affected by the crop region specified in the request.<wbr/> Each shading map
22286 entry is the value of the shading compensation map over a specific
22287 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
22288 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
22289 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
22290 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
22291 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
22292 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
22293 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
22294 The shading map is stored in a fully interleaved format,<wbr/> and its size
22295 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>
22296 <p>The shading map should have on the order of 30-40 rows and columns,<wbr/>
22297 and must be smaller than 64x64.<wbr/></p>
22298 <p>As an example,<wbr/> given a very small map defined as:</p>
22299 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
22300 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
22301 [ 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/>
22302     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/>
22303   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/>
22304     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/>
22305   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/>
22306     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 ]
22307 </code></pre>
22308 <p>The low-resolution scaling map images for each channel are
22309 (displayed using nearest-neighbor interpolation):</p>
22310 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
22311 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
22312 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
22313 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
22314 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
22315 image of a gray wall (using bicubic interpolation for visual quality)
22316 as captured by the sensor gives:</p>
22317 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
22318 <p>Note that the RAW image data might be subject to lens shading
22319 correction not reported on this map.<wbr/> Query
22320 <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
22321 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>
22322 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
22323 correction.<wbr/> In the case full lens shading correction is applied to RAW
22324 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
22325 In other words,<wbr/> the map reported in this key is the remaining lens shading
22326 that needs to be applied on the RAW image to get images without lens shading
22327 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
22328 formats.<wbr/></p>
22329             </td>
22330           </tr>
22331
22332           <tr class="entries_header">
22333             <th class="th_details" colspan="5">HAL Implementation Details</th>
22334           </tr>
22335           <tr class="entry_cont">
22336             <td class="entry_details" colspan="5">
22337               <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
22338 When AE and AWB are in AUTO modes
22339 (<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
22340 may have all the information it need to generate most accurate lens shading map.<wbr/> When
22341 AE or AWB are in manual mode
22342 (<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
22343 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
22344 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
22345 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
22346             </td>
22347           </tr>
22348
22349           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22350            <!-- end of entry -->
22351         
22352                 
22353           <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
22354             <td class="entry_name
22355                 entry_name_deprecated
22356              " rowspan="3">
22357               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
22358             </td>
22359             <td class="entry_type">
22360                 <span class="entry_type_name">float</span>
22361                 <span class="entry_type_container">x</span>
22362
22363                 <span class="entry_type_array">
22364                   4
22365                 </span>
22366               <span class="entry_type_visibility"> [hidden]</span>
22367
22368
22369
22370               <span class="entry_type_deprecated">[deprecated] </span>
22371
22372                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
22373
22374
22375             </td> <!-- entry_type -->
22376
22377             <td class="entry_description">
22378               <p>The best-fit color channel gains calculated
22379 by the camera device's statistics units for the current output frame.<wbr/></p>
22380             </td>
22381
22382             <td class="entry_units">
22383             </td>
22384
22385             <td class="entry_range">
22386               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
22387             </td>
22388
22389             <td class="entry_tags">
22390             </td>
22391
22392           </tr>
22393           <tr class="entries_header">
22394             <th class="th_details" colspan="5">Details</th>
22395           </tr>
22396           <tr class="entry_cont">
22397             <td class="entry_details" colspan="5">
22398               <p>This may be different than the gains used for this frame,<wbr/>
22399 since statistics processing on data from a new frame
22400 typically completes after the transform has already been
22401 applied to that frame.<wbr/></p>
22402 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
22403 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
22404 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
22405 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
22406             </td>
22407           </tr>
22408
22409
22410           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22411            <!-- end of entry -->
22412         
22413                 
22414           <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
22415             <td class="entry_name
22416                 entry_name_deprecated
22417              " rowspan="3">
22418               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
22419             </td>
22420             <td class="entry_type">
22421                 <span class="entry_type_name">rational</span>
22422                 <span class="entry_type_container">x</span>
22423
22424                 <span class="entry_type_array">
22425                   3 x 3
22426                 </span>
22427               <span class="entry_type_visibility"> [hidden]</span>
22428
22429
22430
22431               <span class="entry_type_deprecated">[deprecated] </span>
22432
22433                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
22434
22435
22436             </td> <!-- entry_type -->
22437
22438             <td class="entry_description">
22439               <p>The best-fit color transform matrix estimate
22440 calculated by the camera device's statistics units for the current
22441 output frame.<wbr/></p>
22442             </td>
22443
22444             <td class="entry_units">
22445             </td>
22446
22447             <td class="entry_range">
22448               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
22449             </td>
22450
22451             <td class="entry_tags">
22452             </td>
22453
22454           </tr>
22455           <tr class="entries_header">
22456             <th class="th_details" colspan="5">Details</th>
22457           </tr>
22458           <tr class="entry_cont">
22459             <td class="entry_details" colspan="5">
22460               <p>The camera device will provide the estimate from its
22461 statistics unit on the white balance transforms to use
22462 for the next frame.<wbr/> These are the values the camera device believes
22463 are the best fit for the current output frame.<wbr/> This may
22464 be different than the transform used for this frame,<wbr/> since
22465 statistics processing on data from a new frame typically
22466 completes after the transform has already been applied to
22467 that frame.<wbr/></p>
22468 <p>These estimates must be provided for all frames,<wbr/> even if
22469 capture settings and color transforms are set by the application.<wbr/></p>
22470 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
22471 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
22472             </td>
22473           </tr>
22474
22475
22476           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22477            <!-- end of entry -->
22478         
22479                 
22480           <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
22481             <td class="entry_name
22482              " rowspan="3">
22483               android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
22484             </td>
22485             <td class="entry_type">
22486                 <span class="entry_type_name entry_type_name_enum">byte</span>
22487
22488               <span class="entry_type_visibility"> [public]</span>
22489
22490
22491               <span class="entry_type_hwlevel">[full] </span>
22492
22493
22494
22495                 <ul class="entry_type_enum">
22496                   <li>
22497                     <span class="entry_type_enum_name">NONE</span>
22498                     <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
22499 in the current scene.<wbr/></p></span>
22500                   </li>
22501                   <li>
22502                     <span class="entry_type_enum_name">50HZ</span>
22503                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
22504 in the current scene.<wbr/></p></span>
22505                   </li>
22506                   <li>
22507                     <span class="entry_type_enum_name">60HZ</span>
22508                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
22509 in the current scene.<wbr/></p></span>
22510                   </li>
22511                 </ul>
22512
22513             </td> <!-- entry_type -->
22514
22515             <td class="entry_description">
22516               <p>The camera device estimated scene illumination lighting
22517 frequency.<wbr/></p>
22518             </td>
22519
22520             <td class="entry_units">
22521             </td>
22522
22523             <td class="entry_range">
22524             </td>
22525
22526             <td class="entry_tags">
22527             </td>
22528
22529           </tr>
22530           <tr class="entries_header">
22531             <th class="th_details" colspan="5">Details</th>
22532           </tr>
22533           <tr class="entry_cont">
22534             <td class="entry_details" colspan="5">
22535               <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
22536 that depends on the local utility power standards.<wbr/> This flicker must be
22537 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
22538 The camera device uses this entry to tell the application what the scene
22539 illuminant frequency is.<wbr/></p>
22540 <p>When manual exposure control is enabled
22541 (<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> ==
22542 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
22543 antibanding,<wbr/> and the application can ensure it selects
22544 exposure times that do not cause banding issues by looking
22545 into this metadata field.<wbr/> See
22546 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
22547 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
22548             </td>
22549           </tr>
22550
22551
22552           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22553            <!-- end of entry -->
22554         
22555                 
22556           <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
22557             <td class="entry_name
22558              " rowspan="3">
22559               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
22560             </td>
22561             <td class="entry_type">
22562                 <span class="entry_type_name entry_type_name_enum">byte</span>
22563
22564               <span class="entry_type_visibility"> [public as boolean]</span>
22565
22566
22567
22568
22569
22570                 <ul class="entry_type_enum">
22571                   <li>
22572                     <span class="entry_type_enum_name">OFF</span>
22573                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
22574                   </li>
22575                   <li>
22576                     <span class="entry_type_enum_name">ON</span>
22577                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
22578                   </li>
22579                 </ul>
22580
22581             </td> <!-- entry_type -->
22582
22583             <td class="entry_description">
22584               <p>Operating mode for hot pixel map generation.<wbr/></p>
22585             </td>
22586
22587             <td class="entry_units">
22588             </td>
22589
22590             <td class="entry_range">
22591               <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>
22592             </td>
22593
22594             <td class="entry_tags">
22595               <ul class="entry_tags">
22596                   <li><a href="#tag_V1">V1</a></li>
22597                   <li><a href="#tag_RAW">RAW</a></li>
22598               </ul>
22599             </td>
22600
22601           </tr>
22602           <tr class="entries_header">
22603             <th class="th_details" colspan="5">Details</th>
22604           </tr>
22605           <tr class="entry_cont">
22606             <td class="entry_details" colspan="5">
22607               <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/>
22608 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
22609             </td>
22610           </tr>
22611
22612
22613           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22614            <!-- end of entry -->
22615         
22616                 
22617           <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
22618             <td class="entry_name
22619              " rowspan="5">
22620               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
22621             </td>
22622             <td class="entry_type">
22623                 <span class="entry_type_name">int32</span>
22624                 <span class="entry_type_container">x</span>
22625
22626                 <span class="entry_type_array">
22627                   2 x n
22628                 </span>
22629               <span class="entry_type_visibility"> [public as point]</span>
22630
22631
22632
22633
22634                 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
22635
22636
22637             </td> <!-- entry_type -->
22638
22639             <td class="entry_description">
22640               <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
22641             </td>
22642
22643             <td class="entry_units">
22644             </td>
22645
22646             <td class="entry_range">
22647               <p>n &lt;= number of pixels on the sensor.<wbr/>
22648 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
22649 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
22650             </td>
22651
22652             <td class="entry_tags">
22653               <ul class="entry_tags">
22654                   <li><a href="#tag_V1">V1</a></li>
22655                   <li><a href="#tag_RAW">RAW</a></li>
22656               </ul>
22657             </td>
22658
22659           </tr>
22660           <tr class="entries_header">
22661             <th class="th_details" colspan="5">Details</th>
22662           </tr>
22663           <tr class="entry_cont">
22664             <td class="entry_details" colspan="5">
22665               <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
22666 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
22667 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
22668 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/>
22669 This may include hot pixels that lie outside of the active array
22670 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
22671             </td>
22672           </tr>
22673
22674           <tr class="entries_header">
22675             <th class="th_details" colspan="5">HAL Implementation Details</th>
22676           </tr>
22677           <tr class="entry_cont">
22678             <td class="entry_details" colspan="5">
22679               <p>A hotpixel map contains the coordinates of pixels on the camera
22680 sensor that do report valid values (usually due to defects in
22681 the camera sensor).<wbr/> This includes pixels that are stuck at certain
22682 values,<wbr/> or have a response that does not accuractly encode the
22683 incoming light from the scene.<wbr/></p>
22684 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
22685 pixels than actual pixels on the camera sensor.<wbr/></p>
22686             </td>
22687           </tr>
22688
22689           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22690            <!-- end of entry -->
22691         
22692                 
22693           <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
22694             <td class="entry_name
22695              " rowspan="3">
22696               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
22697             </td>
22698             <td class="entry_type">
22699                 <span class="entry_type_name entry_type_name_enum">byte</span>
22700
22701               <span class="entry_type_visibility"> [public]</span>
22702
22703
22704               <span class="entry_type_hwlevel">[full] </span>
22705
22706
22707
22708                 <ul class="entry_type_enum">
22709                   <li>
22710                     <span class="entry_type_enum_name">OFF</span>
22711                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
22712                   </li>
22713                   <li>
22714                     <span class="entry_type_enum_name">ON</span>
22715                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
22716                   </li>
22717                 </ul>
22718
22719             </td> <!-- entry_type -->
22720
22721             <td class="entry_description">
22722               <p>Whether the camera device will output the lens
22723 shading map in output result metadata.<wbr/></p>
22724             </td>
22725
22726             <td class="entry_units">
22727             </td>
22728
22729             <td class="entry_range">
22730               <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>
22731             </td>
22732
22733             <td class="entry_tags">
22734               <ul class="entry_tags">
22735                   <li><a href="#tag_RAW">RAW</a></li>
22736               </ul>
22737             </td>
22738
22739           </tr>
22740           <tr class="entries_header">
22741             <th class="th_details" colspan="5">Details</th>
22742           </tr>
22743           <tr class="entry_cont">
22744             <td class="entry_details" colspan="5">
22745               <p>When set to ON,<wbr/>
22746 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
22747 the output result metadata.<wbr/></p>
22748 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
22749             </td>
22750           </tr>
22751
22752
22753           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22754            <!-- end of entry -->
22755         
22756         
22757
22758       <!-- end of kind -->
22759       </tbody>
22760
22761   <!-- end of section -->
22762   <tr><td colspan="6" id="section_tonemap" class="section">tonemap</td></tr>
22763
22764
22765       <tr><td colspan="6" class="kind">controls</td></tr>
22766
22767       <thead class="entries_header">
22768         <tr>
22769           <th class="th_name">Property Name</th>
22770           <th class="th_type">Type</th>
22771           <th class="th_description">Description</th>
22772           <th class="th_units">Units</th>
22773           <th class="th_range">Range</th>
22774           <th class="th_tags">Tags</th>
22775         </tr>
22776       </thead>
22777
22778       <tbody>
22779
22780         
22781
22782         
22783
22784         
22785
22786         
22787
22788                 
22789           <tr class="entry" id="controls_android.tonemap.curveBlue">
22790             <td class="entry_name
22791              " rowspan="3">
22792               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
22793             </td>
22794             <td class="entry_type">
22795                 <span class="entry_type_name">float</span>
22796                 <span class="entry_type_container">x</span>
22797
22798                 <span class="entry_type_array">
22799                   n x 2
22800                 </span>
22801               <span class="entry_type_visibility"> [hidden]</span>
22802
22803
22804               <span class="entry_type_hwlevel">[full] </span>
22805
22806
22807                 <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>
22808
22809
22810             </td> <!-- entry_type -->
22811
22812             <td class="entry_description">
22813               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
22814 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
22815 CONTRAST_<wbr/>CURVE.<wbr/></p>
22816             </td>
22817
22818             <td class="entry_units">
22819             </td>
22820
22821             <td class="entry_range">
22822             </td>
22823
22824             <td class="entry_tags">
22825             </td>
22826
22827           </tr>
22828           <tr class="entries_header">
22829             <th class="th_details" colspan="5">Details</th>
22830           </tr>
22831           <tr class="entry_cont">
22832             <td class="entry_details" colspan="5">
22833               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
22834             </td>
22835           </tr>
22836
22837
22838           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22839            <!-- end of entry -->
22840         
22841                 
22842           <tr class="entry" id="controls_android.tonemap.curveGreen">
22843             <td class="entry_name
22844              " rowspan="3">
22845               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
22846             </td>
22847             <td class="entry_type">
22848                 <span class="entry_type_name">float</span>
22849                 <span class="entry_type_container">x</span>
22850
22851                 <span class="entry_type_array">
22852                   n x 2
22853                 </span>
22854               <span class="entry_type_visibility"> [hidden]</span>
22855
22856
22857               <span class="entry_type_hwlevel">[full] </span>
22858
22859
22860                 <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>
22861
22862
22863             </td> <!-- entry_type -->
22864
22865             <td class="entry_description">
22866               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
22867 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
22868 CONTRAST_<wbr/>CURVE.<wbr/></p>
22869             </td>
22870
22871             <td class="entry_units">
22872             </td>
22873
22874             <td class="entry_range">
22875             </td>
22876
22877             <td class="entry_tags">
22878             </td>
22879
22880           </tr>
22881           <tr class="entries_header">
22882             <th class="th_details" colspan="5">Details</th>
22883           </tr>
22884           <tr class="entry_cont">
22885             <td class="entry_details" colspan="5">
22886               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
22887             </td>
22888           </tr>
22889
22890
22891           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22892            <!-- end of entry -->
22893         
22894                 
22895           <tr class="entry" id="controls_android.tonemap.curveRed">
22896             <td class="entry_name
22897              " rowspan="5">
22898               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
22899             </td>
22900             <td class="entry_type">
22901                 <span class="entry_type_name">float</span>
22902                 <span class="entry_type_container">x</span>
22903
22904                 <span class="entry_type_array">
22905                   n x 2
22906                 </span>
22907               <span class="entry_type_visibility"> [hidden]</span>
22908
22909
22910               <span class="entry_type_hwlevel">[full] </span>
22911
22912
22913                 <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>
22914
22915
22916             </td> <!-- entry_type -->
22917
22918             <td class="entry_description">
22919               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
22920 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
22921 CONTRAST_<wbr/>CURVE.<wbr/></p>
22922             </td>
22923
22924             <td class="entry_units">
22925             </td>
22926
22927             <td class="entry_range">
22928               <p>0-1 on both input and output coordinates,<wbr/> normalized
22929 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
22930             </td>
22931
22932             <td class="entry_tags">
22933             </td>
22934
22935           </tr>
22936           <tr class="entries_header">
22937             <th class="th_details" colspan="5">Details</th>
22938           </tr>
22939           <tr class="entry_cont">
22940             <td class="entry_details" colspan="5">
22941               <p>Each channel's curve is defined by an array of control points:</p>
22942 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
22943   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
22944 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
22945 <p>These are sorted in order of increasing <code>Pin</code>; it is
22946 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
22947 define a complete mapping.<wbr/> For input values between control points,<wbr/>
22948 the camera device must linearly interpolate between the control
22949 points.<wbr/></p>
22950 <p>Each curve can have an independent number of points,<wbr/> and the number
22951 of points can be less than max (that is,<wbr/> the request doesn't have to
22952 always provide a curve with number of points equivalent to
22953 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
22954 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
22955 only specify the red channel and the precision is limited to 4
22956 digits,<wbr/> for conciseness.<wbr/></p>
22957 <p>Linear mapping:</p>
22958 <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 ]
22959 </code></pre>
22960 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
22961 <p>Invert mapping:</p>
22962 <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 ]
22963 </code></pre>
22964 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
22965 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
22966 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
22967   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/>
22968   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/>
22969   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/>
22970   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 ]
22971 </code></pre>
22972 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
22973 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
22974 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
22975   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/>
22976   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/>
22977   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/>
22978   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 ]
22979 </code></pre>
22980 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
22981             </td>
22982           </tr>
22983
22984           <tr class="entries_header">
22985             <th class="th_details" colspan="5">HAL Implementation Details</th>
22986           </tr>
22987           <tr class="entry_cont">
22988             <td class="entry_details" colspan="5">
22989               <p>For good quality of mapping,<wbr/> at least 128 control points are
22990 preferred.<wbr/></p>
22991 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
22992 control points used as are available.<wbr/></p>
22993             </td>
22994           </tr>
22995
22996           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
22997            <!-- end of entry -->
22998         
22999                 
23000           <tr class="entry" id="controls_android.tonemap.curve">
23001             <td class="entry_name
23002              " rowspan="5">
23003               android.<wbr/>tonemap.<wbr/>curve
23004             </td>
23005             <td class="entry_type">
23006                 <span class="entry_type_name">float</span>
23007
23008               <span class="entry_type_visibility"> [public as tonemapCurve]</span>
23009
23010               <span class="entry_type_synthetic">[synthetic] </span>
23011
23012               <span class="entry_type_hwlevel">[full] </span>
23013
23014
23015
23016
23017             </td> <!-- entry_type -->
23018
23019             <td class="entry_description">
23020               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
23021 is CONTRAST_<wbr/>CURVE.<wbr/></p>
23022             </td>
23023
23024             <td class="entry_units">
23025             </td>
23026
23027             <td class="entry_range">
23028             </td>
23029
23030             <td class="entry_tags">
23031             </td>
23032
23033           </tr>
23034           <tr class="entries_header">
23035             <th class="th_details" colspan="5">Details</th>
23036           </tr>
23037           <tr class="entry_cont">
23038             <td class="entry_details" colspan="5">
23039               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
23040 channels respectively.<wbr/> The following example uses the red channel as an
23041 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
23042 Each channel's curve is defined by an array of control points:</p>
23043 <pre><code>curveRed =
23044   [ 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) ]
23045 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
23046 <p>These are sorted in order of increasing <code>Pin</code>; it is always
23047 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
23048 define a complete mapping.<wbr/> For input values between control points,<wbr/>
23049 the camera device must linearly interpolate between the control
23050 points.<wbr/></p>
23051 <p>Each curve can have an independent number of points,<wbr/> and the number
23052 of points can be less than max (that is,<wbr/> the request doesn't have to
23053 always provide a curve with number of points equivalent to
23054 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
23055 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
23056 only specify the red channel and the precision is limited to 4
23057 digits,<wbr/> for conciseness.<wbr/></p>
23058 <p>Linear mapping:</p>
23059 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
23060 </code></pre>
23061 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
23062 <p>Invert mapping:</p>
23063 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
23064 </code></pre>
23065 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
23066 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
23067 <pre><code>curveRed = [
23068   (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/>
23069   (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/>
23070   (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/>
23071   (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) ]
23072 </code></pre>
23073 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
23074 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
23075 <pre><code>curveRed = [
23076   (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/>
23077   (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/>
23078   (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/>
23079   (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) ]
23080 </code></pre>
23081 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
23082             </td>
23083           </tr>
23084
23085           <tr class="entries_header">
23086             <th class="th_details" colspan="5">HAL Implementation Details</th>
23087           </tr>
23088           <tr class="entry_cont">
23089             <td class="entry_details" colspan="5">
23090               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
23091 curveBlue entries.<wbr/></p>
23092             </td>
23093           </tr>
23094
23095           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23096            <!-- end of entry -->
23097         
23098                 
23099           <tr class="entry" id="controls_android.tonemap.mode">
23100             <td class="entry_name
23101              " rowspan="3">
23102               android.<wbr/>tonemap.<wbr/>mode
23103             </td>
23104             <td class="entry_type">
23105                 <span class="entry_type_name entry_type_name_enum">byte</span>
23106
23107               <span class="entry_type_visibility"> [public]</span>
23108
23109
23110               <span class="entry_type_hwlevel">[full] </span>
23111
23112
23113
23114                 <ul class="entry_type_enum">
23115                   <li>
23116                     <span class="entry_type_enum_name">CONTRAST_CURVE</span>
23117                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
23118 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
23119 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
23120 for applying the tonemapping curve specified by
23121 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
23122 <p>Must not slow down frame rate relative to raw
23123 sensor output.<wbr/></p></span>
23124                   </li>
23125                   <li>
23126                     <span class="entry_type_enum_name">FAST</span>
23127                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
23128 reducing frame rate compared to raw sensor output.<wbr/></p></span>
23129                   </li>
23130                   <li>
23131                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
23132                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
23133 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
23134                   </li>
23135                   <li>
23136                     <span class="entry_type_enum_name">GAMMA_VALUE</span>
23137                     <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#dynamic_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform
23138 tonemapping.<wbr/></p>
23139 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
23140 for applying the tonemapping curve specified by <a href="#dynamic_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
23141 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
23142                   </li>
23143                   <li>
23144                     <span class="entry_type_enum_name">PRESET_CURVE</span>
23145                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
23146 <a href="#dynamic_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
23147 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
23148 for applying the tonemapping curve specified by
23149 <a href="#dynamic_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
23150 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
23151                   </li>
23152                 </ul>
23153
23154             </td> <!-- entry_type -->
23155
23156             <td class="entry_description">
23157               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
23158             </td>
23159
23160             <td class="entry_units">
23161             </td>
23162
23163             <td class="entry_range">
23164               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
23165             </td>
23166
23167             <td class="entry_tags">
23168             </td>
23169
23170           </tr>
23171           <tr class="entries_header">
23172             <th class="th_details" colspan="5">Details</th>
23173           </tr>
23174           <tr class="entry_cont">
23175             <td class="entry_details" colspan="5">
23176               <p>When switching to an application-defined contrast curve by setting
23177 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
23178 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
23179 mapping from input high-bit-depth pixel value to the output
23180 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
23181 and output may change depending on the camera pipeline,<wbr/> the values
23182 are specified by normalized floating-point numbers.<wbr/></p>
23183 <p>More-complex color mapping operations such as 3D color look-up
23184 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
23185 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23186 CONTRAST_<wbr/>CURVE.<wbr/></p>
23187 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
23188 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
23189 These values are always available,<wbr/> and as close as possible to the
23190 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
23191 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
23192 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
23193 roughly the same.<wbr/></p>
23194             </td>
23195           </tr>
23196
23197
23198           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23199            <!-- end of entry -->
23200         
23201                 
23202           <tr class="entry" id="controls_android.tonemap.gamma">
23203             <td class="entry_name
23204              " rowspan="3">
23205               android.<wbr/>tonemap.<wbr/>gamma
23206             </td>
23207             <td class="entry_type">
23208                 <span class="entry_type_name">float</span>
23209
23210               <span class="entry_type_visibility"> [public]</span>
23211
23212
23213
23214
23215
23216
23217             </td> <!-- entry_type -->
23218
23219             <td class="entry_description">
23220               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23221 GAMMA_<wbr/>VALUE</p>
23222             </td>
23223
23224             <td class="entry_units">
23225             </td>
23226
23227             <td class="entry_range">
23228             </td>
23229
23230             <td class="entry_tags">
23231             </td>
23232
23233           </tr>
23234           <tr class="entries_header">
23235             <th class="th_details" colspan="5">Details</th>
23236           </tr>
23237           <tr class="entry_cont">
23238             <td class="entry_details" colspan="5">
23239               <p>The tonemap curve will be defined the following formula:
23240 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
23241 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
23242 pow is the power function and gamma is the gamma value specified by this
23243 key.<wbr/></p>
23244 <p>The same curve will be applied to all color channels.<wbr/> The camera device
23245 may clip the input gamma value to its supported range.<wbr/> The actual applied
23246 value will be returned in capture result.<wbr/></p>
23247 <p>The valid range of gamma value varies on different devices,<wbr/> but values
23248 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
23249             </td>
23250           </tr>
23251
23252
23253           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23254            <!-- end of entry -->
23255         
23256                 
23257           <tr class="entry" id="controls_android.tonemap.presetCurve">
23258             <td class="entry_name
23259              " rowspan="3">
23260               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
23261             </td>
23262             <td class="entry_type">
23263                 <span class="entry_type_name entry_type_name_enum">byte</span>
23264
23265               <span class="entry_type_visibility"> [public]</span>
23266
23267
23268
23269
23270
23271                 <ul class="entry_type_enum">
23272                   <li>
23273                     <span class="entry_type_enum_name">SRGB</span>
23274                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
23275                   </li>
23276                   <li>
23277                     <span class="entry_type_enum_name">REC709</span>
23278                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
23279                   </li>
23280                 </ul>
23281
23282             </td> <!-- entry_type -->
23283
23284             <td class="entry_description">
23285               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23286 PRESET_<wbr/>CURVE</p>
23287             </td>
23288
23289             <td class="entry_units">
23290             </td>
23291
23292             <td class="entry_range">
23293             </td>
23294
23295             <td class="entry_tags">
23296             </td>
23297
23298           </tr>
23299           <tr class="entries_header">
23300             <th class="th_details" colspan="5">Details</th>
23301           </tr>
23302           <tr class="entry_cont">
23303             <td class="entry_details" colspan="5">
23304               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
23305 <p>sRGB (approximated by 16 control points):</p>
23306 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
23307 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
23308 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
23309 <p>Note that above figures show a 16 control points approximation of preset
23310 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
23311             </td>
23312           </tr>
23313
23314
23315           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23316            <!-- end of entry -->
23317         
23318         
23319
23320       <!-- end of kind -->
23321       </tbody>
23322       <tr><td colspan="6" class="kind">static</td></tr>
23323
23324       <thead class="entries_header">
23325         <tr>
23326           <th class="th_name">Property Name</th>
23327           <th class="th_type">Type</th>
23328           <th class="th_description">Description</th>
23329           <th class="th_units">Units</th>
23330           <th class="th_range">Range</th>
23331           <th class="th_tags">Tags</th>
23332         </tr>
23333       </thead>
23334
23335       <tbody>
23336
23337         
23338
23339         
23340
23341         
23342
23343         
23344
23345                 
23346           <tr class="entry" id="static_android.tonemap.maxCurvePoints">
23347             <td class="entry_name
23348              " rowspan="5">
23349               android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
23350             </td>
23351             <td class="entry_type">
23352                 <span class="entry_type_name">int32</span>
23353
23354               <span class="entry_type_visibility"> [public]</span>
23355
23356
23357               <span class="entry_type_hwlevel">[full] </span>
23358
23359
23360
23361
23362             </td> <!-- entry_type -->
23363
23364             <td class="entry_description">
23365               <p>Maximum number of supported points in the
23366 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
23367             </td>
23368
23369             <td class="entry_units">
23370             </td>
23371
23372             <td class="entry_range">
23373             </td>
23374
23375             <td class="entry_tags">
23376             </td>
23377
23378           </tr>
23379           <tr class="entries_header">
23380             <th class="th_details" colspan="5">Details</th>
23381           </tr>
23382           <tr class="entry_cont">
23383             <td class="entry_details" colspan="5">
23384               <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
23385 less than this maximum,<wbr/> the camera device will resample the curve to its internal
23386 representation,<wbr/> using linear interpolation.<wbr/></p>
23387 <p>The output curves in the result metadata may have a different number
23388 of points than the input curves,<wbr/> and will represent the actual
23389 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
23390             </td>
23391           </tr>
23392
23393           <tr class="entries_header">
23394             <th class="th_details" colspan="5">HAL Implementation Details</th>
23395           </tr>
23396           <tr class="entry_cont">
23397             <td class="entry_details" colspan="5">
23398               <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
23399             </td>
23400           </tr>
23401
23402           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23403            <!-- end of entry -->
23404         
23405                 
23406           <tr class="entry" id="static_android.tonemap.availableToneMapModes">
23407             <td class="entry_name
23408              " rowspan="5">
23409               android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
23410             </td>
23411             <td class="entry_type">
23412                 <span class="entry_type_name">byte</span>
23413                 <span class="entry_type_container">x</span>
23414
23415                 <span class="entry_type_array">
23416                   n
23417                 </span>
23418               <span class="entry_type_visibility"> [public as enumList]</span>
23419
23420
23421               <span class="entry_type_hwlevel">[full] </span>
23422
23423
23424                 <div class="entry_type_notes">list of enums</div>
23425
23426
23427             </td> <!-- entry_type -->
23428
23429             <td class="entry_description">
23430               <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
23431 device.<wbr/></p>
23432             </td>
23433
23434             <td class="entry_units">
23435             </td>
23436
23437             <td class="entry_range">
23438               <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
23439             </td>
23440
23441             <td class="entry_tags">
23442             </td>
23443
23444           </tr>
23445           <tr class="entries_header">
23446             <th class="th_details" colspan="5">Details</th>
23447           </tr>
23448           <tr class="entry_cont">
23449             <td class="entry_details" colspan="5">
23450               <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
23451 at least one of below mode combinations:</p>
23452 <ul>
23453 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
23454 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
23455 </ul>
23456 <p>This includes all FULL level devices.<wbr/></p>
23457             </td>
23458           </tr>
23459
23460           <tr class="entries_header">
23461             <th class="th_details" colspan="5">HAL Implementation Details</th>
23462           </tr>
23463           <tr class="entry_cont">
23464             <td class="entry_details" colspan="5">
23465               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
23466 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
23467 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
23468 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
23469             </td>
23470           </tr>
23471
23472           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23473            <!-- end of entry -->
23474         
23475         
23476
23477       <!-- end of kind -->
23478       </tbody>
23479       <tr><td colspan="6" class="kind">dynamic</td></tr>
23480
23481       <thead class="entries_header">
23482         <tr>
23483           <th class="th_name">Property Name</th>
23484           <th class="th_type">Type</th>
23485           <th class="th_description">Description</th>
23486           <th class="th_units">Units</th>
23487           <th class="th_range">Range</th>
23488           <th class="th_tags">Tags</th>
23489         </tr>
23490       </thead>
23491
23492       <tbody>
23493
23494         
23495
23496         
23497
23498         
23499
23500         
23501
23502                 
23503           <tr class="entry" id="dynamic_android.tonemap.curveBlue">
23504             <td class="entry_name
23505              " rowspan="3">
23506               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
23507             </td>
23508             <td class="entry_type">
23509                 <span class="entry_type_name">float</span>
23510                 <span class="entry_type_container">x</span>
23511
23512                 <span class="entry_type_array">
23513                   n x 2
23514                 </span>
23515               <span class="entry_type_visibility"> [hidden]</span>
23516
23517
23518               <span class="entry_type_hwlevel">[full] </span>
23519
23520
23521                 <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>
23522
23523
23524             </td> <!-- entry_type -->
23525
23526             <td class="entry_description">
23527               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
23528 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23529 CONTRAST_<wbr/>CURVE.<wbr/></p>
23530             </td>
23531
23532             <td class="entry_units">
23533             </td>
23534
23535             <td class="entry_range">
23536             </td>
23537
23538             <td class="entry_tags">
23539             </td>
23540
23541           </tr>
23542           <tr class="entries_header">
23543             <th class="th_details" colspan="5">Details</th>
23544           </tr>
23545           <tr class="entry_cont">
23546             <td class="entry_details" colspan="5">
23547               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
23548             </td>
23549           </tr>
23550
23551
23552           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23553            <!-- end of entry -->
23554         
23555                 
23556           <tr class="entry" id="dynamic_android.tonemap.curveGreen">
23557             <td class="entry_name
23558              " rowspan="3">
23559               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
23560             </td>
23561             <td class="entry_type">
23562                 <span class="entry_type_name">float</span>
23563                 <span class="entry_type_container">x</span>
23564
23565                 <span class="entry_type_array">
23566                   n x 2
23567                 </span>
23568               <span class="entry_type_visibility"> [hidden]</span>
23569
23570
23571               <span class="entry_type_hwlevel">[full] </span>
23572
23573
23574                 <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>
23575
23576
23577             </td> <!-- entry_type -->
23578
23579             <td class="entry_description">
23580               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
23581 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23582 CONTRAST_<wbr/>CURVE.<wbr/></p>
23583             </td>
23584
23585             <td class="entry_units">
23586             </td>
23587
23588             <td class="entry_range">
23589             </td>
23590
23591             <td class="entry_tags">
23592             </td>
23593
23594           </tr>
23595           <tr class="entries_header">
23596             <th class="th_details" colspan="5">Details</th>
23597           </tr>
23598           <tr class="entry_cont">
23599             <td class="entry_details" colspan="5">
23600               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
23601             </td>
23602           </tr>
23603
23604
23605           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23606            <!-- end of entry -->
23607         
23608                 
23609           <tr class="entry" id="dynamic_android.tonemap.curveRed">
23610             <td class="entry_name
23611              " rowspan="5">
23612               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
23613             </td>
23614             <td class="entry_type">
23615                 <span class="entry_type_name">float</span>
23616                 <span class="entry_type_container">x</span>
23617
23618                 <span class="entry_type_array">
23619                   n x 2
23620                 </span>
23621               <span class="entry_type_visibility"> [hidden]</span>
23622
23623
23624               <span class="entry_type_hwlevel">[full] </span>
23625
23626
23627                 <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>
23628
23629
23630             </td> <!-- entry_type -->
23631
23632             <td class="entry_description">
23633               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
23634 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23635 CONTRAST_<wbr/>CURVE.<wbr/></p>
23636             </td>
23637
23638             <td class="entry_units">
23639             </td>
23640
23641             <td class="entry_range">
23642               <p>0-1 on both input and output coordinates,<wbr/> normalized
23643 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
23644             </td>
23645
23646             <td class="entry_tags">
23647             </td>
23648
23649           </tr>
23650           <tr class="entries_header">
23651             <th class="th_details" colspan="5">Details</th>
23652           </tr>
23653           <tr class="entry_cont">
23654             <td class="entry_details" colspan="5">
23655               <p>Each channel's curve is defined by an array of control points:</p>
23656 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
23657   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
23658 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
23659 <p>These are sorted in order of increasing <code>Pin</code>; it is
23660 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
23661 define a complete mapping.<wbr/> For input values between control points,<wbr/>
23662 the camera device must linearly interpolate between the control
23663 points.<wbr/></p>
23664 <p>Each curve can have an independent number of points,<wbr/> and the number
23665 of points can be less than max (that is,<wbr/> the request doesn't have to
23666 always provide a curve with number of points equivalent to
23667 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
23668 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
23669 only specify the red channel and the precision is limited to 4
23670 digits,<wbr/> for conciseness.<wbr/></p>
23671 <p>Linear mapping:</p>
23672 <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 ]
23673 </code></pre>
23674 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
23675 <p>Invert mapping:</p>
23676 <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 ]
23677 </code></pre>
23678 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
23679 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
23680 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
23681   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/>
23682   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/>
23683   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/>
23684   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 ]
23685 </code></pre>
23686 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
23687 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
23688 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
23689   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/>
23690   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/>
23691   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/>
23692   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 ]
23693 </code></pre>
23694 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
23695             </td>
23696           </tr>
23697
23698           <tr class="entries_header">
23699             <th class="th_details" colspan="5">HAL Implementation Details</th>
23700           </tr>
23701           <tr class="entry_cont">
23702             <td class="entry_details" colspan="5">
23703               <p>For good quality of mapping,<wbr/> at least 128 control points are
23704 preferred.<wbr/></p>
23705 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
23706 control points used as are available.<wbr/></p>
23707             </td>
23708           </tr>
23709
23710           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23711            <!-- end of entry -->
23712         
23713                 
23714           <tr class="entry" id="dynamic_android.tonemap.curve">
23715             <td class="entry_name
23716              " rowspan="5">
23717               android.<wbr/>tonemap.<wbr/>curve
23718             </td>
23719             <td class="entry_type">
23720                 <span class="entry_type_name">float</span>
23721
23722               <span class="entry_type_visibility"> [public as tonemapCurve]</span>
23723
23724               <span class="entry_type_synthetic">[synthetic] </span>
23725
23726               <span class="entry_type_hwlevel">[full] </span>
23727
23728
23729
23730
23731             </td> <!-- entry_type -->
23732
23733             <td class="entry_description">
23734               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
23735 is CONTRAST_<wbr/>CURVE.<wbr/></p>
23736             </td>
23737
23738             <td class="entry_units">
23739             </td>
23740
23741             <td class="entry_range">
23742             </td>
23743
23744             <td class="entry_tags">
23745             </td>
23746
23747           </tr>
23748           <tr class="entries_header">
23749             <th class="th_details" colspan="5">Details</th>
23750           </tr>
23751           <tr class="entry_cont">
23752             <td class="entry_details" colspan="5">
23753               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
23754 channels respectively.<wbr/> The following example uses the red channel as an
23755 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
23756 Each channel's curve is defined by an array of control points:</p>
23757 <pre><code>curveRed =
23758   [ 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) ]
23759 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
23760 <p>These are sorted in order of increasing <code>Pin</code>; it is always
23761 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
23762 define a complete mapping.<wbr/> For input values between control points,<wbr/>
23763 the camera device must linearly interpolate between the control
23764 points.<wbr/></p>
23765 <p>Each curve can have an independent number of points,<wbr/> and the number
23766 of points can be less than max (that is,<wbr/> the request doesn't have to
23767 always provide a curve with number of points equivalent to
23768 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
23769 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
23770 only specify the red channel and the precision is limited to 4
23771 digits,<wbr/> for conciseness.<wbr/></p>
23772 <p>Linear mapping:</p>
23773 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
23774 </code></pre>
23775 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
23776 <p>Invert mapping:</p>
23777 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
23778 </code></pre>
23779 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
23780 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
23781 <pre><code>curveRed = [
23782   (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/>
23783   (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/>
23784   (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/>
23785   (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) ]
23786 </code></pre>
23787 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
23788 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
23789 <pre><code>curveRed = [
23790   (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/>
23791   (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/>
23792   (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/>
23793   (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) ]
23794 </code></pre>
23795 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
23796             </td>
23797           </tr>
23798
23799           <tr class="entries_header">
23800             <th class="th_details" colspan="5">HAL Implementation Details</th>
23801           </tr>
23802           <tr class="entry_cont">
23803             <td class="entry_details" colspan="5">
23804               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
23805 curveBlue entries.<wbr/></p>
23806             </td>
23807           </tr>
23808
23809           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23810            <!-- end of entry -->
23811         
23812                 
23813           <tr class="entry" id="dynamic_android.tonemap.mode">
23814             <td class="entry_name
23815              " rowspan="3">
23816               android.<wbr/>tonemap.<wbr/>mode
23817             </td>
23818             <td class="entry_type">
23819                 <span class="entry_type_name entry_type_name_enum">byte</span>
23820
23821               <span class="entry_type_visibility"> [public]</span>
23822
23823
23824               <span class="entry_type_hwlevel">[full] </span>
23825
23826
23827
23828                 <ul class="entry_type_enum">
23829                   <li>
23830                     <span class="entry_type_enum_name">CONTRAST_CURVE</span>
23831                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
23832 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
23833 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
23834 for applying the tonemapping curve specified by
23835 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
23836 <p>Must not slow down frame rate relative to raw
23837 sensor output.<wbr/></p></span>
23838                   </li>
23839                   <li>
23840                     <span class="entry_type_enum_name">FAST</span>
23841                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
23842 reducing frame rate compared to raw sensor output.<wbr/></p></span>
23843                   </li>
23844                   <li>
23845                     <span class="entry_type_enum_name">HIGH_QUALITY</span>
23846                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
23847 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
23848                   </li>
23849                   <li>
23850                     <span class="entry_type_enum_name">GAMMA_VALUE</span>
23851                     <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#dynamic_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform
23852 tonemapping.<wbr/></p>
23853 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
23854 for applying the tonemapping curve specified by <a href="#dynamic_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
23855 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
23856                   </li>
23857                   <li>
23858                     <span class="entry_type_enum_name">PRESET_CURVE</span>
23859                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
23860 <a href="#dynamic_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
23861 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
23862 for applying the tonemapping curve specified by
23863 <a href="#dynamic_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
23864 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
23865                   </li>
23866                 </ul>
23867
23868             </td> <!-- entry_type -->
23869
23870             <td class="entry_description">
23871               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
23872             </td>
23873
23874             <td class="entry_units">
23875             </td>
23876
23877             <td class="entry_range">
23878               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
23879             </td>
23880
23881             <td class="entry_tags">
23882             </td>
23883
23884           </tr>
23885           <tr class="entries_header">
23886             <th class="th_details" colspan="5">Details</th>
23887           </tr>
23888           <tr class="entry_cont">
23889             <td class="entry_details" colspan="5">
23890               <p>When switching to an application-defined contrast curve by setting
23891 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
23892 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
23893 mapping from input high-bit-depth pixel value to the output
23894 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
23895 and output may change depending on the camera pipeline,<wbr/> the values
23896 are specified by normalized floating-point numbers.<wbr/></p>
23897 <p>More-complex color mapping operations such as 3D color look-up
23898 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
23899 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23900 CONTRAST_<wbr/>CURVE.<wbr/></p>
23901 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
23902 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
23903 These values are always available,<wbr/> and as close as possible to the
23904 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
23905 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
23906 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
23907 roughly the same.<wbr/></p>
23908             </td>
23909           </tr>
23910
23911
23912           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23913            <!-- end of entry -->
23914         
23915                 
23916           <tr class="entry" id="dynamic_android.tonemap.gamma">
23917             <td class="entry_name
23918              " rowspan="3">
23919               android.<wbr/>tonemap.<wbr/>gamma
23920             </td>
23921             <td class="entry_type">
23922                 <span class="entry_type_name">float</span>
23923
23924               <span class="entry_type_visibility"> [public]</span>
23925
23926
23927
23928
23929
23930
23931             </td> <!-- entry_type -->
23932
23933             <td class="entry_description">
23934               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
23935 GAMMA_<wbr/>VALUE</p>
23936             </td>
23937
23938             <td class="entry_units">
23939             </td>
23940
23941             <td class="entry_range">
23942             </td>
23943
23944             <td class="entry_tags">
23945             </td>
23946
23947           </tr>
23948           <tr class="entries_header">
23949             <th class="th_details" colspan="5">Details</th>
23950           </tr>
23951           <tr class="entry_cont">
23952             <td class="entry_details" colspan="5">
23953               <p>The tonemap curve will be defined the following formula:
23954 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
23955 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
23956 pow is the power function and gamma is the gamma value specified by this
23957 key.<wbr/></p>
23958 <p>The same curve will be applied to all color channels.<wbr/> The camera device
23959 may clip the input gamma value to its supported range.<wbr/> The actual applied
23960 value will be returned in capture result.<wbr/></p>
23961 <p>The valid range of gamma value varies on different devices,<wbr/> but values
23962 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
23963             </td>
23964           </tr>
23965
23966
23967           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
23968            <!-- end of entry -->
23969         
23970                 
23971           <tr class="entry" id="dynamic_android.tonemap.presetCurve">
23972             <td class="entry_name
23973              " rowspan="3">
23974               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
23975             </td>
23976             <td class="entry_type">
23977                 <span class="entry_type_name entry_type_name_enum">byte</span>
23978
23979               <span class="entry_type_visibility"> [public]</span>
23980
23981
23982
23983
23984
23985                 <ul class="entry_type_enum">
23986                   <li>
23987                     <span class="entry_type_enum_name">SRGB</span>
23988                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
23989                   </li>
23990                   <li>
23991                     <span class="entry_type_enum_name">REC709</span>
23992                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
23993                   </li>
23994                 </ul>
23995
23996             </td> <!-- entry_type -->
23997
23998             <td class="entry_description">
23999               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
24000 PRESET_<wbr/>CURVE</p>
24001             </td>
24002
24003             <td class="entry_units">
24004             </td>
24005
24006             <td class="entry_range">
24007             </td>
24008
24009             <td class="entry_tags">
24010             </td>
24011
24012           </tr>
24013           <tr class="entries_header">
24014             <th class="th_details" colspan="5">Details</th>
24015           </tr>
24016           <tr class="entry_cont">
24017             <td class="entry_details" colspan="5">
24018               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
24019 <p>sRGB (approximated by 16 control points):</p>
24020 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
24021 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
24022 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
24023 <p>Note that above figures show a 16 control points approximation of preset
24024 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
24025             </td>
24026           </tr>
24027
24028
24029           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24030            <!-- end of entry -->
24031         
24032         
24033
24034       <!-- end of kind -->
24035       </tbody>
24036
24037   <!-- end of section -->
24038   <tr><td colspan="6" id="section_led" class="section">led</td></tr>
24039
24040
24041       <tr><td colspan="6" class="kind">controls</td></tr>
24042
24043       <thead class="entries_header">
24044         <tr>
24045           <th class="th_name">Property Name</th>
24046           <th class="th_type">Type</th>
24047           <th class="th_description">Description</th>
24048           <th class="th_units">Units</th>
24049           <th class="th_range">Range</th>
24050           <th class="th_tags">Tags</th>
24051         </tr>
24052       </thead>
24053
24054       <tbody>
24055
24056         
24057
24058         
24059
24060         
24061
24062         
24063
24064                 
24065           <tr class="entry" id="controls_android.led.transmit">
24066             <td class="entry_name
24067              " rowspan="1">
24068               android.<wbr/>led.<wbr/>transmit
24069             </td>
24070             <td class="entry_type">
24071                 <span class="entry_type_name entry_type_name_enum">byte</span>
24072
24073               <span class="entry_type_visibility"> [hidden as boolean]</span>
24074
24075
24076
24077
24078
24079                 <ul class="entry_type_enum">
24080                   <li>
24081                     <span class="entry_type_enum_name">OFF</span>
24082                   </li>
24083                   <li>
24084                     <span class="entry_type_enum_name">ON</span>
24085                   </li>
24086                 </ul>
24087
24088             </td> <!-- entry_type -->
24089
24090             <td class="entry_description">
24091               <p>This LED is nominally used to indicate to the user
24092 that the camera is powered on and may be streaming images back to the
24093 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
24094 disable this when video is processed locally and not transmitted to
24095 any untrusted applications.<wbr/></p>
24096 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
24097 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
24098 data is stored locally on the device.<wbr/></p>
24099 <p>The LED <em>may</em> be off if a trusted application is using the data that
24100 doesn't violate the above rules.<wbr/></p>
24101             </td>
24102
24103             <td class="entry_units">
24104             </td>
24105
24106             <td class="entry_range">
24107             </td>
24108
24109             <td class="entry_tags">
24110             </td>
24111
24112           </tr>
24113
24114
24115           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24116            <!-- end of entry -->
24117         
24118         
24119
24120       <!-- end of kind -->
24121       </tbody>
24122       <tr><td colspan="6" class="kind">dynamic</td></tr>
24123
24124       <thead class="entries_header">
24125         <tr>
24126           <th class="th_name">Property Name</th>
24127           <th class="th_type">Type</th>
24128           <th class="th_description">Description</th>
24129           <th class="th_units">Units</th>
24130           <th class="th_range">Range</th>
24131           <th class="th_tags">Tags</th>
24132         </tr>
24133       </thead>
24134
24135       <tbody>
24136
24137         
24138
24139         
24140
24141         
24142
24143         
24144
24145                 
24146           <tr class="entry" id="dynamic_android.led.transmit">
24147             <td class="entry_name
24148              " rowspan="1">
24149               android.<wbr/>led.<wbr/>transmit
24150             </td>
24151             <td class="entry_type">
24152                 <span class="entry_type_name entry_type_name_enum">byte</span>
24153
24154               <span class="entry_type_visibility"> [hidden as boolean]</span>
24155
24156
24157
24158
24159
24160                 <ul class="entry_type_enum">
24161                   <li>
24162                     <span class="entry_type_enum_name">OFF</span>
24163                   </li>
24164                   <li>
24165                     <span class="entry_type_enum_name">ON</span>
24166                   </li>
24167                 </ul>
24168
24169             </td> <!-- entry_type -->
24170
24171             <td class="entry_description">
24172               <p>This LED is nominally used to indicate to the user
24173 that the camera is powered on and may be streaming images back to the
24174 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
24175 disable this when video is processed locally and not transmitted to
24176 any untrusted applications.<wbr/></p>
24177 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
24178 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
24179 data is stored locally on the device.<wbr/></p>
24180 <p>The LED <em>may</em> be off if a trusted application is using the data that
24181 doesn't violate the above rules.<wbr/></p>
24182             </td>
24183
24184             <td class="entry_units">
24185             </td>
24186
24187             <td class="entry_range">
24188             </td>
24189
24190             <td class="entry_tags">
24191             </td>
24192
24193           </tr>
24194
24195
24196           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24197            <!-- end of entry -->
24198         
24199         
24200
24201       <!-- end of kind -->
24202       </tbody>
24203       <tr><td colspan="6" class="kind">static</td></tr>
24204
24205       <thead class="entries_header">
24206         <tr>
24207           <th class="th_name">Property Name</th>
24208           <th class="th_type">Type</th>
24209           <th class="th_description">Description</th>
24210           <th class="th_units">Units</th>
24211           <th class="th_range">Range</th>
24212           <th class="th_tags">Tags</th>
24213         </tr>
24214       </thead>
24215
24216       <tbody>
24217
24218         
24219
24220         
24221
24222         
24223
24224         
24225
24226                 
24227           <tr class="entry" id="static_android.led.availableLeds">
24228             <td class="entry_name
24229              " rowspan="1">
24230               android.<wbr/>led.<wbr/>available<wbr/>Leds
24231             </td>
24232             <td class="entry_type">
24233                 <span class="entry_type_name entry_type_name_enum">byte</span>
24234                 <span class="entry_type_container">x</span>
24235
24236                 <span class="entry_type_array">
24237                   n
24238                 </span>
24239               <span class="entry_type_visibility"> [hidden]</span>
24240
24241
24242
24243
24244
24245                 <ul class="entry_type_enum">
24246                   <li>
24247                     <span class="entry_type_enum_name">TRANSMIT</span>
24248                     <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>
24249                   </li>
24250                 </ul>
24251
24252             </td> <!-- entry_type -->
24253
24254             <td class="entry_description">
24255               <p>A list of camera LEDs that are available on this system.<wbr/></p>
24256             </td>
24257
24258             <td class="entry_units">
24259             </td>
24260
24261             <td class="entry_range">
24262             </td>
24263
24264             <td class="entry_tags">
24265             </td>
24266
24267           </tr>
24268
24269
24270           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24271            <!-- end of entry -->
24272         
24273         
24274
24275       <!-- end of kind -->
24276       </tbody>
24277
24278   <!-- end of section -->
24279   <tr><td colspan="6" id="section_info" class="section">info</td></tr>
24280
24281
24282       <tr><td colspan="6" class="kind">static</td></tr>
24283
24284       <thead class="entries_header">
24285         <tr>
24286           <th class="th_name">Property Name</th>
24287           <th class="th_type">Type</th>
24288           <th class="th_description">Description</th>
24289           <th class="th_units">Units</th>
24290           <th class="th_range">Range</th>
24291           <th class="th_tags">Tags</th>
24292         </tr>
24293       </thead>
24294
24295       <tbody>
24296
24297         
24298
24299         
24300
24301         
24302
24303         
24304
24305                 
24306           <tr class="entry" id="static_android.info.supportedHardwareLevel">
24307             <td class="entry_name
24308              " rowspan="5">
24309               android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
24310             </td>
24311             <td class="entry_type">
24312                 <span class="entry_type_name entry_type_name_enum">byte</span>
24313
24314               <span class="entry_type_visibility"> [public]</span>
24315
24316
24317               <span class="entry_type_hwlevel">[legacy] </span>
24318
24319
24320
24321                 <ul class="entry_type_enum">
24322                   <li>
24323                     <span class="entry_type_enum_name">LIMITED</span>
24324                     <span class="entry_type_enum_notes"><p>This camera device has only limited capabilities.<wbr/></p></span>
24325                   </li>
24326                   <li>
24327                     <span class="entry_type_enum_name">FULL</span>
24328                     <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p></span>
24329                   </li>
24330                   <li>
24331                     <span class="entry_type_enum_name">LEGACY</span>
24332                     <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p></span>
24333                   </li>
24334                   <li>
24335                     <span class="entry_type_enum_name">HIGH_RESOLUTION</span>
24336                     <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications at full rate,<wbr/>
24337 and additional high-resolution outputs at lower rates.<wbr/></p></span>
24338                   </li>
24339                 </ul>
24340
24341             </td> <!-- entry_type -->
24342
24343             <td class="entry_description">
24344               <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
24345             </td>
24346
24347             <td class="entry_units">
24348             </td>
24349
24350             <td class="entry_range">
24351             </td>
24352
24353             <td class="entry_tags">
24354             </td>
24355
24356           </tr>
24357           <tr class="entries_header">
24358             <th class="th_details" colspan="5">Details</th>
24359           </tr>
24360           <tr class="entry_cont">
24361             <td class="entry_details" colspan="5">
24362               <p>Camera devices will come in three flavors: LEGACY,<wbr/> LIMITED and FULL.<wbr/></p>
24363 <p>A FULL device will support below capabilities:</p>
24364 <ul>
24365 <li>30fps operation at maximum resolution (== sensor resolution) is preferred,<wbr/> more than
24366   20fps is required,<wbr/> for at least uncompressed YUV
24367   output.<wbr/> (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains BURST_<wbr/>CAPTURE)</li>
24368 <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>
24369 <li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains MANUAL_<wbr/>SENSOR)</li>
24370 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
24371   MANUAL_<wbr/>POST_<wbr/>PROCESSING)</li>
24372 <li>Arbitrary cropping region (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>==</code> FREEFORM)</li>
24373 <li>At least 3 processed (but not stalling) format output streams
24374   (<a href="#static_android.request.maxNumOutputProc">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc</a> <code>&gt;=</code> 3)</li>
24375 <li>The required stream configuration defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a></li>
24376 <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>
24377 <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>
24378 </ul>
24379 <p>A LIMITED device may have some or none of the above characteristics.<wbr/>
24380 To find out more refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
24381 <p>Some features are not part of any particular hardware level or capability and must be
24382 queried separately.<wbr/> These include:</p>
24383 <ul>
24384 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
24385 <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>
24386 <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>
24387 <li>Optical or electrical image stabilization
24388   (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
24389    <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
24390 </ul>
24391 <p>A LEGACY device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
24392 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/></p>
24393 <p>Each higher level supports everything the lower level supports
24394 in this order: FULL <code>&gt;</code> LIMITED <code>&gt;</code> LEGACY.<wbr/></p>
24395 <p>A HIGH_<wbr/>RESOLUTION device is equivalent to a FULL device,<wbr/> except that:</p>
24396 <ul>
24397 <li>At least one output resolution of 8 megapixels or higher in uncompressed YUV is
24398   supported at <code>&gt;=</code> 20 fps.<wbr/></li>
24399 <li>Maximum-size (sensor resolution) uncompressed YUV is supported  at <code>&gt;=</code> 10
24400   fps.<wbr/></li>
24401 <li>For devices that list the RAW capability and support either RAW10 or RAW12 output,<wbr/>
24402   maximum-resolution RAW10 or RAW12 capture will operate at least at the rate of
24403   maximum-resolution YUV capture,<wbr/> and at least one supported output resolution of
24404   8 megapixels or higher in RAW10 or RAW12 is supported <code>&gt;=</code> 20 fps.<wbr/></li>
24405 </ul>
24406             </td>
24407           </tr>
24408
24409           <tr class="entries_header">
24410             <th class="th_details" colspan="5">HAL Implementation Details</th>
24411           </tr>
24412           <tr class="entry_cont">
24413             <td class="entry_details" colspan="5">
24414               <p>The camera 3 HAL device can implement one of two possible
24415 operational modes; limited and full.<wbr/> Full support is
24416 expected from new higher-end devices.<wbr/> Limited mode has
24417 hardware requirements roughly in line with those for a
24418 camera HAL device v1 implementation,<wbr/> and is expected from
24419 older or inexpensive devices.<wbr/> Full is a strict superset of
24420 limited,<wbr/> and they share the same essential operational flow.<wbr/></p>
24421 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
24422 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there
24423 for backwards compatibility in the <code>android.<wbr/>hardware.<wbr/>camera2</code>
24424 user-facing API only.<wbr/></p>
24425             </td>
24426           </tr>
24427
24428           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24429            <!-- end of entry -->
24430         
24431         
24432
24433       <!-- end of kind -->
24434       </tbody>
24435
24436   <!-- end of section -->
24437   <tr><td colspan="6" id="section_blackLevel" class="section">blackLevel</td></tr>
24438
24439
24440       <tr><td colspan="6" class="kind">controls</td></tr>
24441
24442       <thead class="entries_header">
24443         <tr>
24444           <th class="th_name">Property Name</th>
24445           <th class="th_type">Type</th>
24446           <th class="th_description">Description</th>
24447           <th class="th_units">Units</th>
24448           <th class="th_range">Range</th>
24449           <th class="th_tags">Tags</th>
24450         </tr>
24451       </thead>
24452
24453       <tbody>
24454
24455         
24456
24457         
24458
24459         
24460
24461         
24462
24463                 
24464           <tr class="entry" id="controls_android.blackLevel.lock">
24465             <td class="entry_name
24466              " rowspan="5">
24467               android.<wbr/>black<wbr/>Level.<wbr/>lock
24468             </td>
24469             <td class="entry_type">
24470                 <span class="entry_type_name entry_type_name_enum">byte</span>
24471
24472               <span class="entry_type_visibility"> [public as boolean]</span>
24473
24474
24475               <span class="entry_type_hwlevel">[full] </span>
24476
24477
24478
24479                 <ul class="entry_type_enum">
24480                   <li>
24481                     <span class="entry_type_enum_name">OFF</span>
24482                   </li>
24483                   <li>
24484                     <span class="entry_type_enum_name">ON</span>
24485                   </li>
24486                 </ul>
24487
24488             </td> <!-- entry_type -->
24489
24490             <td class="entry_description">
24491               <p>Whether black-level compensation is locked
24492 to its current values,<wbr/> or is free to vary.<wbr/></p>
24493             </td>
24494
24495             <td class="entry_units">
24496             </td>
24497
24498             <td class="entry_range">
24499             </td>
24500
24501             <td class="entry_tags">
24502               <ul class="entry_tags">
24503                   <li><a href="#tag_HAL2">HAL2</a></li>
24504               </ul>
24505             </td>
24506
24507           </tr>
24508           <tr class="entries_header">
24509             <th class="th_details" colspan="5">Details</th>
24510           </tr>
24511           <tr class="entry_cont">
24512             <td class="entry_details" colspan="5">
24513               <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
24514 compensation will not change until the lock is set to
24515 <code>false</code> (OFF).<wbr/></p>
24516 <p>Since changes to certain capture parameters (such as
24517 exposure time) may require resetting of black level
24518 compensation,<wbr/> the camera device must report whether setting
24519 the black level lock was successful in the output result
24520 metadata.<wbr/></p>
24521 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
24522 <ul>
24523 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
24524 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
24525 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
24526 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
24527 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
24528 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
24529 </ul>
24530 <p>And the exposure change in Request 4 requires the camera
24531 device to reset the black level offsets,<wbr/> then the output
24532 result metadata is expected to be:</p>
24533 <ul>
24534 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
24535 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
24536 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
24537 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
24538 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
24539 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
24540 </ul>
24541 <p>This indicates to the application that on frame 4,<wbr/> black
24542 levels were reset due to exposure value changes,<wbr/> and pixel
24543 values may not be consistent across captures.<wbr/></p>
24544 <p>The camera device will maintain the lock to the extent
24545 possible,<wbr/> only overriding the lock to OFF when changes to
24546 other request parameters require a black level recalculation
24547 or reset.<wbr/></p>
24548             </td>
24549           </tr>
24550
24551           <tr class="entries_header">
24552             <th class="th_details" colspan="5">HAL Implementation Details</th>
24553           </tr>
24554           <tr class="entry_cont">
24555             <td class="entry_details" colspan="5">
24556               <p>If for some reason black level locking is no longer possible
24557 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
24558 black level offsets to be recalculated),<wbr/> then the HAL must
24559 override this request (and it must report 'OFF' when this
24560 does happen) until the next capture for which locking is
24561 possible again.<wbr/></p>
24562             </td>
24563           </tr>
24564
24565           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24566            <!-- end of entry -->
24567         
24568         
24569
24570       <!-- end of kind -->
24571       </tbody>
24572       <tr><td colspan="6" class="kind">dynamic</td></tr>
24573
24574       <thead class="entries_header">
24575         <tr>
24576           <th class="th_name">Property Name</th>
24577           <th class="th_type">Type</th>
24578           <th class="th_description">Description</th>
24579           <th class="th_units">Units</th>
24580           <th class="th_range">Range</th>
24581           <th class="th_tags">Tags</th>
24582         </tr>
24583       </thead>
24584
24585       <tbody>
24586
24587         
24588
24589         
24590
24591         
24592
24593         
24594
24595                 
24596           <tr class="entry" id="dynamic_android.blackLevel.lock">
24597             <td class="entry_name
24598              " rowspan="5">
24599               android.<wbr/>black<wbr/>Level.<wbr/>lock
24600             </td>
24601             <td class="entry_type">
24602                 <span class="entry_type_name entry_type_name_enum">byte</span>
24603
24604               <span class="entry_type_visibility"> [public as boolean]</span>
24605
24606
24607               <span class="entry_type_hwlevel">[full] </span>
24608
24609
24610
24611                 <ul class="entry_type_enum">
24612                   <li>
24613                     <span class="entry_type_enum_name">OFF</span>
24614                   </li>
24615                   <li>
24616                     <span class="entry_type_enum_name">ON</span>
24617                   </li>
24618                 </ul>
24619
24620             </td> <!-- entry_type -->
24621
24622             <td class="entry_description">
24623               <p>Whether black-level compensation is locked
24624 to its current values,<wbr/> or is free to vary.<wbr/></p>
24625             </td>
24626
24627             <td class="entry_units">
24628             </td>
24629
24630             <td class="entry_range">
24631             </td>
24632
24633             <td class="entry_tags">
24634               <ul class="entry_tags">
24635                   <li><a href="#tag_HAL2">HAL2</a></li>
24636               </ul>
24637             </td>
24638
24639           </tr>
24640           <tr class="entries_header">
24641             <th class="th_details" colspan="5">Details</th>
24642           </tr>
24643           <tr class="entry_cont">
24644             <td class="entry_details" colspan="5">
24645               <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
24646 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
24647 a change in other capture settings forced the camera device to
24648 perform a black level reset.<wbr/></p>
24649             </td>
24650           </tr>
24651
24652           <tr class="entries_header">
24653             <th class="th_details" colspan="5">HAL Implementation Details</th>
24654           </tr>
24655           <tr class="entry_cont">
24656             <td class="entry_details" colspan="5">
24657               <p>If for some reason black level locking is no longer possible
24658 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
24659 black level offsets to be recalculated),<wbr/> then the HAL must
24660 override this request (and it must report 'OFF' when this
24661 does happen) until the next capture for which locking is
24662 possible again.<wbr/></p>
24663             </td>
24664           </tr>
24665
24666           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24667            <!-- end of entry -->
24668         
24669         
24670
24671       <!-- end of kind -->
24672       </tbody>
24673
24674   <!-- end of section -->
24675   <tr><td colspan="6" id="section_sync" class="section">sync</td></tr>
24676
24677
24678       <tr><td colspan="6" class="kind">dynamic</td></tr>
24679
24680       <thead class="entries_header">
24681         <tr>
24682           <th class="th_name">Property Name</th>
24683           <th class="th_type">Type</th>
24684           <th class="th_description">Description</th>
24685           <th class="th_units">Units</th>
24686           <th class="th_range">Range</th>
24687           <th class="th_tags">Tags</th>
24688         </tr>
24689       </thead>
24690
24691       <tbody>
24692
24693         
24694
24695         
24696
24697         
24698
24699         
24700
24701                 
24702           <tr class="entry" id="dynamic_android.sync.frameNumber">
24703             <td class="entry_name
24704              " rowspan="5">
24705               android.<wbr/>sync.<wbr/>frame<wbr/>Number
24706             </td>
24707             <td class="entry_type">
24708                 <span class="entry_type_name entry_type_name_enum">int64</span>
24709
24710               <span class="entry_type_visibility"> [hidden]</span>
24711
24712
24713               <span class="entry_type_hwlevel">[legacy] </span>
24714
24715
24716
24717                 <ul class="entry_type_enum">
24718                   <li>
24719                     <span class="entry_type_enum_name">CONVERGING</span>
24720                     <span class="entry_type_enum_value">-1</span>
24721                     <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
24722 <p>Synchronization is in progress,<wbr/> and reading metadata from this
24723 result may include a mix of data that have taken effect since the
24724 last synchronization time.<wbr/></p>
24725 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
24726 this value will update to the actual frame number frame number
24727 the result is guaranteed to be synchronized to (as long as the
24728 request settings remain constant).<wbr/></p></span>
24729                   </li>
24730                   <li>
24731                     <span class="entry_type_enum_name">UNKNOWN</span>
24732                     <span class="entry_type_enum_value">-2</span>
24733                     <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
24734 <p>The result may have already converged,<wbr/> or it may be in
24735 progress.<wbr/>  Reading from this result may include some mix
24736 of settings from past requests.<wbr/></p>
24737 <p>After a settings change,<wbr/> the new settings will eventually all
24738 take effect for the output buffers and results.<wbr/> However,<wbr/> this
24739 value will not change when that happens.<wbr/> Altering settings
24740 rapidly may provide outcomes using mixes of settings from recent
24741 requests.<wbr/></p>
24742 <p>This value is intended primarily for backwards compatibility with
24743 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
24744                   </li>
24745                 </ul>
24746
24747             </td> <!-- entry_type -->
24748
24749             <td class="entry_description">
24750               <p>The frame number corresponding to the last request
24751 with which the output result (metadata + buffers) has been fully
24752 synchronized.<wbr/></p>
24753             </td>
24754
24755             <td class="entry_units">
24756             </td>
24757
24758             <td class="entry_range">
24759               <p>Either a non-negative value corresponding to a
24760 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
24761             </td>
24762
24763             <td class="entry_tags">
24764               <ul class="entry_tags">
24765                   <li><a href="#tag_V1">V1</a></li>
24766               </ul>
24767             </td>
24768
24769           </tr>
24770           <tr class="entries_header">
24771             <th class="th_details" colspan="5">Details</th>
24772           </tr>
24773           <tr class="entry_cont">
24774             <td class="entry_details" colspan="5">
24775               <p>When a request is submitted to the camera device,<wbr/> there is usually a
24776 delay of several frames before the controls get applied.<wbr/> A camera
24777 device may either choose to account for this delay by implementing a
24778 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
24779 it may start streaming control changes that span over several frame
24780 boundaries.<wbr/></p>
24781 <p>In the latter case,<wbr/> whenever a request's settings change relative to
24782 the previous submitted request,<wbr/> the full set of changes may take
24783 multiple frame durations to fully take effect.<wbr/> Some settings may
24784 take effect sooner (in less frame durations) than others.<wbr/></p>
24785 <p>While a set of control changes are being propagated,<wbr/> this value
24786 will be CONVERGING.<wbr/></p>
24787 <p>Once it is fully known that a set of control changes have been
24788 finished propagating,<wbr/> and the resulting updated control settings
24789 have been read back by the camera device,<wbr/> this value will be set
24790 to a non-negative frame number (corresponding to the request to
24791 which the results have synchronized to).<wbr/></p>
24792 <p>Older camera device implementations may not have a way to detect
24793 when all camera controls have been applied,<wbr/> and will always set this
24794 value to UNKNOWN.<wbr/></p>
24795 <p>FULL capability devices will always have this value set to the
24796 frame number of the request corresponding to this result.<wbr/></p>
24797 <p><em>Further details</em>:</p>
24798 <ul>
24799 <li>Whenever a request differs from the last request,<wbr/> any future
24800 results not yet returned may have this value set to CONVERGING (this
24801 could include any in-progress captures not yet returned by the camera
24802 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
24803 <li>Submitting a series of multiple requests that differ from the
24804 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
24805 moves the new synchronization frame to the last non-repeating
24806 request (using the smallest frame number from the contiguous list of
24807 repeating requests).<wbr/></li>
24808 <li>Submitting the same request repeatedly will not change this value
24809 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
24810 <li>When this value changes to non-negative,<wbr/> that means that all of the
24811 metadata controls from the request have been applied,<wbr/> all of the
24812 metadata controls from the camera device have been read to the
24813 updated values (into the result),<wbr/> and all of the graphics buffers
24814 corresponding to this result are also synchronized to the request.<wbr/></li>
24815 </ul>
24816 <p><em>Pipeline considerations</em>:</p>
24817 <p>Submitting a request with updated controls relative to the previously
24818 submitted requests may also invalidate the synchronization state
24819 of all the results corresponding to currently in-flight requests.<wbr/></p>
24820 <p>In other words,<wbr/> results for this current request and up to
24821 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
24822 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
24823             </td>
24824           </tr>
24825
24826           <tr class="entries_header">
24827             <th class="th_details" colspan="5">HAL Implementation Details</th>
24828           </tr>
24829           <tr class="entry_cont">
24830             <td class="entry_details" colspan="5">
24831               <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
24832 is also UNKNOWN.<wbr/></p>
24833 <p>FULL capability devices should simply set this value to the
24834 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
24835             </td>
24836           </tr>
24837
24838           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24839            <!-- end of entry -->
24840         
24841         
24842
24843       <!-- end of kind -->
24844       </tbody>
24845       <tr><td colspan="6" class="kind">static</td></tr>
24846
24847       <thead class="entries_header">
24848         <tr>
24849           <th class="th_name">Property Name</th>
24850           <th class="th_type">Type</th>
24851           <th class="th_description">Description</th>
24852           <th class="th_units">Units</th>
24853           <th class="th_range">Range</th>
24854           <th class="th_tags">Tags</th>
24855         </tr>
24856       </thead>
24857
24858       <tbody>
24859
24860         
24861
24862         
24863
24864         
24865
24866         
24867
24868                 
24869           <tr class="entry" id="static_android.sync.maxLatency">
24870             <td class="entry_name
24871              " rowspan="5">
24872               android.<wbr/>sync.<wbr/>max<wbr/>Latency
24873             </td>
24874             <td class="entry_type">
24875                 <span class="entry_type_name entry_type_name_enum">int32</span>
24876
24877               <span class="entry_type_visibility"> [public]</span>
24878
24879
24880               <span class="entry_type_hwlevel">[legacy] </span>
24881
24882
24883
24884                 <ul class="entry_type_enum">
24885                   <li>
24886                     <span class="entry_type_enum_name">PER_FRAME_CONTROL</span>
24887                     <span class="entry_type_enum_value">0</span>
24888                     <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
24889 <p>Furthermore for all results,<wbr/>
24890 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code></p>
24891 <p>Changing controls over multiple requests one after another will
24892 produce results that have those controls applied atomically
24893 each frame.<wbr/></p>
24894 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
24895                   </li>
24896                   <li>
24897                     <span class="entry_type_enum_name">UNKNOWN</span>
24898                     <span class="entry_type_enum_value">-1</span>
24899                     <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
24900 of the past requests applied to the camera settings.<wbr/></p>
24901 <p>By submitting a series of identical requests,<wbr/> the camera device
24902 will eventually have the camera settings applied,<wbr/> but it is
24903 unknown when that exact point will be.<wbr/></p>
24904 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
24905                   </li>
24906                 </ul>
24907
24908             </td> <!-- entry_type -->
24909
24910             <td class="entry_description">
24911               <p>The maximum number of frames that can occur after a request
24912 (different than the previous) has been submitted,<wbr/> and before the
24913 result's state becomes synchronized (by setting
24914 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> to a non-negative value).<wbr/></p>
24915             </td>
24916
24917             <td class="entry_units">
24918               Frame counts
24919             </td>
24920
24921             <td class="entry_range">
24922               <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
24923             </td>
24924
24925             <td class="entry_tags">
24926               <ul class="entry_tags">
24927                   <li><a href="#tag_V1">V1</a></li>
24928               </ul>
24929             </td>
24930
24931           </tr>
24932           <tr class="entries_header">
24933             <th class="th_details" colspan="5">Details</th>
24934           </tr>
24935           <tr class="entry_cont">
24936             <td class="entry_details" colspan="5">
24937               <p>This defines the maximum distance (in number of metadata results),<wbr/>
24938 between <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> and the equivalent
24939 frame number for that result.<wbr/></p>
24940 <p>In other words this acts as an upper boundary for how many frames
24941 must occur before the camera device knows for a fact that the new
24942 submitted camera settings have been applied in outgoing frames.<wbr/></p>
24943 <p>For example if the distance was 2,<wbr/></p>
24944 <pre><code>initial request = X (repeating)
24945 request1 = X
24946 request2 = Y
24947 request3 = Y
24948 request4 = Y
24949
24950 where requestN has frameNumber N,<wbr/> and the first of the repeating
24951 initial request's has frameNumber F (and F &lt; 1).<wbr/>
24952
24953 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
24954 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
24955 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
24956 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
24957 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
24958
24959 where resultN has frameNumber N.<wbr/>
24960 </code></pre>
24961 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
24962 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
24963 <code>4 - 2 = 2</code>.<wbr/></p>
24964             </td>
24965           </tr>
24966
24967           <tr class="entries_header">
24968             <th class="th_details" colspan="5">HAL Implementation Details</th>
24969           </tr>
24970           <tr class="entry_cont">
24971             <td class="entry_details" colspan="5">
24972               <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
24973 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
24974 <code>@link{android.<wbr/>hardware.<wbr/>camera2.<wbr/>Capture<wbr/>Result#get<wbr/>Frame<wbr/>Number}</code>.<wbr/></p>
24975 <p>LIMITED devices are strongly encouraged to use a non-negative
24976 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
24977 to know when sensor settings have been applied.<wbr/></p>
24978             </td>
24979           </tr>
24980
24981           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
24982            <!-- end of entry -->
24983         
24984         
24985
24986       <!-- end of kind -->
24987       </tbody>
24988
24989   <!-- end of section -->
24990   <tr><td colspan="6" id="section_reprocess" class="section">reprocess</td></tr>
24991
24992
24993       <tr><td colspan="6" class="kind">controls</td></tr>
24994
24995       <thead class="entries_header">
24996         <tr>
24997           <th class="th_name">Property Name</th>
24998           <th class="th_type">Type</th>
24999           <th class="th_description">Description</th>
25000           <th class="th_units">Units</th>
25001           <th class="th_range">Range</th>
25002           <th class="th_tags">Tags</th>
25003         </tr>
25004       </thead>
25005
25006       <tbody>
25007
25008         
25009
25010         
25011
25012         
25013
25014         
25015
25016                 
25017           <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
25018             <td class="entry_name
25019              " rowspan="3">
25020               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
25021             </td>
25022             <td class="entry_type">
25023                 <span class="entry_type_name">float</span>
25024
25025               <span class="entry_type_visibility"> [public]</span>
25026
25027
25028               <span class="entry_type_hwlevel">[limited] </span>
25029
25030
25031
25032
25033             </td> <!-- entry_type -->
25034
25035             <td class="entry_description">
25036               <p>The amount of exposure time increase factor applied to the original output
25037 frame by the application processing before sending for reprocessing.<wbr/></p>
25038             </td>
25039
25040             <td class="entry_units">
25041               Relative exposure time increase factor.<wbr/>
25042             </td>
25043
25044             <td class="entry_range">
25045               <p>&gt;= 1.<wbr/>0</p>
25046             </td>
25047
25048             <td class="entry_tags">
25049               <ul class="entry_tags">
25050                   <li><a href="#tag_REPROC">REPROC</a></li>
25051               </ul>
25052             </td>
25053
25054           </tr>
25055           <tr class="entries_header">
25056             <th class="th_details" colspan="5">Details</th>
25057           </tr>
25058           <tr class="entry_cont">
25059             <td class="entry_details" colspan="5">
25060               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
25061 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
25062 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
25063 output frames to effectively reduce the noise to the same level as a frame that was
25064 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
25065 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
25066 the camera device is that the amount of noise in the image would be approximately what
25067 would be expected if the original capture parameters had been a sensitivity of
25068 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
25069 than S and T respectively.<wbr/> If the captured images were processed by the application
25070 before being sent for reprocessing,<wbr/> then the application may have used image processing
25071 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
25072 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
25073 control,<wbr/> the application can communicate to the camera device the actual noise level
25074 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
25075 device can select appropriate noise reduction and edge enhancement parameters to avoid
25076 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
25077 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
25078 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
25079 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
25080 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
25081 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
25082 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
25083 produce the best quality images.<wbr/></p>
25084 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
25085 buffer in a way that affects its effective exposure time.<wbr/></p>
25086 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
25087 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/>
25088 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
25089 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
25090             </td>
25091           </tr>
25092
25093
25094           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25095            <!-- end of entry -->
25096         
25097         
25098
25099       <!-- end of kind -->
25100       </tbody>
25101       <tr><td colspan="6" class="kind">dynamic</td></tr>
25102
25103       <thead class="entries_header">
25104         <tr>
25105           <th class="th_name">Property Name</th>
25106           <th class="th_type">Type</th>
25107           <th class="th_description">Description</th>
25108           <th class="th_units">Units</th>
25109           <th class="th_range">Range</th>
25110           <th class="th_tags">Tags</th>
25111         </tr>
25112       </thead>
25113
25114       <tbody>
25115
25116         
25117
25118         
25119
25120         
25121
25122         
25123
25124                 
25125           <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
25126             <td class="entry_name
25127              " rowspan="3">
25128               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
25129             </td>
25130             <td class="entry_type">
25131                 <span class="entry_type_name">float</span>
25132
25133               <span class="entry_type_visibility"> [public]</span>
25134
25135
25136               <span class="entry_type_hwlevel">[limited] </span>
25137
25138
25139
25140
25141             </td> <!-- entry_type -->
25142
25143             <td class="entry_description">
25144               <p>The amount of exposure time increase factor applied to the original output
25145 frame by the application processing before sending for reprocessing.<wbr/></p>
25146             </td>
25147
25148             <td class="entry_units">
25149               Relative exposure time increase factor.<wbr/>
25150             </td>
25151
25152             <td class="entry_range">
25153               <p>&gt;= 1.<wbr/>0</p>
25154             </td>
25155
25156             <td class="entry_tags">
25157               <ul class="entry_tags">
25158                   <li><a href="#tag_REPROC">REPROC</a></li>
25159               </ul>
25160             </td>
25161
25162           </tr>
25163           <tr class="entries_header">
25164             <th class="th_details" colspan="5">Details</th>
25165           </tr>
25166           <tr class="entry_cont">
25167             <td class="entry_details" colspan="5">
25168               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
25169 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
25170 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
25171 output frames to effectively reduce the noise to the same level as a frame that was
25172 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
25173 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
25174 the camera device is that the amount of noise in the image would be approximately what
25175 would be expected if the original capture parameters had been a sensitivity of
25176 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
25177 than S and T respectively.<wbr/> If the captured images were processed by the application
25178 before being sent for reprocessing,<wbr/> then the application may have used image processing
25179 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
25180 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
25181 control,<wbr/> the application can communicate to the camera device the actual noise level
25182 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
25183 device can select appropriate noise reduction and edge enhancement parameters to avoid
25184 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
25185 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
25186 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
25187 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
25188 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
25189 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
25190 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
25191 produce the best quality images.<wbr/></p>
25192 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
25193 buffer in a way that affects its effective exposure time.<wbr/></p>
25194 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
25195 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/>
25196 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
25197 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
25198             </td>
25199           </tr>
25200
25201
25202           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25203            <!-- end of entry -->
25204         
25205         
25206
25207       <!-- end of kind -->
25208       </tbody>
25209       <tr><td colspan="6" class="kind">static</td></tr>
25210
25211       <thead class="entries_header">
25212         <tr>
25213           <th class="th_name">Property Name</th>
25214           <th class="th_type">Type</th>
25215           <th class="th_description">Description</th>
25216           <th class="th_units">Units</th>
25217           <th class="th_range">Range</th>
25218           <th class="th_tags">Tags</th>
25219         </tr>
25220       </thead>
25221
25222       <tbody>
25223
25224         
25225
25226         
25227
25228         
25229
25230         
25231
25232                 
25233           <tr class="entry" id="static_android.reprocess.maxCaptureStall">
25234             <td class="entry_name
25235              " rowspan="3">
25236               android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
25237             </td>
25238             <td class="entry_type">
25239                 <span class="entry_type_name">int32</span>
25240
25241               <span class="entry_type_visibility"> [public]</span>
25242
25243
25244               <span class="entry_type_hwlevel">[limited] </span>
25245
25246
25247
25248
25249             </td> <!-- entry_type -->
25250
25251             <td class="entry_description">
25252               <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
25253 reprocess capture request.<wbr/></p>
25254             </td>
25255
25256             <td class="entry_units">
25257               Number of frames.<wbr/>
25258             </td>
25259
25260             <td class="entry_range">
25261               <p>&lt;= 4</p>
25262             </td>
25263
25264             <td class="entry_tags">
25265               <ul class="entry_tags">
25266                   <li><a href="#tag_REPROC">REPROC</a></li>
25267               </ul>
25268             </td>
25269
25270           </tr>
25271           <tr class="entries_header">
25272             <th class="th_details" colspan="5">Details</th>
25273           </tr>
25274           <tr class="entry_cont">
25275             <td class="entry_details" colspan="5">
25276               <p>The key describes the maximal interference that one reprocess (input) request
25277 can introduce to the camera simultaneous streaming of regular (output) capture
25278 requests,<wbr/> including repeating requests.<wbr/></p>
25279 <p>When a reprocessing capture request is submitted while a camera output repeating request
25280 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
25281 pipeline for at least one frame duration so that the camera device is unable to process
25282 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
25283 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
25284 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
25285 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
25286 the worst-case number of frame stall introduced by one reprocess request with any kind of
25287 formats/<wbr/>sizes combination.<wbr/></p>
25288 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
25289 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
25290 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
25291 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
25292 YUV_<wbr/>REPROCESSING).<wbr/></p>
25293             </td>
25294           </tr>
25295
25296
25297           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25298            <!-- end of entry -->
25299         
25300         
25301
25302       <!-- end of kind -->
25303       </tbody>
25304
25305   <!-- end of section -->
25306   <tr><td colspan="6" id="section_depth" class="section">depth</td></tr>
25307
25308
25309       <tr><td colspan="6" class="kind">static</td></tr>
25310
25311       <thead class="entries_header">
25312         <tr>
25313           <th class="th_name">Property Name</th>
25314           <th class="th_type">Type</th>
25315           <th class="th_description">Description</th>
25316           <th class="th_units">Units</th>
25317           <th class="th_range">Range</th>
25318           <th class="th_tags">Tags</th>
25319         </tr>
25320       </thead>
25321
25322       <tbody>
25323
25324         
25325
25326         
25327
25328         
25329
25330         
25331
25332                 
25333           <tr class="entry" id="static_android.depth.maxDepthSamples">
25334             <td class="entry_name
25335              " rowspan="3">
25336               android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
25337             </td>
25338             <td class="entry_type">
25339                 <span class="entry_type_name">int32</span>
25340
25341               <span class="entry_type_visibility"> [system]</span>
25342
25343
25344               <span class="entry_type_hwlevel">[limited] </span>
25345
25346
25347
25348
25349             </td> <!-- entry_type -->
25350
25351             <td class="entry_description">
25352               <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
25353             </td>
25354
25355             <td class="entry_units">
25356             </td>
25357
25358             <td class="entry_range">
25359             </td>
25360
25361             <td class="entry_tags">
25362               <ul class="entry_tags">
25363                   <li><a href="#tag_DEPTH">DEPTH</a></li>
25364               </ul>
25365             </td>
25366
25367           </tr>
25368           <tr class="entries_header">
25369             <th class="th_details" colspan="5">Details</th>
25370           </tr>
25371           <tr class="entry_cont">
25372             <td class="entry_details" colspan="5">
25373               <p>If a camera device supports outputting depth range data in the form of a depth point
25374 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
25375 number of points an output buffer may contain.<wbr/></p>
25376 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
25377 If output in the depth point cloud format is not supported,<wbr/> this entry will
25378 not be defined.<wbr/></p>
25379             </td>
25380           </tr>
25381
25382
25383           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25384            <!-- end of entry -->
25385         
25386                 
25387           <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
25388             <td class="entry_name
25389              " rowspan="3">
25390               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
25391             </td>
25392             <td class="entry_type">
25393                 <span class="entry_type_name entry_type_name_enum">int32</span>
25394                 <span class="entry_type_container">x</span>
25395
25396                 <span class="entry_type_array">
25397                   n x 4
25398                 </span>
25399               <span class="entry_type_visibility"> [hidden as streamConfiguration]</span>
25400
25401
25402               <span class="entry_type_hwlevel">[limited] </span>
25403
25404
25405
25406                 <ul class="entry_type_enum">
25407                   <li>
25408                     <span class="entry_type_enum_name">OUTPUT</span>
25409                   </li>
25410                   <li>
25411                     <span class="entry_type_enum_name">INPUT</span>
25412                   </li>
25413                 </ul>
25414
25415             </td> <!-- entry_type -->
25416
25417             <td class="entry_description">
25418               <p>The available depth dataspace stream
25419 configurations that this camera device supports
25420 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
25421             </td>
25422
25423             <td class="entry_units">
25424             </td>
25425
25426             <td class="entry_range">
25427             </td>
25428
25429             <td class="entry_tags">
25430               <ul class="entry_tags">
25431                   <li><a href="#tag_DEPTH">DEPTH</a></li>
25432               </ul>
25433             </td>
25434
25435           </tr>
25436           <tr class="entries_header">
25437             <th class="th_details" colspan="5">Details</th>
25438           </tr>
25439           <tr class="entry_cont">
25440             <td class="entry_details" colspan="5">
25441               <p>These are output stream configurations for use with
25442 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
25443 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
25444 <p>Only devices that support depth output for at least
25445 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
25446 this entry.<wbr/></p>
25447 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
25448 sparse depth point cloud must report a single entry for
25449 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
25450 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
25451 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
25452             </td>
25453           </tr>
25454
25455
25456           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25457            <!-- end of entry -->
25458         
25459                 
25460           <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
25461             <td class="entry_name
25462              " rowspan="3">
25463               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
25464             </td>
25465             <td class="entry_type">
25466                 <span class="entry_type_name">int64</span>
25467                 <span class="entry_type_container">x</span>
25468
25469                 <span class="entry_type_array">
25470                   4 x n
25471                 </span>
25472               <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
25473
25474
25475               <span class="entry_type_hwlevel">[limited] </span>
25476
25477
25478
25479
25480             </td> <!-- entry_type -->
25481
25482             <td class="entry_description">
25483               <p>This lists the minimum frame duration for each
25484 format/<wbr/>size combination for depth output formats.<wbr/></p>
25485             </td>
25486
25487             <td class="entry_units">
25488               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
25489             </td>
25490
25491             <td class="entry_range">
25492             </td>
25493
25494             <td class="entry_tags">
25495               <ul class="entry_tags">
25496                   <li><a href="#tag_DEPTH">DEPTH</a></li>
25497               </ul>
25498             </td>
25499
25500           </tr>
25501           <tr class="entries_header">
25502             <th class="th_details" colspan="5">Details</th>
25503           </tr>
25504           <tr class="entry_cont">
25505             <td class="entry_details" colspan="5">
25506               <p>This should correspond to the frame duration when only that
25507 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
25508 set to either OFF or FAST.<wbr/></p>
25509 <p>When multiple streams are used in a request,<wbr/> the minimum frame
25510 duration will be max(individual stream min durations).<wbr/></p>
25511 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
25512 is the same regardless of whether the stream is input or output.<wbr/></p>
25513 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
25514 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
25515 calculating the max frame rate.<wbr/></p>
25516 <p>(Keep in sync with <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>)</p>
25517             </td>
25518           </tr>
25519
25520
25521           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25522            <!-- end of entry -->
25523         
25524                 
25525           <tr class="entry" id="static_android.depth.availableDepthStallDurations">
25526             <td class="entry_name
25527              " rowspan="3">
25528               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
25529             </td>
25530             <td class="entry_type">
25531                 <span class="entry_type_name">int64</span>
25532                 <span class="entry_type_container">x</span>
25533
25534                 <span class="entry_type_array">
25535                   4 x n
25536                 </span>
25537               <span class="entry_type_visibility"> [hidden as streamConfigurationDuration]</span>
25538
25539
25540               <span class="entry_type_hwlevel">[limited] </span>
25541
25542
25543
25544
25545             </td> <!-- entry_type -->
25546
25547             <td class="entry_description">
25548               <p>This lists the maximum stall duration for each
25549 output format/<wbr/>size combination for depth streams.<wbr/></p>
25550             </td>
25551
25552             <td class="entry_units">
25553               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
25554             </td>
25555
25556             <td class="entry_range">
25557             </td>
25558
25559             <td class="entry_tags">
25560               <ul class="entry_tags">
25561                   <li><a href="#tag_DEPTH">DEPTH</a></li>
25562               </ul>
25563             </td>
25564
25565           </tr>
25566           <tr class="entries_header">
25567             <th class="th_details" colspan="5">Details</th>
25568           </tr>
25569           <tr class="entry_cont">
25570             <td class="entry_details" colspan="5">
25571               <p>A stall duration is how much extra time would get added
25572 to the normal minimum frame duration for a repeating request
25573 that has streams with non-zero stall.<wbr/></p>
25574 <p>This functions similarly to
25575 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
25576 streams.<wbr/></p>
25577 <p>All depth output stream formats may have a nonzero stall
25578 duration.<wbr/></p>
25579             </td>
25580           </tr>
25581
25582
25583           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25584            <!-- end of entry -->
25585         
25586                 
25587           <tr class="entry" id="static_android.depth.depthIsExclusive">
25588             <td class="entry_name
25589              " rowspan="3">
25590               android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
25591             </td>
25592             <td class="entry_type">
25593                 <span class="entry_type_name entry_type_name_enum">byte</span>
25594
25595               <span class="entry_type_visibility"> [public as boolean]</span>
25596
25597
25598               <span class="entry_type_hwlevel">[limited] </span>
25599
25600
25601
25602                 <ul class="entry_type_enum">
25603                   <li>
25604                     <span class="entry_type_enum_name">FALSE</span>
25605                   </li>
25606                   <li>
25607                     <span class="entry_type_enum_name">TRUE</span>
25608                   </li>
25609                 </ul>
25610
25611             </td> <!-- entry_type -->
25612
25613             <td class="entry_description">
25614               <p>Indicates whether a capture request may target both a
25615 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
25616 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
25617             </td>
25618
25619             <td class="entry_units">
25620             </td>
25621
25622             <td class="entry_range">
25623             </td>
25624
25625             <td class="entry_tags">
25626             </td>
25627
25628           </tr>
25629           <tr class="entries_header">
25630             <th class="th_details" colspan="5">Details</th>
25631           </tr>
25632           <tr class="entry_cont">
25633             <td class="entry_details" colspan="5">
25634               <p>If TRUE,<wbr/> including both depth and color outputs in a single
25635 capture request is not supported.<wbr/> An application must interleave color
25636 and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
25637 of output.<wbr/></p>
25638 <p>Typically,<wbr/> this restriction exists on camera devices that
25639 need to emit a specific pattern or wavelength of light to
25640 measure depth values,<wbr/> which causes the color image to be
25641 corrupted during depth measurement.<wbr/></p>
25642             </td>
25643           </tr>
25644
25645
25646           <tr class="entry_spacer"><td class="entry_spacer" colspan="6"></td></tr>
25647            <!-- end of entry -->
25648         
25649         
25650
25651       <!-- end of kind -->
25652       </tbody>
25653
25654   <!-- end of section -->
25655 <!-- </namespace> -->
25656   </table>
25657
25658   <div class="tags" id="tag_index">
25659     <h2>Tags</h2>
25660     <ul>
25661       <li id="tag_BC">BC - 
25662         Needed for backwards compatibility with old Java API
25663     
25664         <ul class="tags_entries">
25665           <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
25666           <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
25667           <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
25668           <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
25669           <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
25670           <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
25671           <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
25672           <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
25673           <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
25674           <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
25675           <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
25676           <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
25677           <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
25678           <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
25679           <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
25680           <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
25681           <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
25682           <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
25683           <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
25684           <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
25685           <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
25686           <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
25687           <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
25688           <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
25689           <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
25690           <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
25691           <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
25692           <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
25693           <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
25694           <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
25695           <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
25696           <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
25697           <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
25698           <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
25699           <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
25700           <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
25701           <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
25702           <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
25703           <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
25704           <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
25705           <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
25706           <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
25707           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
25708           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
25709           <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
25710           <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
25711           <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
25712           <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
25713           <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
25714           <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
25715           <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
25716           <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
25717           <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
25718           <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
25719           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
25720           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
25721           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
25722           <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
25723           <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
25724           <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
25725           <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
25726           <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
25727           <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
25728           <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
25729           <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
25730           <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
25731           <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
25732         </ul>
25733       </li> <!-- tag_BC -->
25734       <li id="tag_V1">V1 - 
25735         New features for first camera 2 release (API1)
25736     
25737         <ul class="tags_entries">
25738           <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
25739           <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
25740           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
25741           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
25742           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
25743           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
25744           <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
25745           <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
25746           <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
25747           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
25748           <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
25749           <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
25750           <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
25751           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
25752           <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
25753           <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
25754           <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
25755           <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
25756           <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
25757           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
25758           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
25759           <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
25760           <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
25761           <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
25762           <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
25763           <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
25764           <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
25765           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
25766           <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
25767           <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
25768           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
25769           <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
25770           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
25771           <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
25772           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
25773           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
25774           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
25775           <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
25776           <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
25777           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
25778           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
25779           <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
25780           <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
25781           <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
25782           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
25783         </ul>
25784       </li> <!-- tag_V1 -->
25785       <li id="tag_RAW">RAW - 
25786         Needed for useful RAW image processing and DNG file support
25787     
25788         <ul class="tags_entries">
25789           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
25790           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
25791           <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
25792           <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
25793           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
25794           <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
25795           <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
25796           <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
25797           <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
25798           <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
25799           <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
25800           <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
25801           <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
25802           <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
25803           <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
25804           <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
25805           <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
25806           <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
25807           <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
25808           <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
25809           <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
25810           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
25811           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
25812           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
25813           <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
25814           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
25815         </ul>
25816       </li> <!-- tag_RAW -->
25817       <li id="tag_HAL2">HAL2 - 
25818         Entry is only used by camera device HAL 2.x
25819     
25820         <ul class="tags_entries">
25821           <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
25822           <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
25823           <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
25824           <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
25825           <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
25826         </ul>
25827       </li> <!-- tag_HAL2 -->
25828       <li id="tag_FULL">FULL - 
25829         Entry is required for full hardware level devices, and optional for other hardware levels
25830     
25831         <ul class="tags_entries">
25832           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
25833         </ul>
25834       </li> <!-- tag_FULL -->
25835       <li id="tag_DEPTH">DEPTH - 
25836         Entry is required for the depth capability.
25837     
25838         <ul class="tags_entries">
25839           <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
25840           <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
25841           <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
25842           <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
25843           <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
25844           <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
25845           <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
25846           <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
25847         </ul>
25848       </li> <!-- tag_DEPTH -->
25849       <li id="tag_REPROC">REPROC - 
25850         Entry is required for the YUV or PRIVATE reprocessing capability.
25851     
25852         <ul class="tags_entries">
25853           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
25854           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
25855           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
25856           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
25857           <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
25858           <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
25859           <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
25860           <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
25861           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
25862           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
25863         </ul>
25864       </li> <!-- tag_REPROC -->
25865       <li id="tag_FUTURE">FUTURE - 
25866         Entry is  under-specified and is not required for now. This is for book-keeping purpose,
25867         do not implement or use it, it may be revised for future.
25868     
25869         <ul class="tags_entries">
25870           <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
25871           <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
25872           <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
25873           <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
25874           <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
25875           <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
25876           <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
25877           <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
25878           <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
25879           <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
25880           <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
25881           <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
25882           <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
25883           <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
25884           <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
25885           <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
25886           <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
25887           <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
25888           <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
25889           <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
25890           <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
25891         </ul>
25892       </li> <!-- tag_FUTURE -->
25893     </ul>
25894   </div>
25895
25896   [ <a href="#">top</a> ]
25897
25898 </body>
25899 </html>