OSDN Git Service

camera: Add OIS data keys
[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.4 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: 17% }
47     .th_description { width: 20% }
48     .th_range { width: 8% }
49     .th_hal_version { width: 5% }
50     td { font-size: 0.9em; }
51
52     /* hide the first thead, we need it there only to enforce column sizes */
53     .thead_dummy { visibility: hidden; }
54
55     /* Entry flair */
56     .entry_name { color: #333333; padding-left:1.0em; font-size:1.1em; font-family: monospace; vertical-align:top; }
57     .entry_name_deprecated { text-decoration:line-through; }
58
59     /* Entry type flair */
60     .entry_type_name { font-size:1.1em; color: #669900; font-weight: bold;}
61     .entry_type_name_enum:after { color: #669900; font-weight: bold; content:" (enum)" }
62     .entry_type_visibility { font-weight: bolder; padding-left:1em}
63     .entry_type_synthetic { font-weight: bolder; color: #996600; }
64     .entry_type_hwlevel { font-weight: bolder; color: #000066; }
65     .entry_type_deprecated { font-weight: bolder; color: #4D4D4D; }
66     .entry_type_enum_name { font-family: monospace; font-weight: bolder; }
67     .entry_type_enum_notes:before { content:" - " }
68     .entry_type_enum_notes>p:first-child { display:inline; }
69     .entry_type_enum_value:before { content:" = " }
70     .entry_type_enum_value { font-family: monospace; }
71     .entry ul { margin: 0 0 0 0; list-style-position: inside; padding-left: 0.5em; }
72     .entry ul li { padding: 0 0 0 0; margin: 0 0 0 0;}
73     .entry_range_deprecated { font-weight: bolder; }
74
75     /* Entry tags flair */
76     .entry_tags ul { list-style-type: none; }
77
78     /* Entry details (full docs) flair */
79     .entry_details_header { font-weight: bold; background-color: #dddddd;
80       text-align: center; font-size: 1.1em; margin-left: 0em; margin-right: 0em; }
81
82     /* Entry spacer flair */
83     .entry_spacer { background-color: transparent; border-style: none; height: 0.5em; }
84
85     /* TODO: generate abbr element for each tag link? */
86     /* TODO for each x.y.z try to link it to the entry */
87
88   </style>
89
90   <style>
91
92     {
93       /* broken...
94          supposedly there is a bug in chrome that it lays out tables before
95          it knows its being printed, so the page-break-* styles are ignored
96          */
97         tr { page-break-after: always; page-break-inside: avoid; }
98     }
99
100   </style>
101 </head>
102
103
104
105 <body>
106   <h1>Android Camera HAL3.2 Properties</h1>
107
108
109   <h2>Table of Contents</h2>
110   <ul class="toc">
111     <li><a href="#tag_index" class="toc_section_header">Tags</a></li>
112     <li>
113       <span class="toc_section_header"><a href="#section_colorCorrection">colorCorrection</a></span>
114       <ul class="toc_section">
115         <li>
116           <span class="toc_kind_header">controls</span>
117           <ul class="toc_section">
118             <li
119             ><a href="#controls_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
120             <li
121             ><a href="#controls_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
122             <li
123             ><a href="#controls_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
124             <li
125             ><a href="#controls_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
126           </ul>
127         </li>
128         <li>
129           <span class="toc_kind_header">dynamic</span>
130           <ul class="toc_section">
131             <li
132             ><a href="#dynamic_android.colorCorrection.mode">android.colorCorrection.mode</a></li>
133             <li
134             ><a href="#dynamic_android.colorCorrection.transform">android.colorCorrection.transform</a></li>
135             <li
136             ><a href="#dynamic_android.colorCorrection.gains">android.colorCorrection.gains</a></li>
137             <li
138             ><a href="#dynamic_android.colorCorrection.aberrationMode">android.colorCorrection.aberrationMode</a></li>
139           </ul>
140         </li>
141         <li>
142           <span class="toc_kind_header">static</span>
143           <ul class="toc_section">
144             <li
145             ><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a></li>
146           </ul>
147         </li>
148       </ul> <!-- toc_section -->
149     </li>
150     <li>
151       <span class="toc_section_header"><a href="#section_control">control</a></span>
152       <ul class="toc_section">
153         <li>
154           <span class="toc_kind_header">controls</span>
155           <ul class="toc_section">
156             <li
157             ><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
158             <li
159             ><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
160             <li
161             ><a href="#controls_android.control.aeLock">android.control.aeLock</a></li>
162             <li
163             ><a href="#controls_android.control.aeMode">android.control.aeMode</a></li>
164             <li
165             ><a href="#controls_android.control.aeRegions">android.control.aeRegions</a></li>
166             <li
167             ><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
168             <li
169             ><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
170             <li
171             ><a href="#controls_android.control.afMode">android.control.afMode</a></li>
172             <li
173             ><a href="#controls_android.control.afRegions">android.control.afRegions</a></li>
174             <li
175             ><a href="#controls_android.control.afTrigger">android.control.afTrigger</a></li>
176             <li
177             ><a href="#controls_android.control.awbLock">android.control.awbLock</a></li>
178             <li
179             ><a href="#controls_android.control.awbMode">android.control.awbMode</a></li>
180             <li
181             ><a href="#controls_android.control.awbRegions">android.control.awbRegions</a></li>
182             <li
183             ><a href="#controls_android.control.captureIntent">android.control.captureIntent</a></li>
184             <li
185             ><a href="#controls_android.control.effectMode">android.control.effectMode</a></li>
186             <li
187             ><a href="#controls_android.control.mode">android.control.mode</a></li>
188             <li
189             ><a href="#controls_android.control.sceneMode">android.control.sceneMode</a></li>
190             <li
191             ><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
192             <li
193             ><a href="#controls_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
194             <li
195             ><a href="#controls_android.control.enableZsl">android.control.enableZsl</a></li>
196           </ul>
197         </li>
198         <li>
199           <span class="toc_kind_header">static</span>
200           <ul class="toc_section">
201             <li
202             ><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a></li>
203             <li
204             ><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a></li>
205             <li
206             ><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a></li>
207             <li
208             ><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a></li>
209             <li
210             ><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a></li>
211             <li
212             ><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a></li>
213             <li
214             ><a href="#static_android.control.availableEffects">android.control.availableEffects</a></li>
215             <li
216             ><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a></li>
217             <li
218             ><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a></li>
219             <li
220             ><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a></li>
221             <li
222             ><a href="#static_android.control.maxRegions">android.control.maxRegions</a></li>
223             <li
224             ><a href="#static_android.control.maxRegionsAe">android.control.maxRegionsAe</a></li>
225             <li
226             ><a href="#static_android.control.maxRegionsAwb">android.control.maxRegionsAwb</a></li>
227             <li
228             ><a href="#static_android.control.maxRegionsAf">android.control.maxRegionsAf</a></li>
229             <li
230             ><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a></li>
231             <li
232             ><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a></li>
233             <li
234             ><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a></li>
235             <li
236             ><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a></li>
237             <li
238             ><a href="#static_android.control.availableModes">android.control.availableModes</a></li>
239             <li
240             ><a href="#static_android.control.postRawSensitivityBoostRange">android.control.postRawSensitivityBoostRange</a></li>
241           </ul>
242         </li>
243         <li>
244           <span class="toc_kind_header">dynamic</span>
245           <ul class="toc_section">
246             <li
247                 class="toc_deprecated"
248             ><a href="#dynamic_android.control.aePrecaptureId">android.control.aePrecaptureId</a></li>
249             <li
250             ><a href="#dynamic_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a></li>
251             <li
252             ><a href="#dynamic_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a></li>
253             <li
254             ><a href="#dynamic_android.control.aeLock">android.control.aeLock</a></li>
255             <li
256             ><a href="#dynamic_android.control.aeMode">android.control.aeMode</a></li>
257             <li
258             ><a href="#dynamic_android.control.aeRegions">android.control.aeRegions</a></li>
259             <li
260             ><a href="#dynamic_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a></li>
261             <li
262             ><a href="#dynamic_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a></li>
263             <li
264             ><a href="#dynamic_android.control.aeState">android.control.aeState</a></li>
265             <li
266             ><a href="#dynamic_android.control.afMode">android.control.afMode</a></li>
267             <li
268             ><a href="#dynamic_android.control.afRegions">android.control.afRegions</a></li>
269             <li
270             ><a href="#dynamic_android.control.afTrigger">android.control.afTrigger</a></li>
271             <li
272             ><a href="#dynamic_android.control.afState">android.control.afState</a></li>
273             <li
274                 class="toc_deprecated"
275             ><a href="#dynamic_android.control.afTriggerId">android.control.afTriggerId</a></li>
276             <li
277             ><a href="#dynamic_android.control.awbLock">android.control.awbLock</a></li>
278             <li
279             ><a href="#dynamic_android.control.awbMode">android.control.awbMode</a></li>
280             <li
281             ><a href="#dynamic_android.control.awbRegions">android.control.awbRegions</a></li>
282             <li
283             ><a href="#dynamic_android.control.captureIntent">android.control.captureIntent</a></li>
284             <li
285             ><a href="#dynamic_android.control.awbState">android.control.awbState</a></li>
286             <li
287             ><a href="#dynamic_android.control.effectMode">android.control.effectMode</a></li>
288             <li
289             ><a href="#dynamic_android.control.mode">android.control.mode</a></li>
290             <li
291             ><a href="#dynamic_android.control.sceneMode">android.control.sceneMode</a></li>
292             <li
293             ><a href="#dynamic_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a></li>
294             <li
295             ><a href="#dynamic_android.control.postRawSensitivityBoost">android.control.postRawSensitivityBoost</a></li>
296             <li
297             ><a href="#dynamic_android.control.enableZsl">android.control.enableZsl</a></li>
298             <li
299             ><a href="#dynamic_android.control.afSceneChange">android.control.afSceneChange</a></li>
300           </ul>
301         </li>
302       </ul> <!-- toc_section -->
303     </li>
304     <li>
305       <span class="toc_section_header"><a href="#section_demosaic">demosaic</a></span>
306       <ul class="toc_section">
307         <li>
308           <span class="toc_kind_header">controls</span>
309           <ul class="toc_section">
310             <li
311             ><a href="#controls_android.demosaic.mode">android.demosaic.mode</a></li>
312           </ul>
313         </li>
314       </ul> <!-- toc_section -->
315     </li>
316     <li>
317       <span class="toc_section_header"><a href="#section_edge">edge</a></span>
318       <ul class="toc_section">
319         <li>
320           <span class="toc_kind_header">controls</span>
321           <ul class="toc_section">
322             <li
323             ><a href="#controls_android.edge.mode">android.edge.mode</a></li>
324             <li
325             ><a href="#controls_android.edge.strength">android.edge.strength</a></li>
326           </ul>
327         </li>
328         <li>
329           <span class="toc_kind_header">static</span>
330           <ul class="toc_section">
331             <li
332             ><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a></li>
333           </ul>
334         </li>
335         <li>
336           <span class="toc_kind_header">dynamic</span>
337           <ul class="toc_section">
338             <li
339             ><a href="#dynamic_android.edge.mode">android.edge.mode</a></li>
340           </ul>
341         </li>
342       </ul> <!-- toc_section -->
343     </li>
344     <li>
345       <span class="toc_section_header"><a href="#section_flash">flash</a></span>
346       <ul class="toc_section">
347         <li>
348           <span class="toc_kind_header">controls</span>
349           <ul class="toc_section">
350             <li
351             ><a href="#controls_android.flash.firingPower">android.flash.firingPower</a></li>
352             <li
353             ><a href="#controls_android.flash.firingTime">android.flash.firingTime</a></li>
354             <li
355             ><a href="#controls_android.flash.mode">android.flash.mode</a></li>
356           </ul>
357         </li>
358         <li>
359           <span class="toc_kind_header">static</span>
360           <ul class="toc_section">
361
362             <li
363             ><a href="#static_android.flash.info.available">android.flash.info.available</a></li>
364             <li
365             ><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a></li>
366
367             <li
368             ><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a></li>
369             <li
370             ><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a></li>
371           </ul>
372         </li>
373         <li>
374           <span class="toc_kind_header">dynamic</span>
375           <ul class="toc_section">
376             <li
377             ><a href="#dynamic_android.flash.firingPower">android.flash.firingPower</a></li>
378             <li
379             ><a href="#dynamic_android.flash.firingTime">android.flash.firingTime</a></li>
380             <li
381             ><a href="#dynamic_android.flash.mode">android.flash.mode</a></li>
382             <li
383             ><a href="#dynamic_android.flash.state">android.flash.state</a></li>
384           </ul>
385         </li>
386       </ul> <!-- toc_section -->
387     </li>
388     <li>
389       <span class="toc_section_header"><a href="#section_hotPixel">hotPixel</a></span>
390       <ul class="toc_section">
391         <li>
392           <span class="toc_kind_header">controls</span>
393           <ul class="toc_section">
394             <li
395             ><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a></li>
396           </ul>
397         </li>
398         <li>
399           <span class="toc_kind_header">static</span>
400           <ul class="toc_section">
401             <li
402             ><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a></li>
403           </ul>
404         </li>
405         <li>
406           <span class="toc_kind_header">dynamic</span>
407           <ul class="toc_section">
408             <li
409             ><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a></li>
410           </ul>
411         </li>
412       </ul> <!-- toc_section -->
413     </li>
414     <li>
415       <span class="toc_section_header"><a href="#section_jpeg">jpeg</a></span>
416       <ul class="toc_section">
417         <li>
418           <span class="toc_kind_header">controls</span>
419           <ul class="toc_section">
420             <li
421             ><a href="#controls_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
422             <li
423             ><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
424             <li
425             ><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
426             <li
427             ><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
428             <li
429             ><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a></li>
430             <li
431             ><a href="#controls_android.jpeg.quality">android.jpeg.quality</a></li>
432             <li
433             ><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
434             <li
435             ><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
436           </ul>
437         </li>
438         <li>
439           <span class="toc_kind_header">static</span>
440           <ul class="toc_section">
441             <li
442             ><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a></li>
443             <li
444             ><a href="#static_android.jpeg.maxSize">android.jpeg.maxSize</a></li>
445           </ul>
446         </li>
447         <li>
448           <span class="toc_kind_header">dynamic</span>
449           <ul class="toc_section">
450             <li
451             ><a href="#dynamic_android.jpeg.gpsLocation">android.jpeg.gpsLocation</a></li>
452             <li
453             ><a href="#dynamic_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a></li>
454             <li
455             ><a href="#dynamic_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a></li>
456             <li
457             ><a href="#dynamic_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a></li>
458             <li
459             ><a href="#dynamic_android.jpeg.orientation">android.jpeg.orientation</a></li>
460             <li
461             ><a href="#dynamic_android.jpeg.quality">android.jpeg.quality</a></li>
462             <li
463             ><a href="#dynamic_android.jpeg.size">android.jpeg.size</a></li>
464             <li
465             ><a href="#dynamic_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a></li>
466             <li
467             ><a href="#dynamic_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a></li>
468           </ul>
469         </li>
470       </ul> <!-- toc_section -->
471     </li>
472     <li>
473       <span class="toc_section_header"><a href="#section_lens">lens</a></span>
474       <ul class="toc_section">
475         <li>
476           <span class="toc_kind_header">controls</span>
477           <ul class="toc_section">
478             <li
479             ><a href="#controls_android.lens.aperture">android.lens.aperture</a></li>
480             <li
481             ><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a></li>
482             <li
483             ><a href="#controls_android.lens.focalLength">android.lens.focalLength</a></li>
484             <li
485             ><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a></li>
486             <li
487             ><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
488           </ul>
489         </li>
490         <li>
491           <span class="toc_kind_header">static</span>
492           <ul class="toc_section">
493
494             <li
495             ><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a></li>
496             <li
497             ><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a></li>
498             <li
499             ><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a></li>
500             <li
501             ><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a></li>
502             <li
503             ><a href="#static_android.lens.info.hyperfocalDistance">android.lens.info.hyperfocalDistance</a></li>
504             <li
505             ><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a></li>
506             <li
507             ><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a></li>
508             <li
509             ><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a></li>
510
511             <li
512             ><a href="#static_android.lens.facing">android.lens.facing</a></li>
513             <li
514             ><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a></li>
515             <li
516             ><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
517             <li
518             ><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
519             <li
520             ><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
521             <li
522             ><a href="#static_android.lens.poseReference">android.lens.poseReference</a></li>
523           </ul>
524         </li>
525         <li>
526           <span class="toc_kind_header">dynamic</span>
527           <ul class="toc_section">
528             <li
529             ><a href="#dynamic_android.lens.aperture">android.lens.aperture</a></li>
530             <li
531             ><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a></li>
532             <li
533             ><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a></li>
534             <li
535             ><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a></li>
536             <li
537             ><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a></li>
538             <li
539             ><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a></li>
540             <li
541             ><a href="#dynamic_android.lens.state">android.lens.state</a></li>
542             <li
543             ><a href="#dynamic_android.lens.poseRotation">android.lens.poseRotation</a></li>
544             <li
545             ><a href="#dynamic_android.lens.poseTranslation">android.lens.poseTranslation</a></li>
546             <li
547             ><a href="#dynamic_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a></li>
548             <li
549             ><a href="#dynamic_android.lens.radialDistortion">android.lens.radialDistortion</a></li>
550           </ul>
551         </li>
552       </ul> <!-- toc_section -->
553     </li>
554     <li>
555       <span class="toc_section_header"><a href="#section_noiseReduction">noiseReduction</a></span>
556       <ul class="toc_section">
557         <li>
558           <span class="toc_kind_header">controls</span>
559           <ul class="toc_section">
560             <li
561             ><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
562             <li
563             ><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a></li>
564           </ul>
565         </li>
566         <li>
567           <span class="toc_kind_header">static</span>
568           <ul class="toc_section">
569             <li
570             ><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a></li>
571           </ul>
572         </li>
573         <li>
574           <span class="toc_kind_header">dynamic</span>
575           <ul class="toc_section">
576             <li
577             ><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a></li>
578           </ul>
579         </li>
580       </ul> <!-- toc_section -->
581     </li>
582     <li>
583       <span class="toc_section_header"><a href="#section_quirks">quirks</a></span>
584       <ul class="toc_section">
585         <li>
586           <span class="toc_kind_header">static</span>
587           <ul class="toc_section">
588             <li
589                 class="toc_deprecated"
590             ><a href="#static_android.quirks.meteringCropRegion">android.quirks.meteringCropRegion</a></li>
591             <li
592                 class="toc_deprecated"
593             ><a href="#static_android.quirks.triggerAfWithAuto">android.quirks.triggerAfWithAuto</a></li>
594             <li
595                 class="toc_deprecated"
596             ><a href="#static_android.quirks.useZslFormat">android.quirks.useZslFormat</a></li>
597             <li
598                 class="toc_deprecated"
599             ><a href="#static_android.quirks.usePartialResult">android.quirks.usePartialResult</a></li>
600           </ul>
601         </li>
602         <li>
603           <span class="toc_kind_header">dynamic</span>
604           <ul class="toc_section">
605             <li
606                 class="toc_deprecated"
607             ><a href="#dynamic_android.quirks.partialResult">android.quirks.partialResult</a></li>
608           </ul>
609         </li>
610       </ul> <!-- toc_section -->
611     </li>
612     <li>
613       <span class="toc_section_header"><a href="#section_request">request</a></span>
614       <ul class="toc_section">
615         <li>
616           <span class="toc_kind_header">controls</span>
617           <ul class="toc_section">
618             <li
619                 class="toc_deprecated"
620             ><a href="#controls_android.request.frameCount">android.request.frameCount</a></li>
621             <li
622             ><a href="#controls_android.request.id">android.request.id</a></li>
623             <li
624                 class="toc_deprecated"
625             ><a href="#controls_android.request.inputStreams">android.request.inputStreams</a></li>
626             <li
627             ><a href="#controls_android.request.metadataMode">android.request.metadataMode</a></li>
628             <li
629                 class="toc_deprecated"
630             ><a href="#controls_android.request.outputStreams">android.request.outputStreams</a></li>
631             <li
632                 class="toc_deprecated"
633             ><a href="#controls_android.request.type">android.request.type</a></li>
634           </ul>
635         </li>
636         <li>
637           <span class="toc_kind_header">static</span>
638           <ul class="toc_section">
639             <li
640             ><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a></li>
641             <li
642             ><a href="#static_android.request.maxNumOutputRaw">android.request.maxNumOutputRaw</a></li>
643             <li
644             ><a href="#static_android.request.maxNumOutputProc">android.request.maxNumOutputProc</a></li>
645             <li
646             ><a href="#static_android.request.maxNumOutputProcStalling">android.request.maxNumOutputProcStalling</a></li>
647             <li
648                 class="toc_deprecated"
649             ><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a></li>
650             <li
651             ><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a></li>
652             <li
653             ><a href="#static_android.request.pipelineMaxDepth">android.request.pipelineMaxDepth</a></li>
654             <li
655             ><a href="#static_android.request.partialResultCount">android.request.partialResultCount</a></li>
656             <li
657             ><a href="#static_android.request.availableCapabilities">android.request.availableCapabilities</a></li>
658             <li
659             ><a href="#static_android.request.availableRequestKeys">android.request.availableRequestKeys</a></li>
660             <li
661             ><a href="#static_android.request.availableResultKeys">android.request.availableResultKeys</a></li>
662             <li
663             ><a href="#static_android.request.availableCharacteristicsKeys">android.request.availableCharacteristicsKeys</a></li>
664             <li
665             ><a href="#static_android.request.availableSessionKeys">android.request.availableSessionKeys</a></li>
666           </ul>
667         </li>
668         <li>
669           <span class="toc_kind_header">dynamic</span>
670           <ul class="toc_section">
671             <li
672                 class="toc_deprecated"
673             ><a href="#dynamic_android.request.frameCount">android.request.frameCount</a></li>
674             <li
675             ><a href="#dynamic_android.request.id">android.request.id</a></li>
676             <li
677             ><a href="#dynamic_android.request.metadataMode">android.request.metadataMode</a></li>
678             <li
679                 class="toc_deprecated"
680             ><a href="#dynamic_android.request.outputStreams">android.request.outputStreams</a></li>
681             <li
682             ><a href="#dynamic_android.request.pipelineDepth">android.request.pipelineDepth</a></li>
683           </ul>
684         </li>
685       </ul> <!-- toc_section -->
686     </li>
687     <li>
688       <span class="toc_section_header"><a href="#section_scaler">scaler</a></span>
689       <ul class="toc_section">
690         <li>
691           <span class="toc_kind_header">controls</span>
692           <ul class="toc_section">
693             <li
694             ><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
695           </ul>
696         </li>
697         <li>
698           <span class="toc_kind_header">static</span>
699           <ul class="toc_section">
700             <li
701                 class="toc_deprecated"
702             ><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a></li>
703             <li
704                 class="toc_deprecated"
705             ><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a></li>
706             <li
707                 class="toc_deprecated"
708             ><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a></li>
709             <li
710             ><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a></li>
711             <li
712                 class="toc_deprecated"
713             ><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a></li>
714             <li
715                 class="toc_deprecated"
716             ><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a></li>
717             <li
718                 class="toc_deprecated"
719             ><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a></li>
720             <li
721                 class="toc_deprecated"
722             ><a href="#static_android.scaler.availableRawSizes">android.scaler.availableRawSizes</a></li>
723             <li
724             ><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a></li>
725             <li
726             ><a href="#static_android.scaler.availableStreamConfigurations">android.scaler.availableStreamConfigurations</a></li>
727             <li
728             ><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a></li>
729             <li
730             ><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a></li>
731             <li
732             ><a href="#static_android.scaler.streamConfigurationMap">android.scaler.streamConfigurationMap</a></li>
733             <li
734             ><a href="#static_android.scaler.croppingType">android.scaler.croppingType</a></li>
735           </ul>
736         </li>
737         <li>
738           <span class="toc_kind_header">dynamic</span>
739           <ul class="toc_section">
740             <li
741             ><a href="#dynamic_android.scaler.cropRegion">android.scaler.cropRegion</a></li>
742           </ul>
743         </li>
744       </ul> <!-- toc_section -->
745     </li>
746     <li>
747       <span class="toc_section_header"><a href="#section_sensor">sensor</a></span>
748       <ul class="toc_section">
749         <li>
750           <span class="toc_kind_header">controls</span>
751           <ul class="toc_section">
752             <li
753             ><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
754             <li
755             ><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
756             <li
757             ><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
758             <li
759             ><a href="#controls_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
760             <li
761             ><a href="#controls_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
762           </ul>
763         </li>
764         <li>
765           <span class="toc_kind_header">static</span>
766           <ul class="toc_section">
767
768             <li
769             ><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a></li>
770             <li
771             ><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a></li>
772             <li
773             ><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a></li>
774             <li
775             ><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a></li>
776             <li
777             ><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a></li>
778             <li
779             ><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a></li>
780             <li
781             ><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a></li>
782             <li
783             ><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a></li>
784             <li
785             ><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a></li>
786             <li
787             ><a href="#static_android.sensor.info.lensShadingApplied">android.sensor.info.lensShadingApplied</a></li>
788             <li
789             ><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a></li>
790
791             <li
792             ><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a></li>
793             <li
794             ><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a></li>
795             <li
796             ><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a></li>
797             <li
798             ><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a></li>
799             <li
800             ><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a></li>
801             <li
802             ><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a></li>
803             <li
804             ><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a></li>
805             <li
806             ><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a></li>
807             <li
808             ><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a></li>
809             <li
810             ><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a></li>
811             <li
812             ><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a></li>
813             <li
814             ><a href="#static_android.sensor.orientation">android.sensor.orientation</a></li>
815             <li
816             ><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a></li>
817             <li
818             ><a href="#static_android.sensor.availableTestPatternModes">android.sensor.availableTestPatternModes</a></li>
819             <li
820             ><a href="#static_android.sensor.opticalBlackRegions">android.sensor.opticalBlackRegions</a></li>
821             <li
822             ><a href="#static_android.sensor.opaqueRawSize">android.sensor.opaqueRawSize</a></li>
823           </ul>
824         </li>
825         <li>
826           <span class="toc_kind_header">dynamic</span>
827           <ul class="toc_section">
828             <li
829             ><a href="#dynamic_android.sensor.exposureTime">android.sensor.exposureTime</a></li>
830             <li
831             ><a href="#dynamic_android.sensor.frameDuration">android.sensor.frameDuration</a></li>
832             <li
833             ><a href="#dynamic_android.sensor.sensitivity">android.sensor.sensitivity</a></li>
834             <li
835             ><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a></li>
836             <li
837             ><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a></li>
838             <li
839             ><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a></li>
840             <li
841             ><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a></li>
842             <li
843             ><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a></li>
844             <li
845             ><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a></li>
846             <li
847             ><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a></li>
848             <li
849             ><a href="#dynamic_android.sensor.testPatternData">android.sensor.testPatternData</a></li>
850             <li
851             ><a href="#dynamic_android.sensor.testPatternMode">android.sensor.testPatternMode</a></li>
852             <li
853             ><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a></li>
854             <li
855             ><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a></li>
856             <li
857             ><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a></li>
858           </ul>
859         </li>
860       </ul> <!-- toc_section -->
861     </li>
862     <li>
863       <span class="toc_section_header"><a href="#section_shading">shading</a></span>
864       <ul class="toc_section">
865         <li>
866           <span class="toc_kind_header">controls</span>
867           <ul class="toc_section">
868             <li
869             ><a href="#controls_android.shading.mode">android.shading.mode</a></li>
870             <li
871             ><a href="#controls_android.shading.strength">android.shading.strength</a></li>
872           </ul>
873         </li>
874         <li>
875           <span class="toc_kind_header">dynamic</span>
876           <ul class="toc_section">
877             <li
878             ><a href="#dynamic_android.shading.mode">android.shading.mode</a></li>
879           </ul>
880         </li>
881         <li>
882           <span class="toc_kind_header">static</span>
883           <ul class="toc_section">
884             <li
885             ><a href="#static_android.shading.availableModes">android.shading.availableModes</a></li>
886           </ul>
887         </li>
888       </ul> <!-- toc_section -->
889     </li>
890     <li>
891       <span class="toc_section_header"><a href="#section_statistics">statistics</a></span>
892       <ul class="toc_section">
893         <li>
894           <span class="toc_kind_header">controls</span>
895           <ul class="toc_section">
896             <li
897             ><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
898             <li
899             ><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
900             <li
901             ><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
902             <li
903             ><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
904             <li
905             ><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
906             <li
907             ><a href="#controls_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
908           </ul>
909         </li>
910         <li>
911           <span class="toc_kind_header">static</span>
912           <ul class="toc_section">
913
914             <li
915             ><a href="#static_android.statistics.info.availableFaceDetectModes">android.statistics.info.availableFaceDetectModes</a></li>
916             <li
917             ><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a></li>
918             <li
919             ><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a></li>
920             <li
921             ><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a></li>
922             <li
923             ><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a></li>
924             <li
925             ><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a></li>
926             <li
927             ><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a></li>
928             <li
929             ><a href="#static_android.statistics.info.availableLensShadingMapModes">android.statistics.info.availableLensShadingMapModes</a></li>
930             <li
931             ><a href="#static_android.statistics.info.availableOisDataModes">android.statistics.info.availableOisDataModes</a></li>
932
933           </ul>
934         </li>
935         <li>
936           <span class="toc_kind_header">dynamic</span>
937           <ul class="toc_section">
938             <li
939             ><a href="#dynamic_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a></li>
940             <li
941             ><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a></li>
942             <li
943             ><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a></li>
944             <li
945             ><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a></li>
946             <li
947             ><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a></li>
948             <li
949             ><a href="#dynamic_android.statistics.faces">android.statistics.faces</a></li>
950             <li
951             ><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a></li>
952             <li
953             ><a href="#dynamic_android.statistics.histogramMode">android.statistics.histogramMode</a></li>
954             <li
955             ><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a></li>
956             <li
957             ><a href="#dynamic_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a></li>
958             <li
959             ><a href="#dynamic_android.statistics.lensShadingCorrectionMap">android.statistics.lensShadingCorrectionMap</a></li>
960             <li
961             ><a href="#dynamic_android.statistics.lensShadingMap">android.statistics.lensShadingMap</a></li>
962             <li
963                 class="toc_deprecated"
964             ><a href="#dynamic_android.statistics.predictedColorGains">android.statistics.predictedColorGains</a></li>
965             <li
966                 class="toc_deprecated"
967             ><a href="#dynamic_android.statistics.predictedColorTransform">android.statistics.predictedColorTransform</a></li>
968             <li
969             ><a href="#dynamic_android.statistics.sceneFlicker">android.statistics.sceneFlicker</a></li>
970             <li
971             ><a href="#dynamic_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a></li>
972             <li
973             ><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a></li>
974             <li
975             ><a href="#dynamic_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a></li>
976             <li
977             ><a href="#dynamic_android.statistics.oisDataMode">android.statistics.oisDataMode</a></li>
978             <li
979             ><a href="#dynamic_android.statistics.oisTimestamps">android.statistics.oisTimestamps</a></li>
980             <li
981             ><a href="#dynamic_android.statistics.oisXShifts">android.statistics.oisXShifts</a></li>
982             <li
983             ><a href="#dynamic_android.statistics.oisYShifts">android.statistics.oisYShifts</a></li>
984           </ul>
985         </li>
986       </ul> <!-- toc_section -->
987     </li>
988     <li>
989       <span class="toc_section_header"><a href="#section_tonemap">tonemap</a></span>
990       <ul class="toc_section">
991         <li>
992           <span class="toc_kind_header">controls</span>
993           <ul class="toc_section">
994             <li
995             ><a href="#controls_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
996             <li
997             ><a href="#controls_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
998             <li
999             ><a href="#controls_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1000             <li
1001             ><a href="#controls_android.tonemap.curve">android.tonemap.curve</a></li>
1002             <li
1003             ><a href="#controls_android.tonemap.mode">android.tonemap.mode</a></li>
1004             <li
1005             ><a href="#controls_android.tonemap.gamma">android.tonemap.gamma</a></li>
1006             <li
1007             ><a href="#controls_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1008           </ul>
1009         </li>
1010         <li>
1011           <span class="toc_kind_header">static</span>
1012           <ul class="toc_section">
1013             <li
1014             ><a href="#static_android.tonemap.maxCurvePoints">android.tonemap.maxCurvePoints</a></li>
1015             <li
1016             ><a href="#static_android.tonemap.availableToneMapModes">android.tonemap.availableToneMapModes</a></li>
1017           </ul>
1018         </li>
1019         <li>
1020           <span class="toc_kind_header">dynamic</span>
1021           <ul class="toc_section">
1022             <li
1023             ><a href="#dynamic_android.tonemap.curveBlue">android.tonemap.curveBlue</a></li>
1024             <li
1025             ><a href="#dynamic_android.tonemap.curveGreen">android.tonemap.curveGreen</a></li>
1026             <li
1027             ><a href="#dynamic_android.tonemap.curveRed">android.tonemap.curveRed</a></li>
1028             <li
1029             ><a href="#dynamic_android.tonemap.curve">android.tonemap.curve</a></li>
1030             <li
1031             ><a href="#dynamic_android.tonemap.mode">android.tonemap.mode</a></li>
1032             <li
1033             ><a href="#dynamic_android.tonemap.gamma">android.tonemap.gamma</a></li>
1034             <li
1035             ><a href="#dynamic_android.tonemap.presetCurve">android.tonemap.presetCurve</a></li>
1036           </ul>
1037         </li>
1038       </ul> <!-- toc_section -->
1039     </li>
1040     <li>
1041       <span class="toc_section_header"><a href="#section_led">led</a></span>
1042       <ul class="toc_section">
1043         <li>
1044           <span class="toc_kind_header">controls</span>
1045           <ul class="toc_section">
1046             <li
1047             ><a href="#controls_android.led.transmit">android.led.transmit</a></li>
1048           </ul>
1049         </li>
1050         <li>
1051           <span class="toc_kind_header">dynamic</span>
1052           <ul class="toc_section">
1053             <li
1054             ><a href="#dynamic_android.led.transmit">android.led.transmit</a></li>
1055           </ul>
1056         </li>
1057         <li>
1058           <span class="toc_kind_header">static</span>
1059           <ul class="toc_section">
1060             <li
1061             ><a href="#static_android.led.availableLeds">android.led.availableLeds</a></li>
1062           </ul>
1063         </li>
1064       </ul> <!-- toc_section -->
1065     </li>
1066     <li>
1067       <span class="toc_section_header"><a href="#section_info">info</a></span>
1068       <ul class="toc_section">
1069         <li>
1070           <span class="toc_kind_header">static</span>
1071           <ul class="toc_section">
1072             <li
1073             ><a href="#static_android.info.supportedHardwareLevel">android.info.supportedHardwareLevel</a></li>
1074             <li
1075             ><a href="#static_android.info.version">android.info.version</a></li>
1076           </ul>
1077         </li>
1078       </ul> <!-- toc_section -->
1079     </li>
1080     <li>
1081       <span class="toc_section_header"><a href="#section_blackLevel">blackLevel</a></span>
1082       <ul class="toc_section">
1083         <li>
1084           <span class="toc_kind_header">controls</span>
1085           <ul class="toc_section">
1086             <li
1087             ><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a></li>
1088           </ul>
1089         </li>
1090         <li>
1091           <span class="toc_kind_header">dynamic</span>
1092           <ul class="toc_section">
1093             <li
1094             ><a href="#dynamic_android.blackLevel.lock">android.blackLevel.lock</a></li>
1095           </ul>
1096         </li>
1097       </ul> <!-- toc_section -->
1098     </li>
1099     <li>
1100       <span class="toc_section_header"><a href="#section_sync">sync</a></span>
1101       <ul class="toc_section">
1102         <li>
1103           <span class="toc_kind_header">dynamic</span>
1104           <ul class="toc_section">
1105             <li
1106             ><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a></li>
1107           </ul>
1108         </li>
1109         <li>
1110           <span class="toc_kind_header">static</span>
1111           <ul class="toc_section">
1112             <li
1113             ><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a></li>
1114           </ul>
1115         </li>
1116       </ul> <!-- toc_section -->
1117     </li>
1118     <li>
1119       <span class="toc_section_header"><a href="#section_reprocess">reprocess</a></span>
1120       <ul class="toc_section">
1121         <li>
1122           <span class="toc_kind_header">controls</span>
1123           <ul class="toc_section">
1124             <li
1125             ><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1126           </ul>
1127         </li>
1128         <li>
1129           <span class="toc_kind_header">dynamic</span>
1130           <ul class="toc_section">
1131             <li
1132             ><a href="#dynamic_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a></li>
1133           </ul>
1134         </li>
1135         <li>
1136           <span class="toc_kind_header">static</span>
1137           <ul class="toc_section">
1138             <li
1139             ><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a></li>
1140           </ul>
1141         </li>
1142       </ul> <!-- toc_section -->
1143     </li>
1144     <li>
1145       <span class="toc_section_header"><a href="#section_depth">depth</a></span>
1146       <ul class="toc_section">
1147         <li>
1148           <span class="toc_kind_header">static</span>
1149           <ul class="toc_section">
1150             <li
1151             ><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a></li>
1152             <li
1153             ><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a></li>
1154             <li
1155             ><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a></li>
1156             <li
1157             ><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a></li>
1158             <li
1159             ><a href="#static_android.depth.depthIsExclusive">android.depth.depthIsExclusive</a></li>
1160           </ul>
1161         </li>
1162       </ul> <!-- toc_section -->
1163     </li>
1164   </ul>
1165
1166
1167   <h1>Properties</h1>
1168   <table class="properties">
1169
1170     <thead class="thead_dummy">
1171       <tr>
1172         <th class="th_name">Property Name</th>
1173         <th class="th_type">Type</th>
1174         <th class="th_description">Description</th>
1175         <th class="th_units">Units</th>
1176         <th class="th_range">Range</th>
1177         <th class="th_hal_version">HIDL HAL version</th>
1178         <th class="th_tags">Tags</th>
1179       </tr>
1180     </thead> <!-- so that the first occurrence of thead is not
1181                          above the first occurrence of tr -->
1182 <!-- <namespace name="android"> -->
1183   <tr><td colspan="7" id="section_colorCorrection" class="section">colorCorrection</td></tr>
1184
1185
1186       <tr><td colspan="7" class="kind">controls</td></tr>
1187
1188       <thead class="entries_header">
1189         <tr>
1190           <th class="th_name">Property Name</th>
1191           <th class="th_type">Type</th>
1192           <th class="th_description">Description</th>
1193           <th class="th_units">Units</th>
1194           <th class="th_range">Range</th>
1195           <th class="th_hal_version">Initial HIDL HAL version</th>
1196           <th class="th_tags">Tags</th>
1197         </tr>
1198       </thead>
1199
1200       <tbody>
1201
1202         
1203
1204         
1205
1206         
1207
1208         
1209
1210                 
1211           <tr class="entry" id="controls_android.colorCorrection.mode">
1212             <td class="entry_name
1213              " rowspan="5">
1214               android.<wbr/>color<wbr/>Correction.<wbr/>mode
1215             </td>
1216             <td class="entry_type">
1217                 <span class="entry_type_name entry_type_name_enum">byte</span>
1218
1219               <span class="entry_type_visibility"> [public]</span>
1220
1221
1222               <span class="entry_type_hwlevel">[full] </span>
1223
1224
1225
1226                 <ul class="entry_type_enum">
1227                   <li>
1228                     <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1229                     <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1230 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1231 <p>All advanced white balance adjustments (not specified
1232 by our white balance pipeline) must be disabled.<wbr/></p>
1233 <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
1234 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1235 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1236                   </li>
1237                   <li>
1238                     <span class="entry_type_enum_name">FAST (v3.2)</span>
1239                     <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1240 capture rate relative to sensor raw output.<wbr/></p>
1241 <p>Advanced white balance adjustments above and beyond
1242 the specified white balance pipeline may be applied.<wbr/></p>
1243 <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
1244 the camera device uses the last frame's AWB values
1245 (or defaults if AWB has never been run).<wbr/></p></span>
1246                   </li>
1247                   <li>
1248                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1249                     <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1250 quality but the capture rate might be reduced (relative to sensor
1251 raw output rate)</p>
1252 <p>Advanced white balance adjustments above and beyond
1253 the specified white balance pipeline may be applied.<wbr/></p>
1254 <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
1255 the camera device uses the last frame's AWB values
1256 (or defaults if AWB has never been run).<wbr/></p></span>
1257                   </li>
1258                 </ul>
1259
1260             </td> <!-- entry_type -->
1261
1262             <td class="entry_description">
1263               <p>The mode control selects how the image data is converted from the
1264 sensor's native color into linear sRGB color.<wbr/></p>
1265             </td>
1266
1267             <td class="entry_units">
1268             </td>
1269
1270             <td class="entry_range">
1271             </td>
1272
1273             <td class="entry_hal_version">
1274               <p>3.<wbr/>2</p>
1275             </td>
1276
1277             <td class="entry_tags">
1278             </td>
1279
1280           </tr>
1281           <tr class="entries_header">
1282             <th class="th_details" colspan="6">Details</th>
1283           </tr>
1284           <tr class="entry_cont">
1285             <td class="entry_details" colspan="6">
1286               <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
1287 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1288 application controls how the color mapping is performed.<wbr/></p>
1289 <p>We define the expected processing pipeline below.<wbr/> For consistency
1290 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1291 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1292 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1293 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1294 camera device (in the results) and be roughly correct.<wbr/></p>
1295 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1296 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1297 as what was produced by the camera device in the earlier frame.<wbr/></p>
1298 <p>The expected processing pipeline is as follows:</p>
1299 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1300 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1301 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1302 matrix (applied after demosaic).<wbr/></p>
1303 <p>The 4-channel white-balance gains are defined as:</p>
1304 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1305 </code></pre>
1306 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1307 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1308 These may be identical for a given camera device implementation; if
1309 the camera device does not support a separate gain for even/<wbr/>odd green
1310 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1311 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1312 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1313 <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 ]
1314 </code></pre>
1315 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1316 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1317 <p>with colors as follows:</p>
1318 <pre><code>r' = I0r + I1g + I2b
1319 g' = I3r + I4g + I5b
1320 b' = I6r + I7g + I8b
1321 </code></pre>
1322 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1323 values are clipped to fit within the range.<wbr/></p>
1324             </td>
1325           </tr>
1326
1327           <tr class="entries_header">
1328             <th class="th_details" colspan="6">HAL Implementation Details</th>
1329           </tr>
1330           <tr class="entry_cont">
1331             <td class="entry_details" colspan="6">
1332               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1333 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1334 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1335 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1336             </td>
1337           </tr>
1338
1339           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1340            <!-- end of entry -->
1341         
1342                 
1343           <tr class="entry" id="controls_android.colorCorrection.transform">
1344             <td class="entry_name
1345              " rowspan="3">
1346               android.<wbr/>color<wbr/>Correction.<wbr/>transform
1347             </td>
1348             <td class="entry_type">
1349                 <span class="entry_type_name">rational</span>
1350                 <span class="entry_type_container">x</span>
1351
1352                 <span class="entry_type_array">
1353                   3 x 3
1354                 </span>
1355               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1356
1357
1358               <span class="entry_type_hwlevel">[full] </span>
1359
1360
1361                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1362
1363
1364             </td> <!-- entry_type -->
1365
1366             <td class="entry_description">
1367               <p>A color transform matrix to use to transform
1368 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1369             </td>
1370
1371             <td class="entry_units">
1372               Unitless scale factors
1373             </td>
1374
1375             <td class="entry_range">
1376             </td>
1377
1378             <td class="entry_hal_version">
1379               <p>3.<wbr/>2</p>
1380             </td>
1381
1382             <td class="entry_tags">
1383             </td>
1384
1385           </tr>
1386           <tr class="entries_header">
1387             <th class="th_details" colspan="6">Details</th>
1388           </tr>
1389           <tr class="entry_cont">
1390             <td class="entry_details" colspan="6">
1391               <p>This matrix is either set by the camera device when the request
1392 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1393 directly by the application in the request when the
1394 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1395 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1396 for precision issues; the final rounded matrix should be reported back
1397 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1398 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1399 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1400 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1401 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1402             </td>
1403           </tr>
1404
1405
1406           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1407            <!-- end of entry -->
1408         
1409                 
1410           <tr class="entry" id="controls_android.colorCorrection.gains">
1411             <td class="entry_name
1412              " rowspan="5">
1413               android.<wbr/>color<wbr/>Correction.<wbr/>gains
1414             </td>
1415             <td class="entry_type">
1416                 <span class="entry_type_name">float</span>
1417                 <span class="entry_type_container">x</span>
1418
1419                 <span class="entry_type_array">
1420                   4
1421                 </span>
1422               <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1423
1424
1425               <span class="entry_type_hwlevel">[full] </span>
1426
1427
1428                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1429
1430
1431             </td> <!-- entry_type -->
1432
1433             <td class="entry_description">
1434               <p>Gains applying to Bayer raw color channels for
1435 white-balance.<wbr/></p>
1436             </td>
1437
1438             <td class="entry_units">
1439               Unitless gain factors
1440             </td>
1441
1442             <td class="entry_range">
1443             </td>
1444
1445             <td class="entry_hal_version">
1446               <p>3.<wbr/>2</p>
1447             </td>
1448
1449             <td class="entry_tags">
1450             </td>
1451
1452           </tr>
1453           <tr class="entries_header">
1454             <th class="th_details" colspan="6">Details</th>
1455           </tr>
1456           <tr class="entry_cont">
1457             <td class="entry_details" colspan="6">
1458               <p>These per-channel gains are either set by the camera device
1459 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1460 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1461 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1462 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1463 <p>The gains in the result metadata are the gains actually
1464 applied by the camera device to the current frame.<wbr/></p>
1465 <p>The valid range of gains varies on different devices,<wbr/> but gains
1466 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1467 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1468 this can create color artifacts.<wbr/></p>
1469             </td>
1470           </tr>
1471
1472           <tr class="entries_header">
1473             <th class="th_details" colspan="6">HAL Implementation Details</th>
1474           </tr>
1475           <tr class="entry_cont">
1476             <td class="entry_details" colspan="6">
1477               <p>The 4-channel white-balance gains are defined in
1478 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1479 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1480 is the gain for green pixels on the odd rows.<wbr/></p>
1481 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1482 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1483 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1484             </td>
1485           </tr>
1486
1487           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1488            <!-- end of entry -->
1489         
1490                 
1491           <tr class="entry" id="controls_android.colorCorrection.aberrationMode">
1492             <td class="entry_name
1493              " rowspan="3">
1494               android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1495             </td>
1496             <td class="entry_type">
1497                 <span class="entry_type_name entry_type_name_enum">byte</span>
1498
1499               <span class="entry_type_visibility"> [public]</span>
1500
1501
1502               <span class="entry_type_hwlevel">[legacy] </span>
1503
1504
1505
1506                 <ul class="entry_type_enum">
1507                   <li>
1508                     <span class="entry_type_enum_name">OFF (v3.2)</span>
1509                     <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1510                   </li>
1511                   <li>
1512                     <span class="entry_type_enum_name">FAST (v3.2)</span>
1513                     <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1514 relative to sensor raw output.<wbr/></p></span>
1515                   </li>
1516                   <li>
1517                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1518                     <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1519 reduced (relative to sensor raw output rate)</p></span>
1520                   </li>
1521                 </ul>
1522
1523             </td> <!-- entry_type -->
1524
1525             <td class="entry_description">
1526               <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1527             </td>
1528
1529             <td class="entry_units">
1530             </td>
1531
1532             <td class="entry_range">
1533               <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1534             </td>
1535
1536             <td class="entry_hal_version">
1537               <p>3.<wbr/>2</p>
1538             </td>
1539
1540             <td class="entry_tags">
1541             </td>
1542
1543           </tr>
1544           <tr class="entries_header">
1545             <th class="th_details" colspan="6">Details</th>
1546           </tr>
1547           <tr class="entry_cont">
1548             <td class="entry_details" colspan="6">
1549               <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1550 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1551 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1552 minimize the chromatic artifacts that may occur along the object boundaries in an
1553 image.<wbr/></p>
1554 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1555 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1556 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1557 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1558 applying aberration correction.<wbr/></p>
1559 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1560             </td>
1561           </tr>
1562
1563
1564           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1565            <!-- end of entry -->
1566         
1567         
1568
1569       <!-- end of kind -->
1570       </tbody>
1571       <tr><td colspan="7" class="kind">dynamic</td></tr>
1572
1573       <thead class="entries_header">
1574         <tr>
1575           <th class="th_name">Property Name</th>
1576           <th class="th_type">Type</th>
1577           <th class="th_description">Description</th>
1578           <th class="th_units">Units</th>
1579           <th class="th_range">Range</th>
1580           <th class="th_hal_version">Initial HIDL HAL version</th>
1581           <th class="th_tags">Tags</th>
1582         </tr>
1583       </thead>
1584
1585       <tbody>
1586
1587         
1588
1589         
1590
1591         
1592
1593         
1594
1595                 
1596           <tr class="entry" id="dynamic_android.colorCorrection.mode">
1597             <td class="entry_name
1598              " rowspan="5">
1599               android.<wbr/>color<wbr/>Correction.<wbr/>mode
1600             </td>
1601             <td class="entry_type">
1602                 <span class="entry_type_name entry_type_name_enum">byte</span>
1603
1604               <span class="entry_type_visibility"> [public]</span>
1605
1606
1607               <span class="entry_type_hwlevel">[full] </span>
1608
1609
1610
1611                 <ul class="entry_type_enum">
1612                   <li>
1613                     <span class="entry_type_enum_name">TRANSFORM_MATRIX (v3.2)</span>
1614                     <span class="entry_type_enum_notes"><p>Use the <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> matrix
1615 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> to do color conversion.<wbr/></p>
1616 <p>All advanced white balance adjustments (not specified
1617 by our white balance pipeline) must be disabled.<wbr/></p>
1618 <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
1619 TRANSFORM_<wbr/>MATRIX is ignored.<wbr/> The camera device will override
1620 this value to either FAST or HIGH_<wbr/>QUALITY.<wbr/></p></span>
1621                   </li>
1622                   <li>
1623                     <span class="entry_type_enum_name">FAST (v3.2)</span>
1624                     <span class="entry_type_enum_notes"><p>Color correction processing must not slow down
1625 capture rate relative to sensor raw output.<wbr/></p>
1626 <p>Advanced white balance adjustments above and beyond
1627 the specified white balance pipeline may be applied.<wbr/></p>
1628 <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
1629 the camera device uses the last frame's AWB values
1630 (or defaults if AWB has never been run).<wbr/></p></span>
1631                   </li>
1632                   <li>
1633                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1634                     <span class="entry_type_enum_notes"><p>Color correction processing operates at improved
1635 quality but the capture rate might be reduced (relative to sensor
1636 raw output rate)</p>
1637 <p>Advanced white balance adjustments above and beyond
1638 the specified white balance pipeline may be applied.<wbr/></p>
1639 <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
1640 the camera device uses the last frame's AWB values
1641 (or defaults if AWB has never been run).<wbr/></p></span>
1642                   </li>
1643                 </ul>
1644
1645             </td> <!-- entry_type -->
1646
1647             <td class="entry_description">
1648               <p>The mode control selects how the image data is converted from the
1649 sensor's native color into linear sRGB color.<wbr/></p>
1650             </td>
1651
1652             <td class="entry_units">
1653             </td>
1654
1655             <td class="entry_range">
1656             </td>
1657
1658             <td class="entry_hal_version">
1659               <p>3.<wbr/>2</p>
1660             </td>
1661
1662             <td class="entry_tags">
1663             </td>
1664
1665           </tr>
1666           <tr class="entries_header">
1667             <th class="th_details" colspan="6">Details</th>
1668           </tr>
1669           <tr class="entry_cont">
1670             <td class="entry_details" colspan="6">
1671               <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
1672 control is overridden by the AWB routine.<wbr/> When AWB is disabled,<wbr/> the
1673 application controls how the color mapping is performed.<wbr/></p>
1674 <p>We define the expected processing pipeline below.<wbr/> For consistency
1675 across devices,<wbr/> this is always the case with TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1676 <p>When either FULL or HIGH_<wbr/>QUALITY is used,<wbr/> the camera device may
1677 do additional processing but <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
1678 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a> will still be provided by the
1679 camera device (in the results) and be roughly correct.<wbr/></p>
1680 <p>Switching to TRANSFORM_<wbr/>MATRIX and using the data provided from
1681 FAST or HIGH_<wbr/>QUALITY will yield a picture with the same white point
1682 as what was produced by the camera device in the earlier frame.<wbr/></p>
1683 <p>The expected processing pipeline is as follows:</p>
1684 <p><img alt="White balance processing pipeline" src="images/camera2/metadata/android.colorCorrection.mode/processing_pipeline.png"/></p>
1685 <p>The white balance is encoded by two values,<wbr/> a 4-channel white-balance
1686 gain vector (applied in the Bayer domain),<wbr/> and a 3x3 color transform
1687 matrix (applied after demosaic).<wbr/></p>
1688 <p>The 4-channel white-balance gains are defined as:</p>
1689 <pre><code><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> = [ R G_<wbr/>even G_<wbr/>odd B ]
1690 </code></pre>
1691 <p>where <code>G_<wbr/>even</code> is the gain for green pixels on even rows of the
1692 output,<wbr/> and <code>G_<wbr/>odd</code> is the gain for green pixels on the odd rows.<wbr/>
1693 These may be identical for a given camera device implementation; if
1694 the camera device does not support a separate gain for even/<wbr/>odd green
1695 channels,<wbr/> it will use the <code>G_<wbr/>even</code> value,<wbr/> and write <code>G_<wbr/>odd</code> equal to
1696 <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1697 <p>The matrices for color transforms are defined as a 9-entry vector:</p>
1698 <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 ]
1699 </code></pre>
1700 <p>which define a transform from input sensor colors,<wbr/> <code>P_<wbr/>in = [ r g b ]</code>,<wbr/>
1701 to output linear sRGB,<wbr/> <code>P_<wbr/>out = [ r' g' b' ]</code>,<wbr/></p>
1702 <p>with colors as follows:</p>
1703 <pre><code>r' = I0r + I1g + I2b
1704 g' = I3r + I4g + I5b
1705 b' = I6r + I7g + I8b
1706 </code></pre>
1707 <p>Both the input and output value ranges must match.<wbr/> Overflow/<wbr/>underflow
1708 values are clipped to fit within the range.<wbr/></p>
1709             </td>
1710           </tr>
1711
1712           <tr class="entries_header">
1713             <th class="th_details" colspan="6">HAL Implementation Details</th>
1714           </tr>
1715           <tr class="entry_cont">
1716             <td class="entry_details" colspan="6">
1717               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if color correction control is available
1718 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
1719 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
1720 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY should generate the same output.<wbr/></p>
1721             </td>
1722           </tr>
1723
1724           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1725            <!-- end of entry -->
1726         
1727                 
1728           <tr class="entry" id="dynamic_android.colorCorrection.transform">
1729             <td class="entry_name
1730              " rowspan="3">
1731               android.<wbr/>color<wbr/>Correction.<wbr/>transform
1732             </td>
1733             <td class="entry_type">
1734                 <span class="entry_type_name">rational</span>
1735                 <span class="entry_type_container">x</span>
1736
1737                 <span class="entry_type_array">
1738                   3 x 3
1739                 </span>
1740               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
1741
1742
1743               <span class="entry_type_hwlevel">[full] </span>
1744
1745
1746                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
1747
1748
1749             </td> <!-- entry_type -->
1750
1751             <td class="entry_description">
1752               <p>A color transform matrix to use to transform
1753 from sensor RGB color space to output linear sRGB color space.<wbr/></p>
1754             </td>
1755
1756             <td class="entry_units">
1757               Unitless scale factors
1758             </td>
1759
1760             <td class="entry_range">
1761             </td>
1762
1763             <td class="entry_hal_version">
1764               <p>3.<wbr/>2</p>
1765             </td>
1766
1767             <td class="entry_tags">
1768             </td>
1769
1770           </tr>
1771           <tr class="entries_header">
1772             <th class="th_details" colspan="6">Details</th>
1773           </tr>
1774           <tr class="entry_cont">
1775             <td class="entry_details" colspan="6">
1776               <p>This matrix is either set by the camera device when the request
1777 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not TRANSFORM_<wbr/>MATRIX,<wbr/> or
1778 directly by the application in the request when the
1779 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1780 <p>In the latter case,<wbr/> the camera device may round the matrix to account
1781 for precision issues; the final rounded matrix should be reported back
1782 in this matrix result metadata.<wbr/> The transform should keep the magnitude
1783 of the output color values within <code>[0,<wbr/> 1.<wbr/>0]</code> (assuming input color
1784 values is within the normalized range <code>[0,<wbr/> 1.<wbr/>0]</code>),<wbr/> or clipping may occur.<wbr/></p>
1785 <p>The valid range of each matrix element varies on different devices,<wbr/> but
1786 values within [-1.<wbr/>5,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
1787             </td>
1788           </tr>
1789
1790
1791           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1792            <!-- end of entry -->
1793         
1794                 
1795           <tr class="entry" id="dynamic_android.colorCorrection.gains">
1796             <td class="entry_name
1797              " rowspan="5">
1798               android.<wbr/>color<wbr/>Correction.<wbr/>gains
1799             </td>
1800             <td class="entry_type">
1801                 <span class="entry_type_name">float</span>
1802                 <span class="entry_type_container">x</span>
1803
1804                 <span class="entry_type_array">
1805                   4
1806                 </span>
1807               <span class="entry_type_visibility"> [public as rggbChannelVector]</span>
1808
1809
1810               <span class="entry_type_hwlevel">[full] </span>
1811
1812
1813                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
1814
1815
1816             </td> <!-- entry_type -->
1817
1818             <td class="entry_description">
1819               <p>Gains applying to Bayer raw color channels for
1820 white-balance.<wbr/></p>
1821             </td>
1822
1823             <td class="entry_units">
1824               Unitless gain factors
1825             </td>
1826
1827             <td class="entry_range">
1828             </td>
1829
1830             <td class="entry_hal_version">
1831               <p>3.<wbr/>2</p>
1832             </td>
1833
1834             <td class="entry_tags">
1835             </td>
1836
1837           </tr>
1838           <tr class="entries_header">
1839             <th class="th_details" colspan="6">Details</th>
1840           </tr>
1841           <tr class="entry_cont">
1842             <td class="entry_details" colspan="6">
1843               <p>These per-channel gains are either set by the camera device
1844 when the request <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is not
1845 TRANSFORM_<wbr/>MATRIX,<wbr/> or directly by the application in the
1846 request when the <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> is
1847 TRANSFORM_<wbr/>MATRIX.<wbr/></p>
1848 <p>The gains in the result metadata are the gains actually
1849 applied by the camera device to the current frame.<wbr/></p>
1850 <p>The valid range of gains varies on different devices,<wbr/> but gains
1851 between [1.<wbr/>0,<wbr/> 3.<wbr/>0] are guaranteed not to be clipped.<wbr/> Even if a given
1852 device allows gains below 1.<wbr/>0,<wbr/> this is usually not recommended because
1853 this can create color artifacts.<wbr/></p>
1854             </td>
1855           </tr>
1856
1857           <tr class="entries_header">
1858             <th class="th_details" colspan="6">HAL Implementation Details</th>
1859           </tr>
1860           <tr class="entry_cont">
1861             <td class="entry_details" colspan="6">
1862               <p>The 4-channel white-balance gains are defined in
1863 the order of <code>[R G_<wbr/>even G_<wbr/>odd B]</code>,<wbr/> where <code>G_<wbr/>even</code> is the gain
1864 for green pixels on even rows of the output,<wbr/> and <code>G_<wbr/>odd</code>
1865 is the gain for green pixels on the odd rows.<wbr/></p>
1866 <p>If a HAL does not support a separate gain for even/<wbr/>odd green
1867 channels,<wbr/> it must use the <code>G_<wbr/>even</code> value,<wbr/> and write
1868 <code>G_<wbr/>odd</code> equal to <code>G_<wbr/>even</code> in the output result metadata.<wbr/></p>
1869             </td>
1870           </tr>
1871
1872           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1873            <!-- end of entry -->
1874         
1875                 
1876           <tr class="entry" id="dynamic_android.colorCorrection.aberrationMode">
1877             <td class="entry_name
1878              " rowspan="3">
1879               android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode
1880             </td>
1881             <td class="entry_type">
1882                 <span class="entry_type_name entry_type_name_enum">byte</span>
1883
1884               <span class="entry_type_visibility"> [public]</span>
1885
1886
1887               <span class="entry_type_hwlevel">[legacy] </span>
1888
1889
1890
1891                 <ul class="entry_type_enum">
1892                   <li>
1893                     <span class="entry_type_enum_name">OFF (v3.2)</span>
1894                     <span class="entry_type_enum_notes"><p>No aberration correction is applied.<wbr/></p></span>
1895                   </li>
1896                   <li>
1897                     <span class="entry_type_enum_name">FAST (v3.2)</span>
1898                     <span class="entry_type_enum_notes"><p>Aberration correction will not slow down capture rate
1899 relative to sensor raw output.<wbr/></p></span>
1900                   </li>
1901                   <li>
1902                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
1903                     <span class="entry_type_enum_notes"><p>Aberration correction operates at improved quality but the capture rate might be
1904 reduced (relative to sensor raw output rate)</p></span>
1905                   </li>
1906                 </ul>
1907
1908             </td> <!-- entry_type -->
1909
1910             <td class="entry_description">
1911               <p>Mode of operation for the chromatic aberration correction algorithm.<wbr/></p>
1912             </td>
1913
1914             <td class="entry_units">
1915             </td>
1916
1917             <td class="entry_range">
1918               <p><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></p>
1919             </td>
1920
1921             <td class="entry_hal_version">
1922               <p>3.<wbr/>2</p>
1923             </td>
1924
1925             <td class="entry_tags">
1926             </td>
1927
1928           </tr>
1929           <tr class="entries_header">
1930             <th class="th_details" colspan="6">Details</th>
1931           </tr>
1932           <tr class="entry_cont">
1933             <td class="entry_details" colspan="6">
1934               <p>Chromatic (color) aberration is caused by the fact that different wavelengths of light
1935 can not focus on the same point after exiting from the lens.<wbr/> This metadata defines
1936 the high level control of chromatic aberration correction algorithm,<wbr/> which aims to
1937 minimize the chromatic artifacts that may occur along the object boundaries in an
1938 image.<wbr/></p>
1939 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean that camera device determined aberration
1940 correction will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device will
1941 use the highest-quality aberration correction algorithms,<wbr/> even if it slows down
1942 capture rate.<wbr/> FAST means the camera device will not slow down capture rate when
1943 applying aberration correction.<wbr/></p>
1944 <p>LEGACY devices will always be in FAST mode.<wbr/></p>
1945             </td>
1946           </tr>
1947
1948
1949           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
1950            <!-- end of entry -->
1951         
1952         
1953
1954       <!-- end of kind -->
1955       </tbody>
1956       <tr><td colspan="7" class="kind">static</td></tr>
1957
1958       <thead class="entries_header">
1959         <tr>
1960           <th class="th_name">Property Name</th>
1961           <th class="th_type">Type</th>
1962           <th class="th_description">Description</th>
1963           <th class="th_units">Units</th>
1964           <th class="th_range">Range</th>
1965           <th class="th_hal_version">Initial HIDL HAL version</th>
1966           <th class="th_tags">Tags</th>
1967         </tr>
1968       </thead>
1969
1970       <tbody>
1971
1972         
1973
1974         
1975
1976         
1977
1978         
1979
1980                 
1981           <tr class="entry" id="static_android.colorCorrection.availableAberrationModes">
1982             <td class="entry_name
1983              " rowspan="5">
1984               android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes
1985             </td>
1986             <td class="entry_type">
1987                 <span class="entry_type_name">byte</span>
1988                 <span class="entry_type_container">x</span>
1989
1990                 <span class="entry_type_array">
1991                   n
1992                 </span>
1993               <span class="entry_type_visibility"> [public as enumList]</span>
1994
1995
1996               <span class="entry_type_hwlevel">[legacy] </span>
1997
1998
1999                 <div class="entry_type_notes">list of enums</div>
2000
2001
2002             </td> <!-- entry_type -->
2003
2004             <td class="entry_description">
2005               <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
2006 supported by this camera device.<wbr/></p>
2007             </td>
2008
2009             <td class="entry_units">
2010             </td>
2011
2012             <td class="entry_range">
2013               <p>Any value listed in <a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></p>
2014             </td>
2015
2016             <td class="entry_hal_version">
2017               <p>3.<wbr/>2</p>
2018             </td>
2019
2020             <td class="entry_tags">
2021               <ul class="entry_tags">
2022                   <li><a href="#tag_V1">V1</a></li>
2023               </ul>
2024             </td>
2025
2026           </tr>
2027           <tr class="entries_header">
2028             <th class="th_details" colspan="6">Details</th>
2029           </tr>
2030           <tr class="entry_cont">
2031             <td class="entry_details" colspan="6">
2032               <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
2033 aberration correction modes are available for a device,<wbr/> this list will solely include
2034 OFF mode.<wbr/> All camera devices will support either OFF or FAST mode.<wbr/></p>
2035 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always list
2036 OFF mode.<wbr/> This includes all FULL level devices.<wbr/></p>
2037 <p>LEGACY devices will always only support FAST mode.<wbr/></p>
2038             </td>
2039           </tr>
2040
2041           <tr class="entries_header">
2042             <th class="th_details" colspan="6">HAL Implementation Details</th>
2043           </tr>
2044           <tr class="entry_cont">
2045             <td class="entry_details" colspan="6">
2046               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if chromatic aberration control is available
2047 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
2048 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
2049 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
2050             </td>
2051           </tr>
2052
2053           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2054            <!-- end of entry -->
2055         
2056         
2057
2058       <!-- end of kind -->
2059       </tbody>
2060
2061   <!-- end of section -->
2062   <tr><td colspan="7" id="section_control" class="section">control</td></tr>
2063
2064
2065       <tr><td colspan="7" class="kind">controls</td></tr>
2066
2067       <thead class="entries_header">
2068         <tr>
2069           <th class="th_name">Property Name</th>
2070           <th class="th_type">Type</th>
2071           <th class="th_description">Description</th>
2072           <th class="th_units">Units</th>
2073           <th class="th_range">Range</th>
2074           <th class="th_hal_version">Initial HIDL HAL version</th>
2075           <th class="th_tags">Tags</th>
2076         </tr>
2077       </thead>
2078
2079       <tbody>
2080
2081         
2082
2083         
2084
2085         
2086
2087         
2088
2089                 
2090           <tr class="entry" id="controls_android.control.aeAntibandingMode">
2091             <td class="entry_name
2092              " rowspan="5">
2093               android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
2094             </td>
2095             <td class="entry_type">
2096                 <span class="entry_type_name entry_type_name_enum">byte</span>
2097
2098               <span class="entry_type_visibility"> [public]</span>
2099
2100
2101               <span class="entry_type_hwlevel">[legacy] </span>
2102
2103
2104
2105                 <ul class="entry_type_enum">
2106                   <li>
2107                     <span class="entry_type_enum_name">OFF (v3.2)</span>
2108                     <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
2109 avoid banding problems.<wbr/></p></span>
2110                   </li>
2111                   <li>
2112                     <span class="entry_type_enum_name">50HZ (v3.2)</span>
2113                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2114 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
2115                   </li>
2116                   <li>
2117                     <span class="entry_type_enum_name">60HZ (v3.2)</span>
2118                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
2119 avoid banding problems with 60Hz illumination
2120 sources.<wbr/></p></span>
2121                   </li>
2122                   <li>
2123                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
2124                     <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
2125 antibanding routine to the current illumination
2126 condition.<wbr/> This is the default mode if AUTO is
2127 available on given camera device.<wbr/></p></span>
2128                   </li>
2129                 </ul>
2130
2131             </td> <!-- entry_type -->
2132
2133             <td class="entry_description">
2134               <p>The desired setting for the camera device's auto-exposure
2135 algorithm's antibanding compensation.<wbr/></p>
2136             </td>
2137
2138             <td class="entry_units">
2139             </td>
2140
2141             <td class="entry_range">
2142               <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
2143             </td>
2144
2145             <td class="entry_hal_version">
2146               <p>3.<wbr/>2</p>
2147             </td>
2148
2149             <td class="entry_tags">
2150               <ul class="entry_tags">
2151                   <li><a href="#tag_BC">BC</a></li>
2152               </ul>
2153             </td>
2154
2155           </tr>
2156           <tr class="entries_header">
2157             <th class="th_details" colspan="6">Details</th>
2158           </tr>
2159           <tr class="entry_cont">
2160             <td class="entry_details" colspan="6">
2161               <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
2162 lights,<wbr/> flicker at the rate of the power supply frequency
2163 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
2164 typically not noticeable to a person,<wbr/> it can be visible to
2165 a camera device.<wbr/> If a camera sets its exposure time to the
2166 wrong value,<wbr/> the flicker may become visible in the
2167 viewfinder as flicker or in a final captured image,<wbr/> as a
2168 set of variable-brightness bands across the image.<wbr/></p>
2169 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
2170 include antibanding routines that ensure that the chosen
2171 exposure value will not cause such banding.<wbr/> The choice of
2172 exposure time depends on the rate of flicker,<wbr/> which the
2173 camera device can detect automatically,<wbr/> or the expected
2174 rate can be selected by the application using this
2175 control.<wbr/></p>
2176 <p>A given camera device may not support all of the possible
2177 options for the antibanding mode.<wbr/> The
2178 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
2179 the available modes for a given camera device.<wbr/></p>
2180 <p>AUTO mode is the default if it is available on given
2181 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
2182 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
2183 and 60HZ will be available.<wbr/></p>
2184 <p>If manual exposure control is enabled (by setting
2185 <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/>
2186 then this setting has no effect,<wbr/> and the application must
2187 ensure it selects exposure times that do not cause banding
2188 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
2189 the application in this.<wbr/></p>
2190             </td>
2191           </tr>
2192
2193           <tr class="entries_header">
2194             <th class="th_details" colspan="6">HAL Implementation Details</th>
2195           </tr>
2196           <tr class="entry_cont">
2197             <td class="entry_details" colspan="6">
2198               <p>For all capture request templates,<wbr/> this field must be set
2199 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
2200 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
2201 60HZ must be available.<wbr/></p>
2202 <p>If manual exposure control is enabled (by setting
2203 <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/>
2204 then the exposure values provided by the application must not be
2205 adjusted for antibanding.<wbr/></p>
2206             </td>
2207           </tr>
2208
2209           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2210            <!-- end of entry -->
2211         
2212                 
2213           <tr class="entry" id="controls_android.control.aeExposureCompensation">
2214             <td class="entry_name
2215              " rowspan="3">
2216               android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
2217             </td>
2218             <td class="entry_type">
2219                 <span class="entry_type_name">int32</span>
2220
2221               <span class="entry_type_visibility"> [public]</span>
2222
2223
2224               <span class="entry_type_hwlevel">[legacy] </span>
2225
2226
2227
2228
2229             </td> <!-- entry_type -->
2230
2231             <td class="entry_description">
2232               <p>Adjustment to auto-exposure (AE) target image
2233 brightness.<wbr/></p>
2234             </td>
2235
2236             <td class="entry_units">
2237               Compensation steps
2238             </td>
2239
2240             <td class="entry_range">
2241               <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
2242             </td>
2243
2244             <td class="entry_hal_version">
2245               <p>3.<wbr/>2</p>
2246             </td>
2247
2248             <td class="entry_tags">
2249               <ul class="entry_tags">
2250                   <li><a href="#tag_BC">BC</a></li>
2251               </ul>
2252             </td>
2253
2254           </tr>
2255           <tr class="entries_header">
2256             <th class="th_details" colspan="6">Details</th>
2257           </tr>
2258           <tr class="entry_cont">
2259             <td class="entry_details" colspan="6">
2260               <p>The adjustment is measured as a count of steps,<wbr/> with the
2261 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
2262 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
2263 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
2264 will mean an exposure compensation of +2 EV; -3 will mean an
2265 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
2266 of image brightness.<wbr/> Note that this control will only be
2267 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
2268 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
2269 <p>In the event of exposure compensation value being changed,<wbr/> camera device
2270 may take several frames to reach the newly requested exposure target.<wbr/>
2271 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
2272 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
2273 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
2274 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
2275             </td>
2276           </tr>
2277
2278
2279           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2280            <!-- end of entry -->
2281         
2282                 
2283           <tr class="entry" id="controls_android.control.aeLock">
2284             <td class="entry_name
2285              " rowspan="3">
2286               android.<wbr/>control.<wbr/>ae<wbr/>Lock
2287             </td>
2288             <td class="entry_type">
2289                 <span class="entry_type_name entry_type_name_enum">byte</span>
2290
2291               <span class="entry_type_visibility"> [public as boolean]</span>
2292
2293
2294               <span class="entry_type_hwlevel">[legacy] </span>
2295
2296
2297
2298                 <ul class="entry_type_enum">
2299                   <li>
2300                     <span class="entry_type_enum_name">OFF (v3.2)</span>
2301                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
2302 is free to update its parameters.<wbr/></p></span>
2303                   </li>
2304                   <li>
2305                     <span class="entry_type_enum_name">ON (v3.2)</span>
2306                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
2307 must not update the exposure and sensitivity parameters
2308 while the lock is active.<wbr/></p>
2309 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
2310 will still take effect while auto-exposure is locked.<wbr/></p>
2311 <p>Some rare LEGACY devices may not support
2312 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
2313                   </li>
2314                 </ul>
2315
2316             </td> <!-- entry_type -->
2317
2318             <td class="entry_description">
2319               <p>Whether auto-exposure (AE) is currently locked to its latest
2320 calculated values.<wbr/></p>
2321             </td>
2322
2323             <td class="entry_units">
2324             </td>
2325
2326             <td class="entry_range">
2327             </td>
2328
2329             <td class="entry_hal_version">
2330               <p>3.<wbr/>2</p>
2331             </td>
2332
2333             <td class="entry_tags">
2334               <ul class="entry_tags">
2335                   <li><a href="#tag_BC">BC</a></li>
2336               </ul>
2337             </td>
2338
2339           </tr>
2340           <tr class="entries_header">
2341             <th class="th_details" colspan="6">Details</th>
2342           </tr>
2343           <tr class="entry_cont">
2344             <td class="entry_details" colspan="6">
2345               <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
2346 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
2347 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
2348 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
2349 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
2350 <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
2351 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
2352 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
2353 when AE is already locked,<wbr/> the camera device will not change the exposure time
2354 (<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>)
2355 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
2356 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
2357 <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/>
2358 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
2359 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
2360 the AE if AE is locked by the camera device internally during precapture metering
2361 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
2362 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
2363 will never succeed in a sequence of preview requests where AE lock is always set
2364 to <code>false</code>.<wbr/></p>
2365 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
2366 get locked do not necessarily correspond to the settings that were present in the
2367 latest capture result received from the camera device,<wbr/> since additional captures
2368 and AE updates may have occurred even before the result was sent out.<wbr/> If an
2369 application is switching between automatic and manual control and wishes to eliminate
2370 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
2371 <ol>
2372 <li>Starting in auto-AE mode:</li>
2373 <li>Lock AE</li>
2374 <li>Wait for the first result to be output that has the AE locked</li>
2375 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
2376 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
2377 </ol>
2378 <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>
2379             </td>
2380           </tr>
2381
2382
2383           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2384            <!-- end of entry -->
2385         
2386                 
2387           <tr class="entry" id="controls_android.control.aeMode">
2388             <td class="entry_name
2389              " rowspan="3">
2390               android.<wbr/>control.<wbr/>ae<wbr/>Mode
2391             </td>
2392             <td class="entry_type">
2393                 <span class="entry_type_name entry_type_name_enum">byte</span>
2394
2395               <span class="entry_type_visibility"> [public]</span>
2396
2397
2398               <span class="entry_type_hwlevel">[legacy] </span>
2399
2400
2401
2402                 <ul class="entry_type_enum">
2403                   <li>
2404                     <span class="entry_type_enum_name">OFF (v3.2)</span>
2405                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
2406 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2407 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
2408 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
2409 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
2410 a flash unit for this camera device.<wbr/></p>
2411 <p>Note that auto-white balance (AWB) and auto-focus (AF)
2412 behavior is device dependent when AE is in OFF mode.<wbr/>
2413 To have consistent behavior across different devices,<wbr/>
2414 it is recommended to either set AWB and AF to OFF mode
2415 or lock AWB and AF before setting AE to OFF.<wbr/>
2416 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/>
2417 <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>
2418 for more details.<wbr/></p>
2419 <p>LEGACY devices do not support the OFF mode and will
2420 override attempts to use this value to ON.<wbr/></p></span>
2421                   </li>
2422                   <li>
2423                     <span class="entry_type_enum_name">ON (v3.2)</span>
2424                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
2425 with no flash control.<wbr/></p>
2426 <p>The application's values for
2427 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2428 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2429 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
2430 application has control over the various
2431 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
2432                   </li>
2433                   <li>
2434                     <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
2435                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2436 the camera's flash unit,<wbr/> firing it in low-light
2437 conditions.<wbr/></p>
2438 <p>The flash may be fired during a precapture sequence
2439 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2440 may be fired for captures for which the
2441 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2442 STILL_<wbr/>CAPTURE</p></span>
2443                   </li>
2444                   <li>
2445                     <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
2446                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
2447 the camera's flash unit,<wbr/> always firing it for still
2448 captures.<wbr/></p>
2449 <p>The flash may be fired during a precapture sequence
2450 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
2451 will always be fired for captures for which the
2452 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
2453 STILL_<wbr/>CAPTURE</p></span>
2454                   </li>
2455                   <li>
2456                     <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
2457                     <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
2458 reduction.<wbr/></p>
2459 <p>If deemed necessary by the camera device,<wbr/> a red eye
2460 reduction flash will fire during the precapture
2461 sequence.<wbr/></p></span>
2462                   </li>
2463                   <li>
2464                     <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
2465                     <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
2466 <p>It informs the camera device that an external flash has been turned on,<wbr/> and that
2467 metering (and continuous focus if active) should be quickly recaculated to account
2468 for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
2469 <p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
2470 other available AE modes.<wbr/></p>
2471 <p>If the camera device supports AE external flash mode,<wbr/> aeState must be
2472 FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
2473 flash.<wbr/></p></span>
2474                   </li>
2475                 </ul>
2476
2477             </td> <!-- entry_type -->
2478
2479             <td class="entry_description">
2480               <p>The desired mode for the camera device's
2481 auto-exposure routine.<wbr/></p>
2482             </td>
2483
2484             <td class="entry_units">
2485             </td>
2486
2487             <td class="entry_range">
2488               <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
2489             </td>
2490
2491             <td class="entry_hal_version">
2492               <p>3.<wbr/>2</p>
2493             </td>
2494
2495             <td class="entry_tags">
2496               <ul class="entry_tags">
2497                   <li><a href="#tag_BC">BC</a></li>
2498               </ul>
2499             </td>
2500
2501           </tr>
2502           <tr class="entries_header">
2503             <th class="th_details" colspan="6">Details</th>
2504           </tr>
2505           <tr class="entry_cont">
2506             <td class="entry_details" colspan="6">
2507               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
2508 AUTO.<wbr/></p>
2509 <p>When set to any of the ON modes,<wbr/> the camera device's
2510 auto-exposure routine is enabled,<wbr/> overriding the
2511 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
2512 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
2513 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
2514 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
2515 is selected,<wbr/> the camera device's flash unit controls are
2516 also overridden.<wbr/></p>
2517 <p>The FLASH modes are only available if the camera device
2518 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>
2519 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
2520 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
2521 <p>When set to any of the ON modes,<wbr/> the values chosen by the
2522 camera device auto-exposure routine for the overridden
2523 fields for a given capture will be available in its
2524 CaptureResult.<wbr/></p>
2525             </td>
2526           </tr>
2527
2528
2529           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2530            <!-- end of entry -->
2531         
2532                 
2533           <tr class="entry" id="controls_android.control.aeRegions">
2534             <td class="entry_name
2535              " rowspan="5">
2536               android.<wbr/>control.<wbr/>ae<wbr/>Regions
2537             </td>
2538             <td class="entry_type">
2539                 <span class="entry_type_name">int32</span>
2540                 <span class="entry_type_container">x</span>
2541
2542                 <span class="entry_type_array">
2543                   5 x area_count
2544                 </span>
2545               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
2546
2547
2548
2549
2550
2551
2552             </td> <!-- entry_type -->
2553
2554             <td class="entry_description">
2555               <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
2556             </td>
2557
2558             <td class="entry_units">
2559               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
2560             </td>
2561
2562             <td class="entry_range">
2563               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
2564 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
2565             </td>
2566
2567             <td class="entry_hal_version">
2568               <p>3.<wbr/>2</p>
2569             </td>
2570
2571             <td class="entry_tags">
2572               <ul class="entry_tags">
2573                   <li><a href="#tag_BC">BC</a></li>
2574               </ul>
2575             </td>
2576
2577           </tr>
2578           <tr class="entries_header">
2579             <th class="th_details" colspan="6">Details</th>
2580           </tr>
2581           <tr class="entry_cont">
2582             <td class="entry_details" colspan="6">
2583               <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
2584 Otherwise will always be present.<wbr/></p>
2585 <p>The maximum number of regions supported by the device is determined by the value
2586 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
2587 <p>The coordinate system is based on the active pixel array,<wbr/>
2588 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
2589 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
2590 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
2591 bottom-right pixel in the active pixel array.<wbr/></p>
2592 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
2593 for every pixel in the area.<wbr/> This means that a large metering area
2594 with the same weight as a smaller area will have more effect in
2595 the metering result.<wbr/> Metering areas can partially overlap and the
2596 camera device will add the weights in the overlap region.<wbr/></p>
2597 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
2598 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
2599 weight is ignored.<wbr/></p>
2600 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
2601 camera device.<wbr/></p>
2602 <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
2603 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
2604 region and output only the intersection rectangle as the metering region in the result
2605 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
2606 not reported in the result metadata.<wbr/></p>
2607             </td>
2608           </tr>
2609
2610           <tr class="entries_header">
2611             <th class="th_details" colspan="6">HAL Implementation Details</th>
2612           </tr>
2613           <tr class="entry_cont">
2614             <td class="entry_details" colspan="6">
2615               <p>The HAL level representation of MeteringRectangle[] is a
2616 int[5 * area_<wbr/>count].<wbr/>
2617 Every five elements represent a metering region of
2618 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
2619 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
2620 exclusive on xmax and ymax.<wbr/></p>
2621             </td>
2622           </tr>
2623
2624           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2625            <!-- end of entry -->
2626         
2627                 
2628           <tr class="entry" id="controls_android.control.aeTargetFpsRange">
2629             <td class="entry_name
2630              " rowspan="3">
2631               android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
2632             </td>
2633             <td class="entry_type">
2634                 <span class="entry_type_name">int32</span>
2635                 <span class="entry_type_container">x</span>
2636
2637                 <span class="entry_type_array">
2638                   2
2639                 </span>
2640               <span class="entry_type_visibility"> [public as rangeInt]</span>
2641
2642
2643               <span class="entry_type_hwlevel">[legacy] </span>
2644
2645
2646
2647
2648             </td> <!-- entry_type -->
2649
2650             <td class="entry_description">
2651               <p>Range over which the auto-exposure routine can
2652 adjust the capture frame rate to maintain good
2653 exposure.<wbr/></p>
2654             </td>
2655
2656             <td class="entry_units">
2657               Frames per second (FPS)
2658             </td>
2659
2660             <td class="entry_range">
2661               <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>
2662             </td>
2663
2664             <td class="entry_hal_version">
2665               <p>3.<wbr/>2</p>
2666             </td>
2667
2668             <td class="entry_tags">
2669               <ul class="entry_tags">
2670                   <li><a href="#tag_BC">BC</a></li>
2671               </ul>
2672             </td>
2673
2674           </tr>
2675           <tr class="entries_header">
2676             <th class="th_details" colspan="6">Details</th>
2677           </tr>
2678           <tr class="entry_cont">
2679             <td class="entry_details" colspan="6">
2680               <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
2681 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
2682 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
2683             </td>
2684           </tr>
2685
2686
2687           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2688            <!-- end of entry -->
2689         
2690                 
2691           <tr class="entry" id="controls_android.control.aePrecaptureTrigger">
2692             <td class="entry_name
2693              " rowspan="5">
2694               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
2695             </td>
2696             <td class="entry_type">
2697                 <span class="entry_type_name entry_type_name_enum">byte</span>
2698
2699               <span class="entry_type_visibility"> [public]</span>
2700
2701
2702               <span class="entry_type_hwlevel">[limited] </span>
2703
2704
2705
2706                 <ul class="entry_type_enum">
2707                   <li>
2708                     <span class="entry_type_enum_name">IDLE (v3.2)</span>
2709                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
2710                   </li>
2711                   <li>
2712                     <span class="entry_type_enum_name">START (v3.2)</span>
2713                     <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
2714 by the camera device.<wbr/></p>
2715 <p>The exact effect of the precapture trigger depends on
2716 the current AE mode and state.<wbr/></p></span>
2717                   </li>
2718                   <li>
2719                     <span class="entry_type_enum_name">CANCEL (v3.2)</span>
2720                     <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
2721 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
2722 initial state.<wbr/></p></span>
2723                   </li>
2724                 </ul>
2725
2726             </td> <!-- entry_type -->
2727
2728             <td class="entry_description">
2729               <p>Whether the camera device will trigger a precapture
2730 metering sequence when it processes this request.<wbr/></p>
2731             </td>
2732
2733             <td class="entry_units">
2734             </td>
2735
2736             <td class="entry_range">
2737             </td>
2738
2739             <td class="entry_hal_version">
2740               <p>3.<wbr/>2</p>
2741             </td>
2742
2743             <td class="entry_tags">
2744               <ul class="entry_tags">
2745                   <li><a href="#tag_BC">BC</a></li>
2746               </ul>
2747             </td>
2748
2749           </tr>
2750           <tr class="entries_header">
2751             <th class="th_details" colspan="6">Details</th>
2752           </tr>
2753           <tr class="entry_cont">
2754             <td class="entry_details" colspan="6">
2755               <p>This entry is normally set to IDLE,<wbr/> or is not
2756 included at all in the request settings.<wbr/> When included and
2757 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
2758 precapture metering sequence.<wbr/></p>
2759 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
2760 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
2761 If a precapture metering sequence is already completed,<wbr/> and the camera
2762 device has implicitly locked the AE for subsequent still capture,<wbr/> the
2763 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
2764 <p>The precapture sequence should be triggered before starting a
2765 high-quality still capture for final metering decisions to
2766 be made,<wbr/> and for firing pre-capture flash pulses to estimate
2767 scene brightness and required final capture flash power,<wbr/> when
2768 the flash is enabled.<wbr/></p>
2769 <p>Normally,<wbr/> this entry should be set to START for only a
2770 single request,<wbr/> and the application should wait until the
2771 sequence completes before starting a new one.<wbr/></p>
2772 <p>When a precapture metering sequence is finished,<wbr/> the camera device
2773 may lock the auto-exposure routine internally to be able to accurately expose the
2774 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
2775 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
2776 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
2777 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
2778 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
2779 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
2780 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
2781 internally locked AE if the application doesn't submit a still capture request after
2782 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
2783 be used in devices that have earlier API levels.<wbr/></p>
2784 <p>The exact effect of auto-exposure (AE) precapture trigger
2785 depends on the current AE mode and state; see
2786 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
2787 details.<wbr/></p>
2788 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
2789 capturing a high-resolution JPEG image will automatically trigger a
2790 precapture sequence before the high-resolution capture,<wbr/> including
2791 potentially firing a pre-capture flash.<wbr/></p>
2792 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
2793 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
2794 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
2795 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
2796 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
2797 changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
2798 example.<wbr/></p>
2799 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
2800 the camera device will complete them in the optimal order for that device.<wbr/></p>
2801             </td>
2802           </tr>
2803
2804           <tr class="entries_header">
2805             <th class="th_details" colspan="6">HAL Implementation Details</th>
2806           </tr>
2807           <tr class="entry_cont">
2808             <td class="entry_details" colspan="6">
2809               <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
2810 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
2811 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
2812 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
2813 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
2814             </td>
2815           </tr>
2816
2817           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2818            <!-- end of entry -->
2819         
2820                 
2821           <tr class="entry" id="controls_android.control.afMode">
2822             <td class="entry_name
2823              " rowspan="5">
2824               android.<wbr/>control.<wbr/>af<wbr/>Mode
2825             </td>
2826             <td class="entry_type">
2827                 <span class="entry_type_name entry_type_name_enum">byte</span>
2828
2829               <span class="entry_type_visibility"> [public]</span>
2830
2831
2832               <span class="entry_type_hwlevel">[legacy] </span>
2833
2834
2835
2836                 <ul class="entry_type_enum">
2837                   <li>
2838                     <span class="entry_type_enum_name">OFF (v3.2)</span>
2839                     <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
2840 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
2841 application.<wbr/></p></span>
2842                   </li>
2843                   <li>
2844                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
2845                     <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
2846 <p>In this mode,<wbr/> the lens does not move unless
2847 the autofocus trigger action is called.<wbr/> When that trigger
2848 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2849 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
2850 <p>Always supported if lens is not fixed focus.<wbr/></p>
2851 <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
2852 is fixed-focus.<wbr/></p>
2853 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
2854 and sets the AF state to INACTIVE.<wbr/></p></span>
2855                   </li>
2856                   <li>
2857                     <span class="entry_type_enum_name">MACRO (v3.2)</span>
2858                     <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
2859 <p>In this mode,<wbr/> the lens does not move unless the
2860 autofocus trigger action is called.<wbr/> When that trigger is
2861 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
2862 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
2863 mode is optimized for focusing on objects very close to
2864 the camera.<wbr/></p>
2865 <p>When that trigger is activated,<wbr/> AF will transition to
2866 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
2867 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
2868 position to default,<wbr/> and sets the AF state to
2869 INACTIVE.<wbr/></p></span>
2870                   </li>
2871                   <li>
2872                     <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
2873                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2874 position continually to attempt to provide a
2875 constantly-in-focus image stream.<wbr/></p>
2876 <p>The focusing behavior should be suitable for good quality
2877 video recording; typically this means slower focus
2878 movement and no overshoots.<wbr/> When the AF trigger is not
2879 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
2880 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
2881 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
2882 the algorithm should immediately transition into
2883 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2884 lens position until a cancel AF trigger is received.<wbr/></p>
2885 <p>Once cancel is received,<wbr/> the algorithm should transition
2886 back to INACTIVE and resume passive scan.<wbr/> Note that this
2887 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
2888 ongoing PASSIVE_<wbr/>SCAN must immediately be
2889 canceled.<wbr/></p></span>
2890                   </li>
2891                   <li>
2892                     <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
2893                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
2894 position continually to attempt to provide a
2895 constantly-in-focus image stream.<wbr/></p>
2896 <p>The focusing behavior should be suitable for still image
2897 capture; typically this means focusing as fast as
2898 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
2899 algorithm should start in INACTIVE state,<wbr/> and then
2900 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
2901 appropriate as it attempts to maintain focus.<wbr/> When the AF
2902 trigger is activated,<wbr/> the algorithm should finish its
2903 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
2904 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
2905 lens position until a cancel AF trigger is received.<wbr/></p>
2906 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
2907 should transition back to INACTIVE and then act as if it
2908 has just been started.<wbr/></p></span>
2909                   </li>
2910                   <li>
2911                     <span class="entry_type_enum_name">EDOF (v3.2)</span>
2912                     <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
2913 <p>The camera device will produce images with an extended
2914 depth of field automatically; no special focusing
2915 operations need to be done before taking a picture.<wbr/></p>
2916 <p>AF triggers are ignored,<wbr/> and the AF state will always be
2917 INACTIVE.<wbr/></p></span>
2918                   </li>
2919                 </ul>
2920
2921             </td> <!-- entry_type -->
2922
2923             <td class="entry_description">
2924               <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
2925 mode it is set to.<wbr/></p>
2926             </td>
2927
2928             <td class="entry_units">
2929             </td>
2930
2931             <td class="entry_range">
2932               <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
2933             </td>
2934
2935             <td class="entry_hal_version">
2936               <p>3.<wbr/>2</p>
2937             </td>
2938
2939             <td class="entry_tags">
2940               <ul class="entry_tags">
2941                   <li><a href="#tag_BC">BC</a></li>
2942               </ul>
2943             </td>
2944
2945           </tr>
2946           <tr class="entries_header">
2947             <th class="th_details" colspan="6">Details</th>
2948           </tr>
2949           <tr class="entry_cont">
2950             <td class="entry_details" colspan="6">
2951               <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
2952 (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
2953 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
2954 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
2955 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>
2956 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
2957 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
2958 in result metadata.<wbr/></p>
2959             </td>
2960           </tr>
2961
2962           <tr class="entries_header">
2963             <th class="th_details" colspan="6">HAL Implementation Details</th>
2964           </tr>
2965           <tr class="entry_cont">
2966             <td class="entry_details" colspan="6">
2967               <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
2968 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
2969 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
2970 <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
2971 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
2972 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
2973 the same focal plane remains in focus.<wbr/></p>
2974 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
2975 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
2976 (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
2977 same lock behavior as above.<wbr/></p>
2978 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
2979 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/>
2980 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
2981 manual control.<wbr/></p>
2982 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
2983 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
2984 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
2985 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
2986 that will arise on camera modules with open-loop VCMs.<wbr/></p>
2987             </td>
2988           </tr>
2989
2990           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
2991            <!-- end of entry -->
2992         
2993                 
2994           <tr class="entry" id="controls_android.control.afRegions">
2995             <td class="entry_name
2996              " rowspan="5">
2997               android.<wbr/>control.<wbr/>af<wbr/>Regions
2998             </td>
2999             <td class="entry_type">
3000                 <span class="entry_type_name">int32</span>
3001                 <span class="entry_type_container">x</span>
3002
3003                 <span class="entry_type_array">
3004                   5 x area_count
3005                 </span>
3006               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3007
3008
3009
3010
3011
3012
3013             </td> <!-- entry_type -->
3014
3015             <td class="entry_description">
3016               <p>List of metering areas to use for auto-focus.<wbr/></p>
3017             </td>
3018
3019             <td class="entry_units">
3020               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3021             </td>
3022
3023             <td class="entry_range">
3024               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3025 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3026             </td>
3027
3028             <td class="entry_hal_version">
3029               <p>3.<wbr/>2</p>
3030             </td>
3031
3032             <td class="entry_tags">
3033               <ul class="entry_tags">
3034                   <li><a href="#tag_BC">BC</a></li>
3035               </ul>
3036             </td>
3037
3038           </tr>
3039           <tr class="entries_header">
3040             <th class="th_details" colspan="6">Details</th>
3041           </tr>
3042           <tr class="entry_cont">
3043             <td class="entry_details" colspan="6">
3044               <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
3045 Otherwise will always be present.<wbr/></p>
3046 <p>The maximum number of focus areas supported by the device is determined by the value
3047 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
3048 <p>The coordinate system is based on the active pixel array,<wbr/>
3049 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3050 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3051 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3052 bottom-right pixel in the active pixel array.<wbr/></p>
3053 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
3054 for every pixel in the area.<wbr/> This means that a large metering area
3055 with the same weight as a smaller area will have more effect in
3056 the metering result.<wbr/> Metering areas can partially overlap and the
3057 camera device will add the weights in the overlap region.<wbr/></p>
3058 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
3059 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
3060 ignored.<wbr/></p>
3061 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3062 camera device.<wbr/></p>
3063 <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
3064 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3065 region and output only the intersection rectangle as the metering region in the result
3066 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
3067 not reported in the result metadata.<wbr/></p>
3068             </td>
3069           </tr>
3070
3071           <tr class="entries_header">
3072             <th class="th_details" colspan="6">HAL Implementation Details</th>
3073           </tr>
3074           <tr class="entry_cont">
3075             <td class="entry_details" colspan="6">
3076               <p>The HAL level representation of MeteringRectangle[] is a
3077 int[5 * area_<wbr/>count].<wbr/>
3078 Every five elements represent a metering region of
3079 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3080 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3081 exclusive on xmax and ymax.<wbr/></p>
3082             </td>
3083           </tr>
3084
3085           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3086            <!-- end of entry -->
3087         
3088                 
3089           <tr class="entry" id="controls_android.control.afTrigger">
3090             <td class="entry_name
3091              " rowspan="5">
3092               android.<wbr/>control.<wbr/>af<wbr/>Trigger
3093             </td>
3094             <td class="entry_type">
3095                 <span class="entry_type_name entry_type_name_enum">byte</span>
3096
3097               <span class="entry_type_visibility"> [public]</span>
3098
3099
3100               <span class="entry_type_hwlevel">[legacy] </span>
3101
3102
3103
3104                 <ul class="entry_type_enum">
3105                   <li>
3106                     <span class="entry_type_enum_name">IDLE (v3.2)</span>
3107                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
3108                   </li>
3109                   <li>
3110                     <span class="entry_type_enum_name">START (v3.2)</span>
3111                     <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
3112                   </li>
3113                   <li>
3114                     <span class="entry_type_enum_name">CANCEL (v3.2)</span>
3115                     <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
3116 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
3117                   </li>
3118                 </ul>
3119
3120             </td> <!-- entry_type -->
3121
3122             <td class="entry_description">
3123               <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
3124             </td>
3125
3126             <td class="entry_units">
3127             </td>
3128
3129             <td class="entry_range">
3130             </td>
3131
3132             <td class="entry_hal_version">
3133               <p>3.<wbr/>2</p>
3134             </td>
3135
3136             <td class="entry_tags">
3137               <ul class="entry_tags">
3138                   <li><a href="#tag_BC">BC</a></li>
3139               </ul>
3140             </td>
3141
3142           </tr>
3143           <tr class="entries_header">
3144             <th class="th_details" colspan="6">Details</th>
3145           </tr>
3146           <tr class="entry_cont">
3147             <td class="entry_details" colspan="6">
3148               <p>This entry is normally set to IDLE,<wbr/> or is not
3149 included at all in the request settings.<wbr/></p>
3150 <p>When included and set to START,<wbr/> the camera device will trigger the
3151 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
3152 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
3153 and return to its initial AF state.<wbr/></p>
3154 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
3155 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
3156 START for multiple captures in a row means restarting the AF operation over
3157 and over again.<wbr/></p>
3158 <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>
3159 <p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>
3160 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
3161 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
3162 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
3163 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
3164 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
3165             </td>
3166           </tr>
3167
3168           <tr class="entries_header">
3169             <th class="th_details" colspan="6">HAL Implementation Details</th>
3170           </tr>
3171           <tr class="entry_cont">
3172             <td class="entry_details" colspan="6">
3173               <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
3174 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
3175 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
3176 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
3177 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
3178             </td>
3179           </tr>
3180
3181           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3182            <!-- end of entry -->
3183         
3184                 
3185           <tr class="entry" id="controls_android.control.awbLock">
3186             <td class="entry_name
3187              " rowspan="3">
3188               android.<wbr/>control.<wbr/>awb<wbr/>Lock
3189             </td>
3190             <td class="entry_type">
3191                 <span class="entry_type_name entry_type_name_enum">byte</span>
3192
3193               <span class="entry_type_visibility"> [public as boolean]</span>
3194
3195
3196               <span class="entry_type_hwlevel">[legacy] </span>
3197
3198
3199
3200                 <ul class="entry_type_enum">
3201                   <li>
3202                     <span class="entry_type_enum_name">OFF (v3.2)</span>
3203                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
3204 algorithm is free to update its parameters if in AUTO
3205 mode.<wbr/></p></span>
3206                   </li>
3207                   <li>
3208                     <span class="entry_type_enum_name">ON (v3.2)</span>
3209                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
3210 algorithm will not update its parameters while the lock
3211 is active.<wbr/></p></span>
3212                   </li>
3213                 </ul>
3214
3215             </td> <!-- entry_type -->
3216
3217             <td class="entry_description">
3218               <p>Whether auto-white balance (AWB) is currently locked to its
3219 latest calculated values.<wbr/></p>
3220             </td>
3221
3222             <td class="entry_units">
3223             </td>
3224
3225             <td class="entry_range">
3226             </td>
3227
3228             <td class="entry_hal_version">
3229               <p>3.<wbr/>2</p>
3230             </td>
3231
3232             <td class="entry_tags">
3233               <ul class="entry_tags">
3234                   <li><a href="#tag_BC">BC</a></li>
3235               </ul>
3236             </td>
3237
3238           </tr>
3239           <tr class="entries_header">
3240             <th class="th_details" colspan="6">Details</th>
3241           </tr>
3242           <tr class="entry_cont">
3243             <td class="entry_details" colspan="6">
3244               <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
3245 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
3246 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
3247 get locked do not necessarily correspond to the settings that were present in the
3248 latest capture result received from the camera device,<wbr/> since additional captures
3249 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
3250 application is switching between automatic and manual control and wishes to eliminate
3251 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
3252 <ol>
3253 <li>Starting in auto-AWB mode:</li>
3254 <li>Lock AWB</li>
3255 <li>Wait for the first result to be output that has the AWB locked</li>
3256 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
3257 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
3258 </ol>
3259 <p>Note that AWB lock is only meaningful when
3260 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
3261 AWB is already fixed to a specific setting.<wbr/></p>
3262 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
3263             </td>
3264           </tr>
3265
3266
3267           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3268            <!-- end of entry -->
3269         
3270                 
3271           <tr class="entry" id="controls_android.control.awbMode">
3272             <td class="entry_name
3273              " rowspan="3">
3274               android.<wbr/>control.<wbr/>awb<wbr/>Mode
3275             </td>
3276             <td class="entry_type">
3277                 <span class="entry_type_name entry_type_name_enum">byte</span>
3278
3279               <span class="entry_type_visibility"> [public]</span>
3280
3281
3282               <span class="entry_type_hwlevel">[legacy] </span>
3283
3284
3285
3286                 <ul class="entry_type_enum">
3287                   <li>
3288                     <span class="entry_type_enum_name">OFF (v3.2)</span>
3289                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
3290 <p>The application-selected color transform matrix
3291 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
3292 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
3293 device for manual white balance control.<wbr/></p></span>
3294                   </li>
3295                   <li>
3296                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
3297                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
3298 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3299 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3300 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3301 values used by the camera device for the transform and gains
3302 will be available in the capture result for this request.<wbr/></p></span>
3303                   </li>
3304                   <li>
3305                     <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
3306                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3307 the camera device uses incandescent light as the assumed scene
3308 illumination for white balance.<wbr/></p>
3309 <p>While the exact white balance transforms are up to the
3310 camera device,<wbr/> they will approximately match the CIE
3311 standard illuminant A.<wbr/></p>
3312 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3313 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3314 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3315 values used by the camera device for the transform and gains
3316 will be available in the capture result for this request.<wbr/></p></span>
3317                   </li>
3318                   <li>
3319                     <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
3320                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3321 the camera device uses fluorescent light as the assumed scene
3322 illumination for white balance.<wbr/></p>
3323 <p>While the exact white balance transforms are up to the
3324 camera device,<wbr/> they will approximately match the CIE
3325 standard illuminant F2.<wbr/></p>
3326 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3327 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3328 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3329 values used by the camera device for the transform and gains
3330 will be available in the capture result for this request.<wbr/></p></span>
3331                   </li>
3332                   <li>
3333                     <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
3334                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3335 the camera device uses warm fluorescent light as the assumed scene
3336 illumination for white balance.<wbr/></p>
3337 <p>While the exact white balance transforms are up to the
3338 camera device,<wbr/> they will approximately match the CIE
3339 standard illuminant F4.<wbr/></p>
3340 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3341 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3342 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3343 values used by the camera device for the transform and gains
3344 will be available in the capture result for this request.<wbr/></p></span>
3345                   </li>
3346                   <li>
3347                     <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
3348                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3349 the camera device uses daylight light as the assumed scene
3350 illumination for white balance.<wbr/></p>
3351 <p>While the exact white balance transforms are up to the
3352 camera device,<wbr/> they will approximately match the CIE
3353 standard illuminant D65.<wbr/></p>
3354 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3355 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3356 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3357 values used by the camera device for the transform and gains
3358 will be available in the capture result for this request.<wbr/></p></span>
3359                   </li>
3360                   <li>
3361                     <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
3362                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3363 the camera device uses cloudy daylight light as the assumed scene
3364 illumination for white balance.<wbr/></p>
3365 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3366 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3367 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3368 values used by the camera device for the transform and gains
3369 will be available in the capture result for this request.<wbr/></p></span>
3370                   </li>
3371                   <li>
3372                     <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
3373                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3374 the camera device uses twilight light as the assumed scene
3375 illumination for white balance.<wbr/></p>
3376 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3377 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3378 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3379 values used by the camera device for the transform and gains
3380 will be available in the capture result for this request.<wbr/></p></span>
3381                   </li>
3382                   <li>
3383                     <span class="entry_type_enum_name">SHADE (v3.2)</span>
3384                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
3385 the camera device uses shade light as the assumed scene
3386 illumination for white balance.<wbr/></p>
3387 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
3388 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
3389 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
3390 values used by the camera device for the transform and gains
3391 will be available in the capture result for this request.<wbr/></p></span>
3392                   </li>
3393                 </ul>
3394
3395             </td> <!-- entry_type -->
3396
3397             <td class="entry_description">
3398               <p>Whether auto-white balance (AWB) is currently setting the color
3399 transform fields,<wbr/> and what its illumination target
3400 is.<wbr/></p>
3401             </td>
3402
3403             <td class="entry_units">
3404             </td>
3405
3406             <td class="entry_range">
3407               <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
3408             </td>
3409
3410             <td class="entry_hal_version">
3411               <p>3.<wbr/>2</p>
3412             </td>
3413
3414             <td class="entry_tags">
3415               <ul class="entry_tags">
3416                   <li><a href="#tag_BC">BC</a></li>
3417               </ul>
3418             </td>
3419
3420           </tr>
3421           <tr class="entries_header">
3422             <th class="th_details" colspan="6">Details</th>
3423           </tr>
3424           <tr class="entry_cont">
3425             <td class="entry_details" colspan="6">
3426               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
3427 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
3428 routine is enabled,<wbr/> overriding the application's selected
3429 <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
3430 <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>
3431 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
3432 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
3433 setting AE mode to OFF.<wbr/></p>
3434 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
3435 routine is disabled.<wbr/> The application manually controls the white
3436 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>
3437 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
3438 <p>When set to any other modes,<wbr/> the camera device's auto-white
3439 balance routine is disabled.<wbr/> The camera device uses each
3440 particular illumination target for white balance
3441 adjustment.<wbr/> The application's values for
3442 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
3443 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
3444 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
3445             </td>
3446           </tr>
3447
3448
3449           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3450            <!-- end of entry -->
3451         
3452                 
3453           <tr class="entry" id="controls_android.control.awbRegions">
3454             <td class="entry_name
3455              " rowspan="5">
3456               android.<wbr/>control.<wbr/>awb<wbr/>Regions
3457             </td>
3458             <td class="entry_type">
3459                 <span class="entry_type_name">int32</span>
3460                 <span class="entry_type_container">x</span>
3461
3462                 <span class="entry_type_array">
3463                   5 x area_count
3464                 </span>
3465               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
3466
3467
3468
3469
3470
3471
3472             </td> <!-- entry_type -->
3473
3474             <td class="entry_description">
3475               <p>List of metering areas to use for auto-white-balance illuminant
3476 estimation.<wbr/></p>
3477             </td>
3478
3479             <td class="entry_units">
3480               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
3481             </td>
3482
3483             <td class="entry_range">
3484               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
3485 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
3486             </td>
3487
3488             <td class="entry_hal_version">
3489               <p>3.<wbr/>2</p>
3490             </td>
3491
3492             <td class="entry_tags">
3493               <ul class="entry_tags">
3494                   <li><a href="#tag_BC">BC</a></li>
3495               </ul>
3496             </td>
3497
3498           </tr>
3499           <tr class="entries_header">
3500             <th class="th_details" colspan="6">Details</th>
3501           </tr>
3502           <tr class="entry_cont">
3503             <td class="entry_details" colspan="6">
3504               <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
3505 Otherwise will always be present.<wbr/></p>
3506 <p>The maximum number of regions supported by the device is determined by the value
3507 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
3508 <p>The coordinate system is based on the active pixel array,<wbr/>
3509 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
3510 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
3511 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
3512 bottom-right pixel in the active pixel array.<wbr/></p>
3513 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
3514 for every pixel in the area.<wbr/> This means that a large metering area
3515 with the same weight as a smaller area will have more effect in
3516 the metering result.<wbr/> Metering areas can partially overlap and the
3517 camera device will add the weights in the overlap region.<wbr/></p>
3518 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
3519 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
3520 0 weight is ignored.<wbr/></p>
3521 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
3522 camera device.<wbr/></p>
3523 <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
3524 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
3525 region and output only the intersection rectangle as the metering region in the result
3526 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
3527 not reported in the result metadata.<wbr/></p>
3528             </td>
3529           </tr>
3530
3531           <tr class="entries_header">
3532             <th class="th_details" colspan="6">HAL Implementation Details</th>
3533           </tr>
3534           <tr class="entry_cont">
3535             <td class="entry_details" colspan="6">
3536               <p>The HAL level representation of MeteringRectangle[] is a
3537 int[5 * area_<wbr/>count].<wbr/>
3538 Every five elements represent a metering region of
3539 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
3540 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
3541 exclusive on xmax and ymax.<wbr/></p>
3542             </td>
3543           </tr>
3544
3545           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3546            <!-- end of entry -->
3547         
3548                 
3549           <tr class="entry" id="controls_android.control.captureIntent">
3550             <td class="entry_name
3551              " rowspan="3">
3552               android.<wbr/>control.<wbr/>capture<wbr/>Intent
3553             </td>
3554             <td class="entry_type">
3555                 <span class="entry_type_name entry_type_name_enum">byte</span>
3556
3557               <span class="entry_type_visibility"> [public]</span>
3558
3559
3560               <span class="entry_type_hwlevel">[legacy] </span>
3561
3562
3563
3564                 <ul class="entry_type_enum">
3565                   <li>
3566                     <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
3567                     <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
3568 categories.<wbr/> The camera device will default to preview-like
3569 behavior.<wbr/></p></span>
3570                   </li>
3571                   <li>
3572                     <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
3573                     <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
3574 <p>The precapture trigger may be used to start off a metering
3575 w/<wbr/>flash sequence.<wbr/></p></span>
3576                   </li>
3577                   <li>
3578                     <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
3579                     <span class="entry_type_enum_notes"><p>This request is for a still capture-type
3580 use case.<wbr/></p>
3581 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
3582                   </li>
3583                   <li>
3584                     <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
3585                     <span class="entry_type_enum_notes"><p>This request is for a video recording
3586 use case.<wbr/></p></span>
3587                   </li>
3588                   <li>
3589                     <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
3590                     <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
3591 image while recording video) use case.<wbr/></p>
3592 <p>The camera device should take the highest-quality image
3593 possible (given the other settings) without disrupting the
3594 frame rate of video recording.<wbr/>  </p></span>
3595                   </li>
3596                   <li>
3597                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
3598                     <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
3599 application will stream full-resolution images and
3600 reprocess one or several later for a final
3601 capture.<wbr/></p></span>
3602                   </li>
3603                   <li>
3604                     <span class="entry_type_enum_name">MANUAL (v3.2)</span>
3605                     <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
3606 the applications want to directly control the capture parameters.<wbr/></p>
3607 <p>For example,<wbr/> the application may wish to manually control
3608 <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>
3609                   </li>
3610                   <li>
3611                     <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
3612                     <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
3613 the application will use camera and inertial sensor data to
3614 locate and track objects in the world.<wbr/></p>
3615 <p>The camera device auto-exposure routine will limit the exposure time
3616 of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
3617                   </li>
3618                 </ul>
3619
3620             </td> <!-- entry_type -->
3621
3622             <td class="entry_description">
3623               <p>Information to the camera device 3A (auto-exposure,<wbr/>
3624 auto-focus,<wbr/> auto-white balance) routines about the purpose
3625 of this capture,<wbr/> to help the camera device to decide optimal 3A
3626 strategy.<wbr/></p>
3627             </td>
3628
3629             <td class="entry_units">
3630             </td>
3631
3632             <td class="entry_range">
3633             </td>
3634
3635             <td class="entry_hal_version">
3636               <p>3.<wbr/>2</p>
3637             </td>
3638
3639             <td class="entry_tags">
3640               <ul class="entry_tags">
3641                   <li><a href="#tag_BC">BC</a></li>
3642               </ul>
3643             </td>
3644
3645           </tr>
3646           <tr class="entries_header">
3647             <th class="th_details" colspan="6">Details</th>
3648           </tr>
3649           <tr class="entry_cont">
3650             <td class="entry_details" colspan="6">
3651               <p>This control (except for MANUAL) is only effective if
3652 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
3653 <p>All intents are supported by all devices,<wbr/> except that:
3654   * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3655 PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
3656   * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3657 MANUAL_<wbr/>SENSOR.<wbr/>
3658   * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
3659 MOTION_<wbr/>TRACKING.<wbr/></p>
3660             </td>
3661           </tr>
3662
3663
3664           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3665            <!-- end of entry -->
3666         
3667                 
3668           <tr class="entry" id="controls_android.control.effectMode">
3669             <td class="entry_name
3670              " rowspan="3">
3671               android.<wbr/>control.<wbr/>effect<wbr/>Mode
3672             </td>
3673             <td class="entry_type">
3674                 <span class="entry_type_name entry_type_name_enum">byte</span>
3675
3676               <span class="entry_type_visibility"> [public]</span>
3677
3678
3679               <span class="entry_type_hwlevel">[legacy] </span>
3680
3681
3682
3683                 <ul class="entry_type_enum">
3684                   <li>
3685                     <span class="entry_type_enum_name">OFF (v3.2)</span>
3686                     <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
3687                   </li>
3688                   <li>
3689                     <span class="entry_type_enum_name">MONO (v3.2)</span>
3690                     <span class="entry_type_enum_optional">[optional]</span>
3691                     <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
3692 a single color.<wbr/></p>
3693 <p>This will typically be grayscale.<wbr/></p></span>
3694                   </li>
3695                   <li>
3696                     <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
3697                     <span class="entry_type_enum_optional">[optional]</span>
3698                     <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
3699 are inverted.<wbr/></p></span>
3700                   </li>
3701                   <li>
3702                     <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
3703                     <span class="entry_type_enum_optional">[optional]</span>
3704                     <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
3705 image is wholly or partially reversed in
3706 tone.<wbr/></p></span>
3707                   </li>
3708                   <li>
3709                     <span class="entry_type_enum_name">SEPIA (v3.2)</span>
3710                     <span class="entry_type_enum_optional">[optional]</span>
3711                     <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
3712 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
3713                   </li>
3714                   <li>
3715                     <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
3716                     <span class="entry_type_enum_optional">[optional]</span>
3717                     <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
3718 discrete regions of tone rather than a continuous
3719 gradient of tones.<wbr/></p></span>
3720                   </li>
3721                   <li>
3722                     <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
3723                     <span class="entry_type_enum_optional">[optional]</span>
3724                     <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
3725 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
3726                   </li>
3727                   <li>
3728                     <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
3729                     <span class="entry_type_enum_optional">[optional]</span>
3730                     <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
3731 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
3732                   </li>
3733                   <li>
3734                     <span class="entry_type_enum_name">AQUA (v3.2)</span>
3735                     <span class="entry_type_enum_optional">[optional]</span>
3736                     <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
3737                   </li>
3738                 </ul>
3739
3740             </td> <!-- entry_type -->
3741
3742             <td class="entry_description">
3743               <p>A special color effect to apply.<wbr/></p>
3744             </td>
3745
3746             <td class="entry_units">
3747             </td>
3748
3749             <td class="entry_range">
3750               <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
3751             </td>
3752
3753             <td class="entry_hal_version">
3754               <p>3.<wbr/>2</p>
3755             </td>
3756
3757             <td class="entry_tags">
3758               <ul class="entry_tags">
3759                   <li><a href="#tag_BC">BC</a></li>
3760               </ul>
3761             </td>
3762
3763           </tr>
3764           <tr class="entries_header">
3765             <th class="th_details" colspan="6">Details</th>
3766           </tr>
3767           <tr class="entry_cont">
3768             <td class="entry_details" colspan="6">
3769               <p>When this mode is set,<wbr/> a color effect will be applied
3770 to images produced by the camera device.<wbr/> The interpretation
3771 and implementation of these color effects is left to the
3772 implementor of the camera device,<wbr/> and should not be
3773 depended on to be consistent (or present) across all
3774 devices.<wbr/></p>
3775             </td>
3776           </tr>
3777
3778
3779           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3780            <!-- end of entry -->
3781         
3782                 
3783           <tr class="entry" id="controls_android.control.mode">
3784             <td class="entry_name
3785              " rowspan="3">
3786               android.<wbr/>control.<wbr/>mode
3787             </td>
3788             <td class="entry_type">
3789                 <span class="entry_type_name entry_type_name_enum">byte</span>
3790
3791               <span class="entry_type_visibility"> [public]</span>
3792
3793
3794               <span class="entry_type_hwlevel">[legacy] </span>
3795
3796
3797
3798                 <ul class="entry_type_enum">
3799                   <li>
3800                     <span class="entry_type_enum_name">OFF (v3.2)</span>
3801                     <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
3802 <p>All control by the device's metering and focusing (3A)
3803 routines is disabled,<wbr/> and no other settings in
3804 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
3805 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
3806 device to select post-processing values for processing
3807 blocks that do not allow for manual control,<wbr/> or are not
3808 exposed by the camera API.<wbr/></p>
3809 <p>However,<wbr/> the camera device's 3A routines may continue to
3810 collect statistics and update their internal state so that
3811 when control is switched to AUTO mode,<wbr/> good control values
3812 can be immediately applied.<wbr/></p></span>
3813                   </li>
3814                   <li>
3815                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
3816                     <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
3817 <p>Manual control of capture parameters is disabled.<wbr/> All
3818 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
3819 effect.<wbr/></p></span>
3820                   </li>
3821                   <li>
3822                     <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
3823                     <span class="entry_type_enum_optional">[optional]</span>
3824                     <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
3825 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
3826 control.<wbr/>afMode controls; the camera device will ignore
3827 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
3828 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
3829 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
3830 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
3831 contain some modes other than DISABLED).<wbr/></p></span>
3832                   </li>
3833                   <li>
3834                     <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
3835                     <span class="entry_type_enum_optional">[optional]</span>
3836                     <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
3837 used by camera device background auto-exposure,<wbr/> auto-white balance and
3838 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
3839 <p>Specifically,<wbr/> the 3A routines are locked to the last
3840 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
3841 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
3842 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
3843 discarded by the camera device.<wbr/></p></span>
3844                   </li>
3845                 </ul>
3846
3847             </td> <!-- entry_type -->
3848
3849             <td class="entry_description">
3850               <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
3851 routines.<wbr/></p>
3852             </td>
3853
3854             <td class="entry_units">
3855             </td>
3856
3857             <td class="entry_range">
3858               <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
3859             </td>
3860
3861             <td class="entry_hal_version">
3862               <p>3.<wbr/>2</p>
3863             </td>
3864
3865             <td class="entry_tags">
3866               <ul class="entry_tags">
3867                   <li><a href="#tag_BC">BC</a></li>
3868               </ul>
3869             </td>
3870
3871           </tr>
3872           <tr class="entries_header">
3873             <th class="th_details" colspan="6">Details</th>
3874           </tr>
3875           <tr class="entry_cont">
3876             <td class="entry_details" colspan="6">
3877               <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
3878 by the camera device is disabled.<wbr/> The application must set the fields for
3879 capture parameters itself.<wbr/></p>
3880 <p>When set to AUTO,<wbr/> the individual algorithm controls in
3881 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>
3882 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
3883 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
3884 implements one of the scene mode settings (such as ACTION,<wbr/>
3885 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
3886 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
3887 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
3888 is that this frame will not be used by camera device background 3A statistics
3889 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
3890 where the application doesn't want a 3A manual control capture to affect
3891 the subsequent auto 3A capture results.<wbr/></p>
3892             </td>
3893           </tr>
3894
3895
3896           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
3897            <!-- end of entry -->
3898         
3899                 
3900           <tr class="entry" id="controls_android.control.sceneMode">
3901             <td class="entry_name
3902              " rowspan="5">
3903               android.<wbr/>control.<wbr/>scene<wbr/>Mode
3904             </td>
3905             <td class="entry_type">
3906                 <span class="entry_type_name entry_type_name_enum">byte</span>
3907
3908               <span class="entry_type_visibility"> [public]</span>
3909
3910
3911               <span class="entry_type_hwlevel">[legacy] </span>
3912
3913
3914
3915                 <ul class="entry_type_enum">
3916                   <li>
3917                     <span class="entry_type_enum_name">DISABLED (v3.2)</span>
3918                     <span class="entry_type_enum_value">0</span>
3919                     <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
3920                   </li>
3921                   <li>
3922                     <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
3923                     <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
3924 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
3925 auto-exposure routines.<wbr/></p>
3926 <p>If face detection statistics are disabled
3927 (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/>
3928 this should still operate correctly (but will not return
3929 face detection statistics to the framework).<wbr/></p>
3930 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
3931 <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>
3932 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
3933                   </li>
3934                   <li>
3935                     <span class="entry_type_enum_name">ACTION (v3.2)</span>
3936                     <span class="entry_type_enum_optional">[optional]</span>
3937                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
3938 <p>Similar to SPORTS.<wbr/></p></span>
3939                   </li>
3940                   <li>
3941                     <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
3942                     <span class="entry_type_enum_optional">[optional]</span>
3943                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
3944                   </li>
3945                   <li>
3946                     <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
3947                     <span class="entry_type_enum_optional">[optional]</span>
3948                     <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
3949                   </li>
3950                   <li>
3951                     <span class="entry_type_enum_name">NIGHT (v3.2)</span>
3952                     <span class="entry_type_enum_optional">[optional]</span>
3953                     <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
3954                   </li>
3955                   <li>
3956                     <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
3957                     <span class="entry_type_enum_optional">[optional]</span>
3958                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
3959 settings.<wbr/></p></span>
3960                   </li>
3961                   <li>
3962                     <span class="entry_type_enum_name">THEATRE (v3.2)</span>
3963                     <span class="entry_type_enum_optional">[optional]</span>
3964                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
3965 remain off.<wbr/></p></span>
3966                   </li>
3967                   <li>
3968                     <span class="entry_type_enum_name">BEACH (v3.2)</span>
3969                     <span class="entry_type_enum_optional">[optional]</span>
3970                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
3971                   </li>
3972                   <li>
3973                     <span class="entry_type_enum_name">SNOW (v3.2)</span>
3974                     <span class="entry_type_enum_optional">[optional]</span>
3975                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
3976                   </li>
3977                   <li>
3978                     <span class="entry_type_enum_name">SUNSET (v3.2)</span>
3979                     <span class="entry_type_enum_optional">[optional]</span>
3980                     <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
3981                   </li>
3982                   <li>
3983                     <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
3984                     <span class="entry_type_enum_optional">[optional]</span>
3985                     <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
3986 device motion (for example: due to hand shake).<wbr/></p></span>
3987                   </li>
3988                   <li>
3989                     <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
3990                     <span class="entry_type_enum_optional">[optional]</span>
3991                     <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
3992                   </li>
3993                   <li>
3994                     <span class="entry_type_enum_name">SPORTS (v3.2)</span>
3995                     <span class="entry_type_enum_optional">[optional]</span>
3996                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
3997 <p>Similar to ACTION.<wbr/></p></span>
3998                   </li>
3999                   <li>
4000                     <span class="entry_type_enum_name">PARTY (v3.2)</span>
4001                     <span class="entry_type_enum_optional">[optional]</span>
4002                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
4003 people.<wbr/></p></span>
4004                   </li>
4005                   <li>
4006                     <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
4007                     <span class="entry_type_enum_optional">[optional]</span>
4008                     <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
4009 is a flame.<wbr/></p></span>
4010                   </li>
4011                   <li>
4012                     <span class="entry_type_enum_name">BARCODE (v3.2)</span>
4013                     <span class="entry_type_enum_optional">[optional]</span>
4014                     <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
4015 for use by camera applications that wish to read the
4016 barcode value.<wbr/></p></span>
4017                   </li>
4018                   <li>
4019                     <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
4020                     <span class="entry_type_enum_deprecated">[deprecated]</span>
4021                     <span class="entry_type_enum_optional">[optional]</span>
4022                     <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
4023 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
4024 for high speed video recording.<wbr/></p>
4025 <p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
4026 <p>The supported high speed video sizes and fps ranges are specified in
4027 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
4028 output frame rates,<wbr/> the application is only allowed to select video size
4029 and fps range combinations listed in this static metadata.<wbr/> The fps range
4030 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
4031 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
4032 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
4033 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
4034 and post-processing parameters is possible.<wbr/> All other controls operate the
4035 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
4036 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
4037 <ul>
4038 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
4039 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
4040 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
4041 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
4042 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
4043 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
4044 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
4045 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
4046 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
4047 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
4048 </ul>
4049 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
4050 <ul>
4051 <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>
4052 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
4053 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
4054 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
4055 </ul>
4056 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
4057 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
4058 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
4059 the application need check if the video encoder is capable of supporting the
4060 high frame rate for a given video size,<wbr/> or it will end up with lower recording
4061 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
4062 rate will be bounded by the screen refresh rate.<wbr/></p>
4063 <p>The camera device will only support up to 2 output high speed streams
4064 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
4065 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
4066 <ul>
4067 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
4068 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
4069 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>
4070 <li>The stream sizes are selected from the sizes reported by
4071 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
4072 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
4073 </ul>
4074 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
4075 <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/>
4076 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
4077 and the returned capture result metadata will give the fps range choosen
4078 by the camera device.<wbr/></p>
4079 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
4080 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
4081 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
4082                   </li>
4083                   <li>
4084                     <span class="entry_type_enum_name">HDR (v3.2)</span>
4085                     <span class="entry_type_enum_optional">[optional]</span>
4086                     <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
4087 <p>In this scene mode,<wbr/> the camera device captures images
4088 that keep a larger range of scene illumination levels
4089 visible in the final image.<wbr/> For example,<wbr/> when taking a
4090 picture of a object in front of a bright window,<wbr/> both
4091 the object and the scene through the window may be
4092 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
4093 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
4094 HDR mode generally takes much longer to capture a single
4095 image,<wbr/> has no user control,<wbr/> and may have other artifacts
4096 depending on the HDR method used.<wbr/></p>
4097 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
4098 than regular captures.<wbr/></p>
4099 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
4100 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
4101 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
4102 using a high dynamic range capture technique.<wbr/>  On LEGACY
4103 devices,<wbr/> captures that target a JPEG-format output will
4104 be captured with HDR,<wbr/> and the capture intent is not
4105 relevant.<wbr/></p>
4106 <p>The HDR capture may involve the device capturing a burst
4107 of images internally and combining them into one,<wbr/> or it
4108 may involve the device using specialized high dynamic
4109 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
4110 produced in response to a capture request submitted
4111 while in HDR mode.<wbr/></p>
4112 <p>Since substantial post-processing is generally needed to
4113 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
4114 outputs are supported for LIMITED/<wbr/>FULL device HDR
4115 captures,<wbr/> and only JPEG outputs are supported for LEGACY
4116 HDR captures.<wbr/> Using a RAW output for HDR capture is not
4117 supported.<wbr/></p>
4118 <p>Some devices may also support always-on HDR,<wbr/> which
4119 applies HDR processing at full frame rate.<wbr/>  For these
4120 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
4121 produce an HDR output with no frame rate impact compared
4122 to normal operation,<wbr/> though the quality may be lower
4123 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
4124 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
4125 or capture intents,<wbr/> the images captured will be as if
4126 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
4127                   </li>
4128                   <li>
4129                     <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
4130                     <span class="entry_type_enum_optional">[optional]</span>
4131                     <span class="entry_type_enum_hidden">[hidden]</span>
4132                     <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
4133 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
4134 under low light conditions.<wbr/></p>
4135 <p>The camera device may be tuned to expose the images in a reduced
4136 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
4137 if the <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> gives range of [100,<wbr/> 1600],<wbr/>
4138 the camera device auto-exposure routine tuning process may limit the actual
4139 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
4140 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
4141 low light may be under-exposed when the sensor max exposure time (bounded by the
4142 <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the
4143 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
4144 camera device auto-exposure routine to increase the sensitivity up to the max
4145 sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
4146 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
4147 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
4148 recommended that the application only use this scene mode when it is capable of
4149 reducing the noise level of the captured images.<wbr/></p>
4150 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4151 <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>
4152 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
4153                   </li>
4154                   <li>
4155                     <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
4156                     <span class="entry_type_enum_optional">[optional]</span>
4157                     <span class="entry_type_enum_hidden">[hidden]</span>
4158                     <span class="entry_type_enum_value">100</span>
4159                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4160 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4161 customized scene modes.<wbr/></p></span>
4162                   </li>
4163                   <li>
4164                     <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
4165                     <span class="entry_type_enum_optional">[optional]</span>
4166                     <span class="entry_type_enum_hidden">[hidden]</span>
4167                     <span class="entry_type_enum_value">127</span>
4168                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
4169 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
4170 customized scene modes.<wbr/></p></span>
4171                   </li>
4172                 </ul>
4173
4174             </td> <!-- entry_type -->
4175
4176             <td class="entry_description">
4177               <p>Control for which scene mode is currently active.<wbr/></p>
4178             </td>
4179
4180             <td class="entry_units">
4181             </td>
4182
4183             <td class="entry_range">
4184               <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
4185             </td>
4186
4187             <td class="entry_hal_version">
4188               <p>3.<wbr/>2</p>
4189             </td>
4190
4191             <td class="entry_tags">
4192               <ul class="entry_tags">
4193                   <li><a href="#tag_BC">BC</a></li>
4194               </ul>
4195             </td>
4196
4197           </tr>
4198           <tr class="entries_header">
4199             <th class="th_details" colspan="6">Details</th>
4200           </tr>
4201           <tr class="entry_cont">
4202             <td class="entry_details" colspan="6">
4203               <p>Scene modes are custom camera modes optimized for a certain set of conditions and
4204 capture settings.<wbr/></p>
4205 <p>This is the mode that that is active when
4206 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will
4207 disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
4208 while in use.<wbr/></p>
4209 <p>The interpretation and implementation of these scene modes is left
4210 to the implementor of the camera device.<wbr/> Their behavior will not be
4211 consistent across all devices,<wbr/> and any given device may only implement
4212 a subset of these modes.<wbr/></p>
4213             </td>
4214           </tr>
4215
4216           <tr class="entries_header">
4217             <th class="th_details" colspan="6">HAL Implementation Details</th>
4218           </tr>
4219           <tr class="entry_cont">
4220             <td class="entry_details" colspan="6">
4221               <p>HAL implementations that include scene modes are expected to provide
4222 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
4223 <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
4224 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
4225 <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/> the
4226 HAL must list supported video size and fps range in
4227 <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/>  1280x720,<wbr/>
4228 if the HAL has two different sensor configurations for normal streaming mode and high
4229 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
4230 HAL may have to switch between different sensor modes.<wbr/>  This mode is deprecated in legacy
4231 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
4232 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO
4233 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
4234             </td>
4235           </tr>
4236
4237           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4238            <!-- end of entry -->
4239         
4240                 
4241           <tr class="entry" id="controls_android.control.videoStabilizationMode">
4242             <td class="entry_name
4243              " rowspan="3">
4244               android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
4245             </td>
4246             <td class="entry_type">
4247                 <span class="entry_type_name entry_type_name_enum">byte</span>
4248
4249               <span class="entry_type_visibility"> [public]</span>
4250
4251
4252               <span class="entry_type_hwlevel">[legacy] </span>
4253
4254
4255
4256                 <ul class="entry_type_enum">
4257                   <li>
4258                     <span class="entry_type_enum_name">OFF (v3.2)</span>
4259                     <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
4260                   </li>
4261                   <li>
4262                     <span class="entry_type_enum_name">ON (v3.2)</span>
4263                     <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
4264                   </li>
4265                 </ul>
4266
4267             </td> <!-- entry_type -->
4268
4269             <td class="entry_description">
4270               <p>Whether video stabilization is
4271 active.<wbr/></p>
4272             </td>
4273
4274             <td class="entry_units">
4275             </td>
4276
4277             <td class="entry_range">
4278             </td>
4279
4280             <td class="entry_hal_version">
4281               <p>3.<wbr/>2</p>
4282             </td>
4283
4284             <td class="entry_tags">
4285               <ul class="entry_tags">
4286                   <li><a href="#tag_BC">BC</a></li>
4287               </ul>
4288             </td>
4289
4290           </tr>
4291           <tr class="entries_header">
4292             <th class="th_details" colspan="6">Details</th>
4293           </tr>
4294           <tr class="entry_cont">
4295             <td class="entry_details" colspan="6">
4296               <p>Video stabilization automatically warps images from
4297 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
4298 <p>If enabled,<wbr/> video stabilization can modify the
4299 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
4300 <p>Switching between different video stabilization modes may take several
4301 frames to initialize,<wbr/> the camera device will report the current mode
4302 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
4303 the video stabilization modes in the first several capture results may
4304 still be "OFF",<wbr/> and it will become "ON" when the initialization is
4305 done.<wbr/></p>
4306 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
4307 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
4308 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
4309 the recording resolution is less than or equal to 1920 x 1080 (width less than
4310 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
4311 frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
4312 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
4313 OFF if the recording output is not stabilized,<wbr/> or if there are no output
4314 Surface types that can be stabilized.<wbr/></p>
4315 <p>If a camera device supports both this mode and OIS
4316 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
4317 produce undesirable interaction,<wbr/> so it is recommended not to enable
4318 both at the same time.<wbr/></p>
4319             </td>
4320           </tr>
4321
4322
4323           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4324            <!-- end of entry -->
4325         
4326                 
4327           <tr class="entry" id="controls_android.control.postRawSensitivityBoost">
4328             <td class="entry_name
4329              " rowspan="3">
4330               android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
4331             </td>
4332             <td class="entry_type">
4333                 <span class="entry_type_name">int32</span>
4334
4335               <span class="entry_type_visibility"> [public]</span>
4336
4337
4338
4339
4340
4341
4342             </td> <!-- entry_type -->
4343
4344             <td class="entry_description">
4345               <p>The amount of additional sensitivity boost applied to output images
4346 after RAW sensor data is captured.<wbr/></p>
4347             </td>
4348
4349             <td class="entry_units">
4350               ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
4351             </td>
4352
4353             <td class="entry_range">
4354               <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
4355             </td>
4356
4357             <td class="entry_hal_version">
4358               <p>3.<wbr/>2</p>
4359             </td>
4360
4361             <td class="entry_tags">
4362             </td>
4363
4364           </tr>
4365           <tr class="entries_header">
4366             <th class="th_details" colspan="6">Details</th>
4367           </tr>
4368           <tr class="entry_cont">
4369             <td class="entry_details" colspan="6">
4370               <p>Some camera devices support additional digital sensitivity boosting in the
4371 camera processing pipeline after sensor RAW image is captured.<wbr/>
4372 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
4373 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
4374 <p>This key will be <code>null</code> for devices that do not support any RAW format
4375 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
4376 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
4377 list <code>100</code> in this key.<wbr/></p>
4378 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
4379 boost to the nearest supported value.<wbr/>
4380 The final boost value used will be available in the output capture result.<wbr/></p>
4381 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
4382 of such device will have the total sensitivity of
4383 <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> * <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> /<wbr/> 100</code>
4384 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
4385 <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
4386 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
4387             </td>
4388           </tr>
4389
4390
4391           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4392            <!-- end of entry -->
4393         
4394                 
4395           <tr class="entry" id="controls_android.control.enableZsl">
4396             <td class="entry_name
4397              " rowspan="5">
4398               android.<wbr/>control.<wbr/>enable<wbr/>Zsl
4399             </td>
4400             <td class="entry_type">
4401                 <span class="entry_type_name entry_type_name_enum">byte</span>
4402
4403               <span class="entry_type_visibility"> [public as boolean]</span>
4404
4405
4406
4407
4408
4409                 <ul class="entry_type_enum">
4410                   <li>
4411                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
4412                     <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE must be captured
4413 after previous requests.<wbr/></p></span>
4414                   </li>
4415                   <li>
4416                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
4417                     <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE may or may not be
4418 captured before previous requests.<wbr/></p></span>
4419                   </li>
4420                 </ul>
4421
4422             </td> <!-- entry_type -->
4423
4424             <td class="entry_description">
4425               <p>Allow camera device to enable zero-shutter-lag mode for requests with
4426 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
4427             </td>
4428
4429             <td class="entry_units">
4430             </td>
4431
4432             <td class="entry_range">
4433             </td>
4434
4435             <td class="entry_hal_version">
4436               <p>3.<wbr/>2</p>
4437             </td>
4438
4439             <td class="entry_tags">
4440             </td>
4441
4442           </tr>
4443           <tr class="entries_header">
4444             <th class="th_details" colspan="6">Details</th>
4445           </tr>
4446           <tr class="entry_cont">
4447             <td class="entry_details" colspan="6">
4448               <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
4449 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
4450 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
4451 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
4452 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
4453 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
4454 capture intents.<wbr/></p>
4455 <p>For example,<wbr/> when requests are submitted in the following order:
4456   Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
4457   Request B: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is STILL_<wbr/>CAPTURE</p>
4458 <p>The output images for request B may have contents captured before the output images for
4459 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
4460 request A.<wbr/></p>
4461 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
4462 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
4463 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
4464 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
4465 <code>false</code> if present.<wbr/></p>
4466 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
4467 capture templates is always <code>false</code> if present.<wbr/></p>
4468 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
4469             </td>
4470           </tr>
4471
4472           <tr class="entries_header">
4473             <th class="th_details" colspan="6">HAL Implementation Details</th>
4474           </tr>
4475           <tr class="entry_cont">
4476             <td class="entry_details" colspan="6">
4477               <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
4478 capture intent.<wbr/></p>
4479             </td>
4480           </tr>
4481
4482           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4483            <!-- end of entry -->
4484         
4485         
4486
4487       <!-- end of kind -->
4488       </tbody>
4489       <tr><td colspan="7" class="kind">static</td></tr>
4490
4491       <thead class="entries_header">
4492         <tr>
4493           <th class="th_name">Property Name</th>
4494           <th class="th_type">Type</th>
4495           <th class="th_description">Description</th>
4496           <th class="th_units">Units</th>
4497           <th class="th_range">Range</th>
4498           <th class="th_hal_version">Initial HIDL HAL version</th>
4499           <th class="th_tags">Tags</th>
4500         </tr>
4501       </thead>
4502
4503       <tbody>
4504
4505         
4506
4507         
4508
4509         
4510
4511         
4512
4513                 
4514           <tr class="entry" id="static_android.control.aeAvailableAntibandingModes">
4515             <td class="entry_name
4516              " rowspan="3">
4517               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes
4518             </td>
4519             <td class="entry_type">
4520                 <span class="entry_type_name">byte</span>
4521                 <span class="entry_type_container">x</span>
4522
4523                 <span class="entry_type_array">
4524                   n
4525                 </span>
4526               <span class="entry_type_visibility"> [public as enumList]</span>
4527
4528
4529               <span class="entry_type_hwlevel">[legacy] </span>
4530
4531
4532                 <div class="entry_type_notes">list of enums</div>
4533
4534
4535             </td> <!-- entry_type -->
4536
4537             <td class="entry_description">
4538               <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
4539 supported by this camera device.<wbr/></p>
4540             </td>
4541
4542             <td class="entry_units">
4543             </td>
4544
4545             <td class="entry_range">
4546               <p>Any value listed in <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a></p>
4547             </td>
4548
4549             <td class="entry_hal_version">
4550               <p>3.<wbr/>2</p>
4551             </td>
4552
4553             <td class="entry_tags">
4554               <ul class="entry_tags">
4555                   <li><a href="#tag_BC">BC</a></li>
4556               </ul>
4557             </td>
4558
4559           </tr>
4560           <tr class="entries_header">
4561             <th class="th_details" colspan="6">Details</th>
4562           </tr>
4563           <tr class="entry_cont">
4564             <td class="entry_details" colspan="6">
4565               <p>Not all of the auto-exposure anti-banding modes may be
4566 supported by a given camera device.<wbr/> This field lists the
4567 valid anti-banding modes that the application may request
4568 for this camera device with the
4569 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> control.<wbr/></p>
4570             </td>
4571           </tr>
4572
4573
4574           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4575            <!-- end of entry -->
4576         
4577                 
4578           <tr class="entry" id="static_android.control.aeAvailableModes">
4579             <td class="entry_name
4580              " rowspan="3">
4581               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes
4582             </td>
4583             <td class="entry_type">
4584                 <span class="entry_type_name">byte</span>
4585                 <span class="entry_type_container">x</span>
4586
4587                 <span class="entry_type_array">
4588                   n
4589                 </span>
4590               <span class="entry_type_visibility"> [public as enumList]</span>
4591
4592
4593               <span class="entry_type_hwlevel">[legacy] </span>
4594
4595
4596                 <div class="entry_type_notes">list of enums</div>
4597
4598
4599             </td> <!-- entry_type -->
4600
4601             <td class="entry_description">
4602               <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
4603 device.<wbr/></p>
4604             </td>
4605
4606             <td class="entry_units">
4607             </td>
4608
4609             <td class="entry_range">
4610               <p>Any value listed in <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a></p>
4611             </td>
4612
4613             <td class="entry_hal_version">
4614               <p>3.<wbr/>2</p>
4615             </td>
4616
4617             <td class="entry_tags">
4618               <ul class="entry_tags">
4619                   <li><a href="#tag_BC">BC</a></li>
4620               </ul>
4621             </td>
4622
4623           </tr>
4624           <tr class="entries_header">
4625             <th class="th_details" colspan="6">Details</th>
4626           </tr>
4627           <tr class="entry_cont">
4628             <td class="entry_details" colspan="6">
4629               <p>Not all the auto-exposure modes may be supported by a
4630 given camera device,<wbr/> especially if no flash unit is
4631 available.<wbr/> This entry lists the valid modes for
4632 <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> for this camera device.<wbr/></p>
4633 <p>All camera devices support ON,<wbr/> and all camera devices with flash
4634 units support ON_<wbr/>AUTO_<wbr/>FLASH and ON_<wbr/>ALWAYS_<wbr/>FLASH.<wbr/></p>
4635 <p>FULL mode camera devices always support OFF mode,<wbr/>
4636 which enables application control of camera exposure time,<wbr/>
4637 sensitivity,<wbr/> and frame duration.<wbr/></p>
4638 <p>LEGACY mode camera devices never support OFF mode.<wbr/>
4639 LIMITED mode devices support OFF if they support the MANUAL_<wbr/>SENSOR
4640 capability.<wbr/></p>
4641             </td>
4642           </tr>
4643
4644
4645           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4646            <!-- end of entry -->
4647         
4648                 
4649           <tr class="entry" id="static_android.control.aeAvailableTargetFpsRanges">
4650             <td class="entry_name
4651              " rowspan="3">
4652               android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges
4653             </td>
4654             <td class="entry_type">
4655                 <span class="entry_type_name">int32</span>
4656                 <span class="entry_type_container">x</span>
4657
4658                 <span class="entry_type_array">
4659                   2 x n
4660                 </span>
4661               <span class="entry_type_visibility"> [public as rangeInt]</span>
4662
4663
4664               <span class="entry_type_hwlevel">[legacy] </span>
4665
4666
4667                 <div class="entry_type_notes">list of pairs of frame rates</div>
4668
4669
4670             </td> <!-- entry_type -->
4671
4672             <td class="entry_description">
4673               <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
4674 this camera device.<wbr/></p>
4675             </td>
4676
4677             <td class="entry_units">
4678               Frames per second (FPS)
4679             </td>
4680
4681             <td class="entry_range">
4682             </td>
4683
4684             <td class="entry_hal_version">
4685               <p>3.<wbr/>2</p>
4686             </td>
4687
4688             <td class="entry_tags">
4689               <ul class="entry_tags">
4690                   <li><a href="#tag_BC">BC</a></li>
4691               </ul>
4692             </td>
4693
4694           </tr>
4695           <tr class="entries_header">
4696             <th class="th_details" colspan="6">Details</th>
4697           </tr>
4698           <tr class="entry_cont">
4699             <td class="entry_details" colspan="6">
4700               <p>For devices at the LEGACY level or above:</p>
4701 <ul>
4702 <li>
4703 <p>For constant-framerate recording,<wbr/> for each normal
4704 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/> that is,<wbr/> a
4705 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4706 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#quality">quality</a> in
4707 the range [<a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_LOW">QUALITY_<wbr/>LOW</a>,<wbr/>
4708 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#QUALITY_2160P">QUALITY_<wbr/>2160P</a>],<wbr/> if the profile is
4709 supported by the device and has
4710 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code>,<wbr/> this list will
4711 always include (<code>x</code>,<wbr/><code>x</code>).<wbr/></p>
4712 </li>
4713 <li>
4714 <p>Also,<wbr/> a camera device must either not support any
4715 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a>,<wbr/>
4716 or support at least one
4717 normal <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html">CamcorderProfile</a> that has
4718 <a href="https://developer.android.com/reference/android/media/CamcorderProfile.html#videoFrameRate">videoFrameRate</a> <code>x</code> &gt;= 24.<wbr/></p>
4719 </li>
4720 </ul>
4721 <p>For devices at the LIMITED level or above:</p>
4722 <ul>
4723 <li>For YUV_<wbr/>420_<wbr/>888 burst capture use case,<wbr/> this list will always include (<code>min</code>,<wbr/> <code>max</code>)
4724 and (<code>max</code>,<wbr/> <code>max</code>) where <code>min</code> &lt;= 15 and <code>max</code> = the maximum output frame rate of the
4725 maximum YUV_<wbr/>420_<wbr/>888 output size.<wbr/></li>
4726 </ul>
4727             </td>
4728           </tr>
4729
4730
4731           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4732            <!-- end of entry -->
4733         
4734                 
4735           <tr class="entry" id="static_android.control.aeCompensationRange">
4736             <td class="entry_name
4737              " rowspan="1">
4738               android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range
4739             </td>
4740             <td class="entry_type">
4741                 <span class="entry_type_name">int32</span>
4742                 <span class="entry_type_container">x</span>
4743
4744                 <span class="entry_type_array">
4745                   2
4746                 </span>
4747               <span class="entry_type_visibility"> [public as rangeInt]</span>
4748
4749
4750               <span class="entry_type_hwlevel">[legacy] </span>
4751
4752
4753
4754
4755             </td> <!-- entry_type -->
4756
4757             <td class="entry_description">
4758               <p>Maximum and minimum exposure compensation values for
4759 <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/>
4760 that are supported by this camera device.<wbr/></p>
4761             </td>
4762
4763             <td class="entry_units">
4764             </td>
4765
4766             <td class="entry_range">
4767               <p>Range [0,<wbr/>0] indicates that exposure compensation is not supported.<wbr/></p>
4768 <p>For LIMITED and FULL devices,<wbr/> range must follow below requirements if exposure
4769 compensation is supported (<code>range != [0,<wbr/> 0]</code>):</p>
4770 <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>
4771 <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>
4772 <p>LEGACY devices may support a smaller range than this.<wbr/></p>
4773             </td>
4774
4775             <td class="entry_hal_version">
4776               <p>3.<wbr/>2</p>
4777             </td>
4778
4779             <td class="entry_tags">
4780               <ul class="entry_tags">
4781                   <li><a href="#tag_BC">BC</a></li>
4782               </ul>
4783             </td>
4784
4785           </tr>
4786
4787
4788           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4789            <!-- end of entry -->
4790         
4791                 
4792           <tr class="entry" id="static_android.control.aeCompensationStep">
4793             <td class="entry_name
4794              " rowspan="5">
4795               android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step
4796             </td>
4797             <td class="entry_type">
4798                 <span class="entry_type_name">rational</span>
4799
4800               <span class="entry_type_visibility"> [public]</span>
4801
4802
4803               <span class="entry_type_hwlevel">[legacy] </span>
4804
4805
4806
4807
4808             </td> <!-- entry_type -->
4809
4810             <td class="entry_description">
4811               <p>Smallest step by which the exposure compensation
4812 can be changed.<wbr/></p>
4813             </td>
4814
4815             <td class="entry_units">
4816               Exposure Value (EV)
4817             </td>
4818
4819             <td class="entry_range">
4820             </td>
4821
4822             <td class="entry_hal_version">
4823               <p>3.<wbr/>2</p>
4824             </td>
4825
4826             <td class="entry_tags">
4827               <ul class="entry_tags">
4828                   <li><a href="#tag_BC">BC</a></li>
4829               </ul>
4830             </td>
4831
4832           </tr>
4833           <tr class="entries_header">
4834             <th class="th_details" colspan="6">Details</th>
4835           </tr>
4836           <tr class="entry_cont">
4837             <td class="entry_details" colspan="6">
4838               <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
4839 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
4840 that the target EV offset for the auto-exposure routine is -1 EV.<wbr/></p>
4841 <p>One unit of EV compensation changes the brightness of the captured image by a factor
4842 of two.<wbr/> +1 EV doubles the image brightness,<wbr/> while -1 EV halves the image brightness.<wbr/></p>
4843             </td>
4844           </tr>
4845
4846           <tr class="entries_header">
4847             <th class="th_details" colspan="6">HAL Implementation Details</th>
4848           </tr>
4849           <tr class="entry_cont">
4850             <td class="entry_details" colspan="6">
4851               <p>This must be less than or equal to 1/<wbr/>2.<wbr/></p>
4852             </td>
4853           </tr>
4854
4855           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4856            <!-- end of entry -->
4857         
4858                 
4859           <tr class="entry" id="static_android.control.afAvailableModes">
4860             <td class="entry_name
4861              " rowspan="3">
4862               android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes
4863             </td>
4864             <td class="entry_type">
4865                 <span class="entry_type_name">byte</span>
4866                 <span class="entry_type_container">x</span>
4867
4868                 <span class="entry_type_array">
4869                   n
4870                 </span>
4871               <span class="entry_type_visibility"> [public as enumList]</span>
4872
4873
4874               <span class="entry_type_hwlevel">[legacy] </span>
4875
4876
4877                 <div class="entry_type_notes">List of enums</div>
4878
4879
4880             </td> <!-- entry_type -->
4881
4882             <td class="entry_description">
4883               <p>List of auto-focus (AF) modes for <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> that are
4884 supported by this camera device.<wbr/></p>
4885             </td>
4886
4887             <td class="entry_units">
4888             </td>
4889
4890             <td class="entry_range">
4891               <p>Any value listed in <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a></p>
4892             </td>
4893
4894             <td class="entry_hal_version">
4895               <p>3.<wbr/>2</p>
4896             </td>
4897
4898             <td class="entry_tags">
4899               <ul class="entry_tags">
4900                   <li><a href="#tag_BC">BC</a></li>
4901               </ul>
4902             </td>
4903
4904           </tr>
4905           <tr class="entries_header">
4906             <th class="th_details" colspan="6">Details</th>
4907           </tr>
4908           <tr class="entry_cont">
4909             <td class="entry_details" colspan="6">
4910               <p>Not all the auto-focus modes may be supported by a
4911 given camera device.<wbr/> This entry lists the valid modes for
4912 <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> for this camera device.<wbr/></p>
4913 <p>All LIMITED and FULL mode camera devices will support OFF mode,<wbr/> and all
4914 camera devices with adjustable focuser units
4915 (<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>
4916 <p>LEGACY devices will support OFF mode only if they support
4917 focusing to infinity (by also setting <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> to
4918 <code>0.<wbr/>0f</code>).<wbr/></p>
4919             </td>
4920           </tr>
4921
4922
4923           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4924            <!-- end of entry -->
4925         
4926                 
4927           <tr class="entry" id="static_android.control.availableEffects">
4928             <td class="entry_name
4929              " rowspan="3">
4930               android.<wbr/>control.<wbr/>available<wbr/>Effects
4931             </td>
4932             <td class="entry_type">
4933                 <span class="entry_type_name">byte</span>
4934                 <span class="entry_type_container">x</span>
4935
4936                 <span class="entry_type_array">
4937                   n
4938                 </span>
4939               <span class="entry_type_visibility"> [public as enumList]</span>
4940
4941
4942               <span class="entry_type_hwlevel">[legacy] </span>
4943
4944
4945                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>effect<wbr/>Mode).<wbr/></div>
4946
4947
4948             </td> <!-- entry_type -->
4949
4950             <td class="entry_description">
4951               <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
4952 device.<wbr/></p>
4953             </td>
4954
4955             <td class="entry_units">
4956             </td>
4957
4958             <td class="entry_range">
4959               <p>Any value listed in <a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></p>
4960             </td>
4961
4962             <td class="entry_hal_version">
4963               <p>3.<wbr/>2</p>
4964             </td>
4965
4966             <td class="entry_tags">
4967               <ul class="entry_tags">
4968                   <li><a href="#tag_BC">BC</a></li>
4969               </ul>
4970             </td>
4971
4972           </tr>
4973           <tr class="entries_header">
4974             <th class="th_details" colspan="6">Details</th>
4975           </tr>
4976           <tr class="entry_cont">
4977             <td class="entry_details" colspan="6">
4978               <p>This list contains the color effect modes that can be applied to
4979 images produced by the camera device.<wbr/>
4980 Implementations are not expected to be consistent across all devices.<wbr/>
4981 If no color effect modes are available for a device,<wbr/> this will only list
4982 OFF.<wbr/></p>
4983 <p>A color effect will only be applied if
4984 <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF.<wbr/>  OFF is always included in this list.<wbr/></p>
4985 <p>This control has no effect on the operation of other control routines such
4986 as auto-exposure,<wbr/> white balance,<wbr/> or focus.<wbr/></p>
4987             </td>
4988           </tr>
4989
4990
4991           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
4992            <!-- end of entry -->
4993         
4994                 
4995           <tr class="entry" id="static_android.control.availableSceneModes">
4996             <td class="entry_name
4997              " rowspan="3">
4998               android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes
4999             </td>
5000             <td class="entry_type">
5001                 <span class="entry_type_name">byte</span>
5002                 <span class="entry_type_container">x</span>
5003
5004                 <span class="entry_type_array">
5005                   n
5006                 </span>
5007               <span class="entry_type_visibility"> [public as enumList]</span>
5008
5009
5010               <span class="entry_type_hwlevel">[legacy] </span>
5011
5012
5013                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>scene<wbr/>Mode).<wbr/></div>
5014
5015
5016             </td> <!-- entry_type -->
5017
5018             <td class="entry_description">
5019               <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
5020 device.<wbr/></p>
5021             </td>
5022
5023             <td class="entry_units">
5024             </td>
5025
5026             <td class="entry_range">
5027               <p>Any value listed in <a href="#controls_android.control.sceneMode">android.<wbr/>control.<wbr/>scene<wbr/>Mode</a></p>
5028             </td>
5029
5030             <td class="entry_hal_version">
5031               <p>3.<wbr/>2</p>
5032             </td>
5033
5034             <td class="entry_tags">
5035               <ul class="entry_tags">
5036                   <li><a href="#tag_BC">BC</a></li>
5037               </ul>
5038             </td>
5039
5040           </tr>
5041           <tr class="entries_header">
5042             <th class="th_details" colspan="6">Details</th>
5043           </tr>
5044           <tr class="entry_cont">
5045             <td class="entry_details" colspan="6">
5046               <p>This list contains scene modes that can be set for the camera device.<wbr/>
5047 Only scene modes that have been fully implemented for the
5048 camera device may be included here.<wbr/> Implementations are not expected
5049 to be consistent across all devices.<wbr/></p>
5050 <p>If no scene modes are supported by the camera device,<wbr/> this
5051 will be set to DISABLED.<wbr/> Otherwise DISABLED will not be listed.<wbr/></p>
5052 <p>FACE_<wbr/>PRIORITY is always listed if face detection is
5053 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;
5054 0</code>).<wbr/></p>
5055             </td>
5056           </tr>
5057
5058
5059           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5060            <!-- end of entry -->
5061         
5062                 
5063           <tr class="entry" id="static_android.control.availableVideoStabilizationModes">
5064             <td class="entry_name
5065              " rowspan="3">
5066               android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes
5067             </td>
5068             <td class="entry_type">
5069                 <span class="entry_type_name">byte</span>
5070                 <span class="entry_type_container">x</span>
5071
5072                 <span class="entry_type_array">
5073                   n
5074                 </span>
5075               <span class="entry_type_visibility"> [public as enumList]</span>
5076
5077
5078               <span class="entry_type_hwlevel">[legacy] </span>
5079
5080
5081                 <div class="entry_type_notes">List of enums.<wbr/></div>
5082
5083
5084             </td> <!-- entry_type -->
5085
5086             <td class="entry_description">
5087               <p>List of video stabilization modes for <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>
5088 that are supported by this camera device.<wbr/></p>
5089             </td>
5090
5091             <td class="entry_units">
5092             </td>
5093
5094             <td class="entry_range">
5095               <p>Any value listed in <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a></p>
5096             </td>
5097
5098             <td class="entry_hal_version">
5099               <p>3.<wbr/>2</p>
5100             </td>
5101
5102             <td class="entry_tags">
5103               <ul class="entry_tags">
5104                   <li><a href="#tag_BC">BC</a></li>
5105               </ul>
5106             </td>
5107
5108           </tr>
5109           <tr class="entries_header">
5110             <th class="th_details" colspan="6">Details</th>
5111           </tr>
5112           <tr class="entry_cont">
5113             <td class="entry_details" colspan="6">
5114               <p>OFF will always be listed.<wbr/></p>
5115             </td>
5116           </tr>
5117
5118
5119           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5120            <!-- end of entry -->
5121         
5122                 
5123           <tr class="entry" id="static_android.control.awbAvailableModes">
5124             <td class="entry_name
5125              " rowspan="3">
5126               android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes
5127             </td>
5128             <td class="entry_type">
5129                 <span class="entry_type_name">byte</span>
5130                 <span class="entry_type_container">x</span>
5131
5132                 <span class="entry_type_array">
5133                   n
5134                 </span>
5135               <span class="entry_type_visibility"> [public as enumList]</span>
5136
5137
5138               <span class="entry_type_hwlevel">[legacy] </span>
5139
5140
5141                 <div class="entry_type_notes">List of enums</div>
5142
5143
5144             </td> <!-- entry_type -->
5145
5146             <td class="entry_description">
5147               <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
5148 camera device.<wbr/></p>
5149             </td>
5150
5151             <td class="entry_units">
5152             </td>
5153
5154             <td class="entry_range">
5155               <p>Any value listed in <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a></p>
5156             </td>
5157
5158             <td class="entry_hal_version">
5159               <p>3.<wbr/>2</p>
5160             </td>
5161
5162             <td class="entry_tags">
5163               <ul class="entry_tags">
5164                   <li><a href="#tag_BC">BC</a></li>
5165               </ul>
5166             </td>
5167
5168           </tr>
5169           <tr class="entries_header">
5170             <th class="th_details" colspan="6">Details</th>
5171           </tr>
5172           <tr class="entry_cont">
5173             <td class="entry_details" colspan="6">
5174               <p>Not all the auto-white-balance modes may be supported by a
5175 given camera device.<wbr/> This entry lists the valid modes for
5176 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> for this camera device.<wbr/></p>
5177 <p>All camera devices will support ON mode.<wbr/></p>
5178 <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always support OFF
5179 mode,<wbr/> which enables application control of white balance,<wbr/> by using
5180 <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
5181 mode camera devices.<wbr/></p>
5182             </td>
5183           </tr>
5184
5185
5186           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5187            <!-- end of entry -->
5188         
5189                 
5190           <tr class="entry" id="static_android.control.maxRegions">
5191             <td class="entry_name
5192              " rowspan="1">
5193               android.<wbr/>control.<wbr/>max<wbr/>Regions
5194             </td>
5195             <td class="entry_type">
5196                 <span class="entry_type_name">int32</span>
5197                 <span class="entry_type_container">x</span>
5198
5199                 <span class="entry_type_array">
5200                   3
5201                 </span>
5202               <span class="entry_type_visibility"> [ndk_public]</span>
5203
5204
5205               <span class="entry_type_hwlevel">[legacy] </span>
5206
5207
5208
5209
5210             </td> <!-- entry_type -->
5211
5212             <td class="entry_description">
5213               <p>List of the maximum number of regions that can be used for metering in
5214 auto-exposure (AE),<wbr/> auto-white balance (AWB),<wbr/> and auto-focus (AF);
5215 this corresponds to the the maximum number of elements in
5216 <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/>
5217 and <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5218             </td>
5219
5220             <td class="entry_units">
5221             </td>
5222
5223             <td class="entry_range">
5224               <p>Value must be &gt;= 0 for each element.<wbr/> For full-capability devices
5225 this value must be &gt;= 1 for AE and AF.<wbr/> The order of the elements is:
5226 <code>(AE,<wbr/> AWB,<wbr/> AF)</code>.<wbr/></p>
5227             </td>
5228
5229             <td class="entry_hal_version">
5230               <p>3.<wbr/>2</p>
5231             </td>
5232
5233             <td class="entry_tags">
5234               <ul class="entry_tags">
5235                   <li><a href="#tag_BC">BC</a></li>
5236               </ul>
5237             </td>
5238
5239           </tr>
5240
5241
5242           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5243            <!-- end of entry -->
5244         
5245                 
5246           <tr class="entry" id="static_android.control.maxRegionsAe">
5247             <td class="entry_name
5248              " rowspan="5">
5249               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae
5250             </td>
5251             <td class="entry_type">
5252                 <span class="entry_type_name">int32</span>
5253
5254               <span class="entry_type_visibility"> [java_public]</span>
5255
5256               <span class="entry_type_synthetic">[synthetic] </span>
5257
5258               <span class="entry_type_hwlevel">[legacy] </span>
5259
5260
5261
5262
5263             </td> <!-- entry_type -->
5264
5265             <td class="entry_description">
5266               <p>The maximum number of metering regions that can be used by the auto-exposure (AE)
5267 routine.<wbr/></p>
5268             </td>
5269
5270             <td class="entry_units">
5271             </td>
5272
5273             <td class="entry_range">
5274               <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5275 value will be &gt;= 1.<wbr/></p>
5276             </td>
5277
5278             <td class="entry_hal_version">
5279               <p>3.<wbr/>2</p>
5280             </td>
5281
5282             <td class="entry_tags">
5283             </td>
5284
5285           </tr>
5286           <tr class="entries_header">
5287             <th class="th_details" colspan="6">Details</th>
5288           </tr>
5289           <tr class="entry_cont">
5290             <td class="entry_details" colspan="6">
5291               <p>This corresponds to the the maximum allowed number of elements in
5292 <a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a>.<wbr/></p>
5293             </td>
5294           </tr>
5295
5296           <tr class="entries_header">
5297             <th class="th_details" colspan="6">HAL Implementation Details</th>
5298           </tr>
5299           <tr class="entry_cont">
5300             <td class="entry_details" colspan="6">
5301               <p>This entry is private to the framework.<wbr/> Fill in
5302 maxRegions to have this entry be automatically populated.<wbr/></p>
5303             </td>
5304           </tr>
5305
5306           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5307            <!-- end of entry -->
5308         
5309                 
5310           <tr class="entry" id="static_android.control.maxRegionsAwb">
5311             <td class="entry_name
5312              " rowspan="5">
5313               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb
5314             </td>
5315             <td class="entry_type">
5316                 <span class="entry_type_name">int32</span>
5317
5318               <span class="entry_type_visibility"> [java_public]</span>
5319
5320               <span class="entry_type_synthetic">[synthetic] </span>
5321
5322               <span class="entry_type_hwlevel">[legacy] </span>
5323
5324
5325
5326
5327             </td> <!-- entry_type -->
5328
5329             <td class="entry_description">
5330               <p>The maximum number of metering regions that can be used by the auto-white balance (AWB)
5331 routine.<wbr/></p>
5332             </td>
5333
5334             <td class="entry_units">
5335             </td>
5336
5337             <td class="entry_range">
5338               <p>Value will be &gt;= 0.<wbr/></p>
5339             </td>
5340
5341             <td class="entry_hal_version">
5342               <p>3.<wbr/>2</p>
5343             </td>
5344
5345             <td class="entry_tags">
5346             </td>
5347
5348           </tr>
5349           <tr class="entries_header">
5350             <th class="th_details" colspan="6">Details</th>
5351           </tr>
5352           <tr class="entry_cont">
5353             <td class="entry_details" colspan="6">
5354               <p>This corresponds to the the maximum allowed number of elements in
5355 <a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a>.<wbr/></p>
5356             </td>
5357           </tr>
5358
5359           <tr class="entries_header">
5360             <th class="th_details" colspan="6">HAL Implementation Details</th>
5361           </tr>
5362           <tr class="entry_cont">
5363             <td class="entry_details" colspan="6">
5364               <p>This entry is private to the framework.<wbr/> Fill in
5365 maxRegions to have this entry be automatically populated.<wbr/></p>
5366             </td>
5367           </tr>
5368
5369           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5370            <!-- end of entry -->
5371         
5372                 
5373           <tr class="entry" id="static_android.control.maxRegionsAf">
5374             <td class="entry_name
5375              " rowspan="5">
5376               android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af
5377             </td>
5378             <td class="entry_type">
5379                 <span class="entry_type_name">int32</span>
5380
5381               <span class="entry_type_visibility"> [java_public]</span>
5382
5383               <span class="entry_type_synthetic">[synthetic] </span>
5384
5385               <span class="entry_type_hwlevel">[legacy] </span>
5386
5387
5388
5389
5390             </td> <!-- entry_type -->
5391
5392             <td class="entry_description">
5393               <p>The maximum number of metering regions that can be used by the auto-focus (AF) routine.<wbr/></p>
5394             </td>
5395
5396             <td class="entry_units">
5397             </td>
5398
5399             <td class="entry_range">
5400               <p>Value will be &gt;= 0.<wbr/> For FULL-capability devices,<wbr/> this
5401 value will be &gt;= 1.<wbr/></p>
5402             </td>
5403
5404             <td class="entry_hal_version">
5405               <p>3.<wbr/>2</p>
5406             </td>
5407
5408             <td class="entry_tags">
5409             </td>
5410
5411           </tr>
5412           <tr class="entries_header">
5413             <th class="th_details" colspan="6">Details</th>
5414           </tr>
5415           <tr class="entry_cont">
5416             <td class="entry_details" colspan="6">
5417               <p>This corresponds to the the maximum allowed number of elements in
5418 <a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a>.<wbr/></p>
5419             </td>
5420           </tr>
5421
5422           <tr class="entries_header">
5423             <th class="th_details" colspan="6">HAL Implementation Details</th>
5424           </tr>
5425           <tr class="entry_cont">
5426             <td class="entry_details" colspan="6">
5427               <p>This entry is private to the framework.<wbr/> Fill in
5428 maxRegions to have this entry be automatically populated.<wbr/></p>
5429             </td>
5430           </tr>
5431
5432           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5433            <!-- end of entry -->
5434         
5435                 
5436           <tr class="entry" id="static_android.control.sceneModeOverrides">
5437             <td class="entry_name
5438              " rowspan="5">
5439               android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides
5440             </td>
5441             <td class="entry_type">
5442                 <span class="entry_type_name">byte</span>
5443                 <span class="entry_type_container">x</span>
5444
5445                 <span class="entry_type_array">
5446                   3 x length(availableSceneModes)
5447                 </span>
5448               <span class="entry_type_visibility"> [system]</span>
5449
5450
5451               <span class="entry_type_hwlevel">[limited] </span>
5452
5453
5454
5455
5456             </td> <!-- entry_type -->
5457
5458             <td class="entry_description">
5459               <p>Ordered list of auto-exposure,<wbr/> auto-white balance,<wbr/> and auto-focus
5460 settings to use with each available scene mode.<wbr/></p>
5461             </td>
5462
5463             <td class="entry_units">
5464             </td>
5465
5466             <td class="entry_range">
5467               <p>For each available scene mode,<wbr/> the list must contain three
5468 entries containing the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5469 <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
5470 by the camera device.<wbr/> The entry order is <code>(aeMode,<wbr/> awbMode,<wbr/> afMode)</code>
5471 where aeMode has the lowest index position.<wbr/></p>
5472             </td>
5473
5474             <td class="entry_hal_version">
5475               <p>3.<wbr/>2</p>
5476             </td>
5477
5478             <td class="entry_tags">
5479               <ul class="entry_tags">
5480                   <li><a href="#tag_BC">BC</a></li>
5481               </ul>
5482             </td>
5483
5484           </tr>
5485           <tr class="entries_header">
5486             <th class="th_details" colspan="6">Details</th>
5487           </tr>
5488           <tr class="entry_cont">
5489             <td class="entry_details" colspan="6">
5490               <p>When a scene mode is enabled,<wbr/> the camera device is expected
5491 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/>
5492 and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> with its preferred settings for
5493 that scene mode.<wbr/></p>
5494 <p>The order of this list matches that of availableSceneModes,<wbr/>
5495 with 3 entries for each mode.<wbr/>  The overrides listed
5496 for FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) are ignored,<wbr/>
5497 since for that mode the application-set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5498 <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
5499 used instead,<wbr/> matching the behavior when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>
5500 is set to AUTO.<wbr/> It is recommended that the FACE_<wbr/>PRIORITY and
5501 FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported) overrides should be set to 0.<wbr/></p>
5502 <p>For example,<wbr/> if availableSceneModes contains
5503 <code>(FACE_<wbr/>PRIORITY,<wbr/> ACTION,<wbr/> NIGHT)</code>,<wbr/>  then the camera framework
5504 expects sceneModeOverrides to have 9 entries formatted like:
5505 <code>(0,<wbr/> 0,<wbr/> 0,<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> AUTO,<wbr/> CONTINUOUS_<wbr/>PICTURE,<wbr/>
5506 ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> INCANDESCENT,<wbr/> AUTO)</code>.<wbr/></p>
5507             </td>
5508           </tr>
5509
5510           <tr class="entries_header">
5511             <th class="th_details" colspan="6">HAL Implementation Details</th>
5512           </tr>
5513           <tr class="entry_cont">
5514             <td class="entry_details" colspan="6">
5515               <p>To maintain backward compatibility,<wbr/> this list will be made available
5516 in the static metadata of the camera service.<wbr/>  The camera service will
5517 use these values to set <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
5518 <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
5519 mode other than FACE_<wbr/>PRIORITY and FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT (if supported).<wbr/></p>
5520             </td>
5521           </tr>
5522
5523           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5524            <!-- end of entry -->
5525         
5526                 
5527           <tr class="entry" id="static_android.control.availableHighSpeedVideoConfigurations">
5528             <td class="entry_name
5529              " rowspan="5">
5530               android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations
5531             </td>
5532             <td class="entry_type">
5533                 <span class="entry_type_name">int32</span>
5534                 <span class="entry_type_container">x</span>
5535
5536                 <span class="entry_type_array">
5537                   5 x n
5538                 </span>
5539               <span class="entry_type_visibility"> [hidden as highSpeedVideoConfiguration]</span>
5540
5541
5542               <span class="entry_type_hwlevel">[limited] </span>
5543
5544
5545
5546
5547             </td> <!-- entry_type -->
5548
5549             <td class="entry_description">
5550               <p>List of available high speed video size,<wbr/> fps range and max batch size configurations
5551 supported by the camera device,<wbr/> in the format of (width,<wbr/> height,<wbr/> fps_<wbr/>min,<wbr/> fps_<wbr/>max,<wbr/> batch_<wbr/>size_<wbr/>max).<wbr/></p>
5552             </td>
5553
5554             <td class="entry_units">
5555             </td>
5556
5557             <td class="entry_range">
5558               <p>For each configuration,<wbr/> the fps_<wbr/>max &gt;= 120fps.<wbr/></p>
5559             </td>
5560
5561             <td class="entry_hal_version">
5562               <p>3.<wbr/>2</p>
5563             </td>
5564
5565             <td class="entry_tags">
5566               <ul class="entry_tags">
5567                   <li><a href="#tag_V1">V1</a></li>
5568               </ul>
5569             </td>
5570
5571           </tr>
5572           <tr class="entries_header">
5573             <th class="th_details" colspan="6">Details</th>
5574           </tr>
5575           <tr class="entry_cont">
5576             <td class="entry_details" colspan="6">
5577               <p>When CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO is supported in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>,<wbr/>
5578 this metadata will list the supported high speed video size,<wbr/> fps range and max batch size
5579 configurations.<wbr/> All the sizes listed in this configuration will be a subset of the sizes
5580 reported by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputSizes">StreamConfigurationMap#getOutputSizes</a>
5581 for processed non-stalling formats.<wbr/></p>
5582 <p>For the high speed video use case,<wbr/> the application must
5583 select the video size and fps range from this metadata to configure the recording and
5584 preview streams and setup the recording requests.<wbr/> For example,<wbr/> if the application intends
5585 to do high speed recording,<wbr/> it can select the maximum size reported by this metadata to
5586 configure output streams.<wbr/> Once the size is selected,<wbr/> application can filter this metadata
5587 by selected size and get the supported fps ranges,<wbr/> and use these fps ranges to setup the
5588 recording requests.<wbr/> Note that for the use case of multiple output streams,<wbr/> application
5589 must select one unique size from this metadata to use (e.<wbr/>g.,<wbr/> preview and recording streams
5590 must have the same size).<wbr/> Otherwise,<wbr/> the high speed capture session creation will fail.<wbr/></p>
5591 <p>The min and max fps will be multiple times of 30fps.<wbr/></p>
5592 <p>High speed video streaming extends significant performance pressue to camera hardware,<wbr/>
5593 to achieve efficient high speed streaming,<wbr/> the camera device may have to aggregate
5594 multiple frames together and send to camera device for processing where the request
5595 controls are same for all the frames in this batch.<wbr/> Max batch size indicates
5596 the max possible number of frames the camera device will group together for this high
5597 speed stream configuration.<wbr/> This max batch size will be used to generate a high speed
5598 recording request list by
5599 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/>
5600 The max batch size for each configuration will satisfy below conditions:</p>
5601 <ul>
5602 <li>Each max batch size will be a divisor of its corresponding fps_<wbr/>max /<wbr/> 30.<wbr/> For example,<wbr/>
5603 if max_<wbr/>fps is 300,<wbr/> max batch size will only be 1,<wbr/> 2,<wbr/> 5,<wbr/> or 10.<wbr/></li>
5604 <li>The camera device may choose smaller internal batch size for each configuration,<wbr/> but
5605 the actual batch size will be a divisor of max batch size.<wbr/> For example,<wbr/> if the max batch
5606 size is 8,<wbr/> the actual batch size used by camera device will only be 1,<wbr/> 2,<wbr/> 4,<wbr/> or 8.<wbr/></li>
5607 <li>The max batch size in each configuration entry must be no larger than 32.<wbr/></li>
5608 </ul>
5609 <p>The camera device doesn't have to support batch mode to achieve high speed video recording,<wbr/>
5610 in such case,<wbr/> batch_<wbr/>size_<wbr/>max will be reported as 1 in each configuration entry.<wbr/></p>
5611 <p>This fps ranges in this configuration list can only be used to create requests
5612 that are submitted to a high speed camera capture session created by
5613 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/>
5614 The fps ranges reported in this metadata must not be used to setup capture requests for
5615 normal capture session,<wbr/> or it will cause request error.<wbr/></p>
5616             </td>
5617           </tr>
5618
5619           <tr class="entries_header">
5620             <th class="th_details" colspan="6">HAL Implementation Details</th>
5621           </tr>
5622           <tr class="entry_cont">
5623             <td class="entry_details" colspan="6">
5624               <p>All the sizes listed in this configuration will be a subset of the sizes reported by
5625 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> for processed non-stalling output formats.<wbr/>
5626 Note that for all high speed video configurations,<wbr/> HAL must be able to support a minimum
5627 of two streams,<wbr/> though the application might choose to configure just one stream.<wbr/></p>
5628 <p>The HAL may support multiple sensor modes for high speed outputs,<wbr/> for example,<wbr/> 120fps
5629 sensor mode and 120fps recording,<wbr/> 240fps sensor mode for 240fps recording.<wbr/> The application
5630 usually starts preview first,<wbr/> then starts recording.<wbr/> To avoid sensor mode switch caused
5631 stutter when starting recording as much as possible,<wbr/> the application may want to ensure
5632 the same sensor mode is used for preview and recording.<wbr/> Therefore,<wbr/> The HAL must advertise
5633 the variable fps range [30,<wbr/> fps_<wbr/>max] for each fixed fps range in this configuration list.<wbr/>
5634 For example,<wbr/> if the HAL advertises [120,<wbr/> 120] and [240,<wbr/> 240],<wbr/> the HAL must also advertise
5635 [30,<wbr/> 120] and [30,<wbr/> 240] for each configuration.<wbr/> In doing so,<wbr/> if the application intends to
5636 do 120fps recording,<wbr/> it can select [30,<wbr/> 120] to start preview,<wbr/> and [120,<wbr/> 120] to start
5637 recording.<wbr/> For these variable fps ranges,<wbr/> it's up to the HAL to decide the actual fps
5638 values that are suitable for smooth preview streaming.<wbr/> If the HAL sees different max_<wbr/>fps
5639 values that fall into different sensor modes in a sequence of requests,<wbr/> the HAL must
5640 switch the sensor mode as quick as possible to minimize the mode switch caused stutter.<wbr/></p>
5641             </td>
5642           </tr>
5643
5644           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5645            <!-- end of entry -->
5646         
5647                 
5648           <tr class="entry" id="static_android.control.aeLockAvailable">
5649             <td class="entry_name
5650              " rowspan="3">
5651               android.<wbr/>control.<wbr/>ae<wbr/>Lock<wbr/>Available
5652             </td>
5653             <td class="entry_type">
5654                 <span class="entry_type_name entry_type_name_enum">byte</span>
5655
5656               <span class="entry_type_visibility"> [public as boolean]</span>
5657
5658
5659               <span class="entry_type_hwlevel">[legacy] </span>
5660
5661
5662
5663                 <ul class="entry_type_enum">
5664                   <li>
5665                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
5666                   </li>
5667                   <li>
5668                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
5669                   </li>
5670                 </ul>
5671
5672             </td> <!-- entry_type -->
5673
5674             <td class="entry_description">
5675               <p>Whether the camera device supports <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></p>
5676             </td>
5677
5678             <td class="entry_units">
5679             </td>
5680
5681             <td class="entry_range">
5682             </td>
5683
5684             <td class="entry_hal_version">
5685               <p>3.<wbr/>2</p>
5686             </td>
5687
5688             <td class="entry_tags">
5689               <ul class="entry_tags">
5690                   <li><a href="#tag_BC">BC</a></li>
5691               </ul>
5692             </td>
5693
5694           </tr>
5695           <tr class="entries_header">
5696             <th class="th_details" colspan="6">Details</th>
5697           </tr>
5698           <tr class="entry_cont">
5699             <td class="entry_details" colspan="6">
5700               <p>Devices with MANUAL_<wbr/>SENSOR capability or BURST_<wbr/>CAPTURE capability will always
5701 list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5702             </td>
5703           </tr>
5704
5705
5706           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5707            <!-- end of entry -->
5708         
5709                 
5710           <tr class="entry" id="static_android.control.awbLockAvailable">
5711             <td class="entry_name
5712              " rowspan="3">
5713               android.<wbr/>control.<wbr/>awb<wbr/>Lock<wbr/>Available
5714             </td>
5715             <td class="entry_type">
5716                 <span class="entry_type_name entry_type_name_enum">byte</span>
5717
5718               <span class="entry_type_visibility"> [public as boolean]</span>
5719
5720
5721               <span class="entry_type_hwlevel">[legacy] </span>
5722
5723
5724
5725                 <ul class="entry_type_enum">
5726                   <li>
5727                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
5728                   </li>
5729                   <li>
5730                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
5731                   </li>
5732                 </ul>
5733
5734             </td> <!-- entry_type -->
5735
5736             <td class="entry_description">
5737               <p>Whether the camera device supports <a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></p>
5738             </td>
5739
5740             <td class="entry_units">
5741             </td>
5742
5743             <td class="entry_range">
5744             </td>
5745
5746             <td class="entry_hal_version">
5747               <p>3.<wbr/>2</p>
5748             </td>
5749
5750             <td class="entry_tags">
5751               <ul class="entry_tags">
5752                   <li><a href="#tag_BC">BC</a></li>
5753               </ul>
5754             </td>
5755
5756           </tr>
5757           <tr class="entries_header">
5758             <th class="th_details" colspan="6">Details</th>
5759           </tr>
5760           <tr class="entry_cont">
5761             <td class="entry_details" colspan="6">
5762               <p>Devices with MANUAL_<wbr/>POST_<wbr/>PROCESSING capability or BURST_<wbr/>CAPTURE capability will
5763 always list <code>true</code>.<wbr/> This includes FULL devices.<wbr/></p>
5764             </td>
5765           </tr>
5766
5767
5768           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5769            <!-- end of entry -->
5770         
5771                 
5772           <tr class="entry" id="static_android.control.availableModes">
5773             <td class="entry_name
5774              " rowspan="3">
5775               android.<wbr/>control.<wbr/>available<wbr/>Modes
5776             </td>
5777             <td class="entry_type">
5778                 <span class="entry_type_name">byte</span>
5779                 <span class="entry_type_container">x</span>
5780
5781                 <span class="entry_type_array">
5782                   n
5783                 </span>
5784               <span class="entry_type_visibility"> [public as enumList]</span>
5785
5786
5787               <span class="entry_type_hwlevel">[legacy] </span>
5788
5789
5790                 <div class="entry_type_notes">List of enums (android.<wbr/>control.<wbr/>mode).<wbr/></div>
5791
5792
5793             </td> <!-- entry_type -->
5794
5795             <td class="entry_description">
5796               <p>List of control modes for <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> that are supported by this camera
5797 device.<wbr/></p>
5798             </td>
5799
5800             <td class="entry_units">
5801             </td>
5802
5803             <td class="entry_range">
5804               <p>Any value listed in <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a></p>
5805             </td>
5806
5807             <td class="entry_hal_version">
5808               <p>3.<wbr/>2</p>
5809             </td>
5810
5811             <td class="entry_tags">
5812             </td>
5813
5814           </tr>
5815           <tr class="entries_header">
5816             <th class="th_details" colspan="6">Details</th>
5817           </tr>
5818           <tr class="entry_cont">
5819             <td class="entry_details" colspan="6">
5820               <p>This list contains control modes that can be set for the camera device.<wbr/>
5821 LEGACY mode devices will always support AUTO mode.<wbr/> LIMITED and FULL
5822 devices will always support OFF,<wbr/> AUTO modes.<wbr/></p>
5823             </td>
5824           </tr>
5825
5826
5827           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5828            <!-- end of entry -->
5829         
5830                 
5831           <tr class="entry" id="static_android.control.postRawSensitivityBoostRange">
5832             <td class="entry_name
5833              " rowspan="5">
5834               android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range
5835             </td>
5836             <td class="entry_type">
5837                 <span class="entry_type_name">int32</span>
5838                 <span class="entry_type_container">x</span>
5839
5840                 <span class="entry_type_array">
5841                   2
5842                 </span>
5843               <span class="entry_type_visibility"> [public as rangeInt]</span>
5844
5845
5846
5847
5848                 <div class="entry_type_notes">Range of supported post RAW sensitivitiy boosts</div>
5849
5850
5851             </td> <!-- entry_type -->
5852
5853             <td class="entry_description">
5854               <p>Range of boosts for <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> supported
5855 by this camera device.<wbr/></p>
5856             </td>
5857
5858             <td class="entry_units">
5859               ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
5860             </td>
5861
5862             <td class="entry_range">
5863             </td>
5864
5865             <td class="entry_hal_version">
5866               <p>3.<wbr/>2</p>
5867             </td>
5868
5869             <td class="entry_tags">
5870             </td>
5871
5872           </tr>
5873           <tr class="entries_header">
5874             <th class="th_details" colspan="6">Details</th>
5875           </tr>
5876           <tr class="entry_cont">
5877             <td class="entry_details" colspan="6">
5878               <p>Devices support post RAW sensitivity boost  will advertise
5879 <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> key for controling
5880 post RAW sensitivity boost.<wbr/></p>
5881 <p>This key will be <code>null</code> for devices that do not support any RAW format
5882 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
5883 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
5884 list <code>(100,<wbr/> 100)</code> in this key.<wbr/></p>
5885             </td>
5886           </tr>
5887
5888           <tr class="entries_header">
5889             <th class="th_details" colspan="6">HAL Implementation Details</th>
5890           </tr>
5891           <tr class="entry_cont">
5892             <td class="entry_details" colspan="6">
5893               <p>This key is added in legacy HAL3.<wbr/>4.<wbr/> For legacy HAL3.<wbr/>3 or earlier devices,<wbr/> camera
5894 framework will generate this key as <code>(100,<wbr/> 100)</code> if device supports any of RAW output
5895 formats.<wbr/>  All legacy HAL3.<wbr/>4 and above devices should list this key if device supports
5896 any of RAW output formats.<wbr/></p>
5897             </td>
5898           </tr>
5899
5900           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5901            <!-- end of entry -->
5902         
5903         
5904
5905       <!-- end of kind -->
5906       </tbody>
5907       <tr><td colspan="7" class="kind">dynamic</td></tr>
5908
5909       <thead class="entries_header">
5910         <tr>
5911           <th class="th_name">Property Name</th>
5912           <th class="th_type">Type</th>
5913           <th class="th_description">Description</th>
5914           <th class="th_units">Units</th>
5915           <th class="th_range">Range</th>
5916           <th class="th_hal_version">Initial HIDL HAL version</th>
5917           <th class="th_tags">Tags</th>
5918         </tr>
5919       </thead>
5920
5921       <tbody>
5922
5923         
5924
5925         
5926
5927         
5928
5929         
5930
5931                 
5932           <tr class="entry" id="dynamic_android.control.aePrecaptureId">
5933             <td class="entry_name
5934                 entry_name_deprecated
5935              " rowspan="3">
5936               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Id
5937             </td>
5938             <td class="entry_type">
5939                 <span class="entry_type_name">int32</span>
5940
5941               <span class="entry_type_visibility"> [system]</span>
5942
5943
5944
5945               <span class="entry_type_deprecated">[deprecated] </span>
5946
5947
5948
5949             </td> <!-- entry_type -->
5950
5951             <td class="entry_description">
5952               <p>The ID sent with the latest
5953 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING call</p>
5954             </td>
5955
5956             <td class="entry_units">
5957             </td>
5958
5959             <td class="entry_range">
5960               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
5961             </td>
5962
5963             <td class="entry_hal_version">
5964               <p>3.<wbr/>2</p>
5965             </td>
5966
5967             <td class="entry_tags">
5968             </td>
5969
5970           </tr>
5971           <tr class="entries_header">
5972             <th class="th_details" colspan="6">Details</th>
5973           </tr>
5974           <tr class="entry_cont">
5975             <td class="entry_details" colspan="6">
5976               <p>Must be 0 if no
5977 CAMERA2_<wbr/>TRIGGER_<wbr/>PRECAPTURE_<wbr/>METERING trigger received yet
5978 by HAL.<wbr/> Always updated even if AE algorithm ignores the
5979 trigger</p>
5980             </td>
5981           </tr>
5982
5983
5984           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
5985            <!-- end of entry -->
5986         
5987                 
5988           <tr class="entry" id="dynamic_android.control.aeAntibandingMode">
5989             <td class="entry_name
5990              " rowspan="5">
5991               android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode
5992             </td>
5993             <td class="entry_type">
5994                 <span class="entry_type_name entry_type_name_enum">byte</span>
5995
5996               <span class="entry_type_visibility"> [public]</span>
5997
5998
5999               <span class="entry_type_hwlevel">[legacy] </span>
6000
6001
6002
6003                 <ul class="entry_type_enum">
6004                   <li>
6005                     <span class="entry_type_enum_name">OFF (v3.2)</span>
6006                     <span class="entry_type_enum_notes"><p>The camera device will not adjust exposure duration to
6007 avoid banding problems.<wbr/></p></span>
6008                   </li>
6009                   <li>
6010                     <span class="entry_type_enum_name">50HZ (v3.2)</span>
6011                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
6012 avoid banding problems with 50Hz illumination sources.<wbr/></p></span>
6013                   </li>
6014                   <li>
6015                     <span class="entry_type_enum_name">60HZ (v3.2)</span>
6016                     <span class="entry_type_enum_notes"><p>The camera device will adjust exposure duration to
6017 avoid banding problems with 60Hz illumination
6018 sources.<wbr/></p></span>
6019                   </li>
6020                   <li>
6021                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
6022                     <span class="entry_type_enum_notes"><p>The camera device will automatically adapt its
6023 antibanding routine to the current illumination
6024 condition.<wbr/> This is the default mode if AUTO is
6025 available on given camera device.<wbr/></p></span>
6026                   </li>
6027                 </ul>
6028
6029             </td> <!-- entry_type -->
6030
6031             <td class="entry_description">
6032               <p>The desired setting for the camera device's auto-exposure
6033 algorithm's antibanding compensation.<wbr/></p>
6034             </td>
6035
6036             <td class="entry_units">
6037             </td>
6038
6039             <td class="entry_range">
6040               <p><a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a></p>
6041             </td>
6042
6043             <td class="entry_hal_version">
6044               <p>3.<wbr/>2</p>
6045             </td>
6046
6047             <td class="entry_tags">
6048               <ul class="entry_tags">
6049                   <li><a href="#tag_BC">BC</a></li>
6050               </ul>
6051             </td>
6052
6053           </tr>
6054           <tr class="entries_header">
6055             <th class="th_details" colspan="6">Details</th>
6056           </tr>
6057           <tr class="entry_cont">
6058             <td class="entry_details" colspan="6">
6059               <p>Some kinds of lighting fixtures,<wbr/> such as some fluorescent
6060 lights,<wbr/> flicker at the rate of the power supply frequency
6061 (60Hz or 50Hz,<wbr/> depending on country).<wbr/> While this is
6062 typically not noticeable to a person,<wbr/> it can be visible to
6063 a camera device.<wbr/> If a camera sets its exposure time to the
6064 wrong value,<wbr/> the flicker may become visible in the
6065 viewfinder as flicker or in a final captured image,<wbr/> as a
6066 set of variable-brightness bands across the image.<wbr/></p>
6067 <p>Therefore,<wbr/> the auto-exposure routines of camera devices
6068 include antibanding routines that ensure that the chosen
6069 exposure value will not cause such banding.<wbr/> The choice of
6070 exposure time depends on the rate of flicker,<wbr/> which the
6071 camera device can detect automatically,<wbr/> or the expected
6072 rate can be selected by the application using this
6073 control.<wbr/></p>
6074 <p>A given camera device may not support all of the possible
6075 options for the antibanding mode.<wbr/> The
6076 <a href="#static_android.control.aeAvailableAntibandingModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Antibanding<wbr/>Modes</a> key contains
6077 the available modes for a given camera device.<wbr/></p>
6078 <p>AUTO mode is the default if it is available on given
6079 camera device.<wbr/> When AUTO mode is not available,<wbr/> the
6080 default will be either 50HZ or 60HZ,<wbr/> and both 50HZ
6081 and 60HZ will be available.<wbr/></p>
6082 <p>If manual exposure control is enabled (by setting
6083 <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/>
6084 then this setting has no effect,<wbr/> and the application must
6085 ensure it selects exposure times that do not cause banding
6086 issues.<wbr/> The <a href="#dynamic_android.statistics.sceneFlicker">android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker</a> key can assist
6087 the application in this.<wbr/></p>
6088             </td>
6089           </tr>
6090
6091           <tr class="entries_header">
6092             <th class="th_details" colspan="6">HAL Implementation Details</th>
6093           </tr>
6094           <tr class="entry_cont">
6095             <td class="entry_details" colspan="6">
6096               <p>For all capture request templates,<wbr/> this field must be set
6097 to AUTO if AUTO mode is available.<wbr/> If AUTO is not available,<wbr/>
6098 the default must be either 50HZ or 60HZ,<wbr/> and both 50HZ and
6099 60HZ must be available.<wbr/></p>
6100 <p>If manual exposure control is enabled (by setting
6101 <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/>
6102 then the exposure values provided by the application must not be
6103 adjusted for antibanding.<wbr/></p>
6104             </td>
6105           </tr>
6106
6107           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6108            <!-- end of entry -->
6109         
6110                 
6111           <tr class="entry" id="dynamic_android.control.aeExposureCompensation">
6112             <td class="entry_name
6113              " rowspan="3">
6114               android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation
6115             </td>
6116             <td class="entry_type">
6117                 <span class="entry_type_name">int32</span>
6118
6119               <span class="entry_type_visibility"> [public]</span>
6120
6121
6122               <span class="entry_type_hwlevel">[legacy] </span>
6123
6124
6125
6126
6127             </td> <!-- entry_type -->
6128
6129             <td class="entry_description">
6130               <p>Adjustment to auto-exposure (AE) target image
6131 brightness.<wbr/></p>
6132             </td>
6133
6134             <td class="entry_units">
6135               Compensation steps
6136             </td>
6137
6138             <td class="entry_range">
6139               <p><a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a></p>
6140             </td>
6141
6142             <td class="entry_hal_version">
6143               <p>3.<wbr/>2</p>
6144             </td>
6145
6146             <td class="entry_tags">
6147               <ul class="entry_tags">
6148                   <li><a href="#tag_BC">BC</a></li>
6149               </ul>
6150             </td>
6151
6152           </tr>
6153           <tr class="entries_header">
6154             <th class="th_details" colspan="6">Details</th>
6155           </tr>
6156           <tr class="entry_cont">
6157             <td class="entry_details" colspan="6">
6158               <p>The adjustment is measured as a count of steps,<wbr/> with the
6159 step size defined by <a href="#static_android.control.aeCompensationStep">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Step</a> and the
6160 allowed range by <a href="#static_android.control.aeCompensationRange">android.<wbr/>control.<wbr/>ae<wbr/>Compensation<wbr/>Range</a>.<wbr/></p>
6161 <p>For example,<wbr/> if the exposure value (EV) step is 0.<wbr/>333,<wbr/> '6'
6162 will mean an exposure compensation of +2 EV; -3 will mean an
6163 exposure compensation of -1 EV.<wbr/> One EV represents a doubling
6164 of image brightness.<wbr/> Note that this control will only be
6165 effective if <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>!=</code> OFF.<wbr/> This control
6166 will take effect even when <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> <code>== true</code>.<wbr/></p>
6167 <p>In the event of exposure compensation value being changed,<wbr/> camera device
6168 may take several frames to reach the newly requested exposure target.<wbr/>
6169 During that time,<wbr/> <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> field will be in the SEARCHING
6170 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
6171 change from SEARCHING to either CONVERGED,<wbr/> LOCKED (if AE lock is enabled),<wbr/> or
6172 FLASH_<wbr/>REQUIRED (if the scene is too dark for still capture).<wbr/></p>
6173             </td>
6174           </tr>
6175
6176
6177           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6178            <!-- end of entry -->
6179         
6180                 
6181           <tr class="entry" id="dynamic_android.control.aeLock">
6182             <td class="entry_name
6183              " rowspan="3">
6184               android.<wbr/>control.<wbr/>ae<wbr/>Lock
6185             </td>
6186             <td class="entry_type">
6187                 <span class="entry_type_name entry_type_name_enum">byte</span>
6188
6189               <span class="entry_type_visibility"> [public as boolean]</span>
6190
6191
6192               <span class="entry_type_hwlevel">[legacy] </span>
6193
6194
6195
6196                 <ul class="entry_type_enum">
6197                   <li>
6198                     <span class="entry_type_enum_name">OFF (v3.2)</span>
6199                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is disabled; the AE algorithm
6200 is free to update its parameters.<wbr/></p></span>
6201                   </li>
6202                   <li>
6203                     <span class="entry_type_enum_name">ON (v3.2)</span>
6204                     <span class="entry_type_enum_notes"><p>Auto-exposure lock is enabled; the AE algorithm
6205 must not update the exposure and sensitivity parameters
6206 while the lock is active.<wbr/></p>
6207 <p><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a> setting changes
6208 will still take effect while auto-exposure is locked.<wbr/></p>
6209 <p>Some rare LEGACY devices may not support
6210 this,<wbr/> in which case the value will always be overridden to OFF.<wbr/></p></span>
6211                   </li>
6212                 </ul>
6213
6214             </td> <!-- entry_type -->
6215
6216             <td class="entry_description">
6217               <p>Whether auto-exposure (AE) is currently locked to its latest
6218 calculated values.<wbr/></p>
6219             </td>
6220
6221             <td class="entry_units">
6222             </td>
6223
6224             <td class="entry_range">
6225             </td>
6226
6227             <td class="entry_hal_version">
6228               <p>3.<wbr/>2</p>
6229             </td>
6230
6231             <td class="entry_tags">
6232               <ul class="entry_tags">
6233                   <li><a href="#tag_BC">BC</a></li>
6234               </ul>
6235             </td>
6236
6237           </tr>
6238           <tr class="entries_header">
6239             <th class="th_details" colspan="6">Details</th>
6240           </tr>
6241           <tr class="entry_cont">
6242             <td class="entry_details" colspan="6">
6243               <p>When set to <code>true</code> (ON),<wbr/> the AE algorithm is locked to its latest parameters,<wbr/>
6244 and will not change exposure settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
6245 <p>Note that even when AE is locked,<wbr/> the flash may be fired if
6246 the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is ON_<wbr/>AUTO_<wbr/>FLASH /<wbr/>
6247 ON_<wbr/>ALWAYS_<wbr/>FLASH /<wbr/> ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE.<wbr/></p>
6248 <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
6249 is ON,<wbr/> the camera device will still adjust its exposure value.<wbr/></p>
6250 <p>If AE precapture is triggered (see <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>)
6251 when AE is already locked,<wbr/> the camera device will not change the exposure time
6252 (<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>)
6253 parameters.<wbr/> The flash may be fired if the <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>
6254 is ON_<wbr/>AUTO_<wbr/>FLASH/<wbr/>ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE and the scene is too dark.<wbr/> If the
6255 <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/>
6256 Similarly,<wbr/> AE precapture trigger CANCEL has no effect when AE is already locked.<wbr/></p>
6257 <p>When an AE precapture sequence is triggered,<wbr/> AE unlock will not be able to unlock
6258 the AE if AE is locked by the camera device internally during precapture metering
6259 sequence In other words,<wbr/> submitting requests with AE unlock has no effect for an
6260 ongoing precapture metering sequence.<wbr/> Otherwise,<wbr/> the precapture metering sequence
6261 will never succeed in a sequence of preview requests where AE lock is always set
6262 to <code>false</code>.<wbr/></p>
6263 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
6264 get locked do not necessarily correspond to the settings that were present in the
6265 latest capture result received from the camera device,<wbr/> since additional captures
6266 and AE updates may have occurred even before the result was sent out.<wbr/> If an
6267 application is switching between automatic and manual control and wishes to eliminate
6268 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
6269 <ol>
6270 <li>Starting in auto-AE mode:</li>
6271 <li>Lock AE</li>
6272 <li>Wait for the first result to be output that has the AE locked</li>
6273 <li>Copy exposure settings from that result into a request,<wbr/> set the request to manual AE</li>
6274 <li>Submit the capture request,<wbr/> proceed to run manual AE as desired.<wbr/></li>
6275 </ol>
6276 <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>
6277             </td>
6278           </tr>
6279
6280
6281           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6282            <!-- end of entry -->
6283         
6284                 
6285           <tr class="entry" id="dynamic_android.control.aeMode">
6286             <td class="entry_name
6287              " rowspan="3">
6288               android.<wbr/>control.<wbr/>ae<wbr/>Mode
6289             </td>
6290             <td class="entry_type">
6291                 <span class="entry_type_name entry_type_name_enum">byte</span>
6292
6293               <span class="entry_type_visibility"> [public]</span>
6294
6295
6296               <span class="entry_type_hwlevel">[legacy] </span>
6297
6298
6299
6300                 <ul class="entry_type_enum">
6301                   <li>
6302                     <span class="entry_type_enum_name">OFF (v3.2)</span>
6303                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is disabled.<wbr/></p>
6304 <p>The application-selected <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6305 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> and
6306 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are used by the camera
6307 device,<wbr/> along with android.<wbr/>flash.<wbr/>* fields,<wbr/> if there's
6308 a flash unit for this camera device.<wbr/></p>
6309 <p>Note that auto-white balance (AWB) and auto-focus (AF)
6310 behavior is device dependent when AE is in OFF mode.<wbr/>
6311 To have consistent behavior across different devices,<wbr/>
6312 it is recommended to either set AWB and AF to OFF mode
6313 or lock AWB and AF before setting AE to OFF.<wbr/>
6314 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/>
6315 <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>
6316 for more details.<wbr/></p>
6317 <p>LEGACY devices do not support the OFF mode and will
6318 override attempts to use this value to ON.<wbr/></p></span>
6319                   </li>
6320                   <li>
6321                     <span class="entry_type_enum_name">ON (v3.2)</span>
6322                     <span class="entry_type_enum_notes"><p>The camera device's autoexposure routine is active,<wbr/>
6323 with no flash control.<wbr/></p>
6324 <p>The application's values for
6325 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6326 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6327 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> are ignored.<wbr/> The
6328 application has control over the various
6329 android.<wbr/>flash.<wbr/>* fields.<wbr/></p></span>
6330                   </li>
6331                   <li>
6332                     <span class="entry_type_enum_name">ON_AUTO_FLASH (v3.2)</span>
6333                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6334 the camera's flash unit,<wbr/> firing it in low-light
6335 conditions.<wbr/></p>
6336 <p>The flash may be fired during a precapture sequence
6337 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6338 may be fired for captures for which the
6339 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6340 STILL_<wbr/>CAPTURE</p></span>
6341                   </li>
6342                   <li>
6343                     <span class="entry_type_enum_name">ON_ALWAYS_FLASH (v3.2)</span>
6344                     <span class="entry_type_enum_notes"><p>Like ON,<wbr/> except that the camera device also controls
6345 the camera's flash unit,<wbr/> always firing it for still
6346 captures.<wbr/></p>
6347 <p>The flash may be fired during a precapture sequence
6348 (triggered by <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>) and
6349 will always be fired for captures for which the
6350 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> field is set to
6351 STILL_<wbr/>CAPTURE</p></span>
6352                   </li>
6353                   <li>
6354                     <span class="entry_type_enum_name">ON_AUTO_FLASH_REDEYE (v3.2)</span>
6355                     <span class="entry_type_enum_notes"><p>Like ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/> but with automatic red eye
6356 reduction.<wbr/></p>
6357 <p>If deemed necessary by the camera device,<wbr/> a red eye
6358 reduction flash will fire during the precapture
6359 sequence.<wbr/></p></span>
6360                   </li>
6361                   <li>
6362                     <span class="entry_type_enum_name">ON_EXTERNAL_FLASH (v3.3)</span>
6363                     <span class="entry_type_enum_notes"><p>An external flash has been turned on.<wbr/></p>
6364 <p>It informs the camera device that an external flash has been turned on,<wbr/> and that
6365 metering (and continuous focus if active) should be quickly recaculated to account
6366 for the external flash.<wbr/> Otherwise,<wbr/> this mode acts like ON.<wbr/></p>
6367 <p>When the external flash is turned off,<wbr/> AE mode should be changed to one of the
6368 other available AE modes.<wbr/></p>
6369 <p>If the camera device supports AE external flash mode,<wbr/> aeState must be
6370 FLASH_<wbr/>REQUIRED after the camera device finishes AE scan and it's too dark without
6371 flash.<wbr/></p></span>
6372                   </li>
6373                 </ul>
6374
6375             </td> <!-- entry_type -->
6376
6377             <td class="entry_description">
6378               <p>The desired mode for the camera device's
6379 auto-exposure routine.<wbr/></p>
6380             </td>
6381
6382             <td class="entry_units">
6383             </td>
6384
6385             <td class="entry_range">
6386               <p><a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a></p>
6387             </td>
6388
6389             <td class="entry_hal_version">
6390               <p>3.<wbr/>2</p>
6391             </td>
6392
6393             <td class="entry_tags">
6394               <ul class="entry_tags">
6395                   <li><a href="#tag_BC">BC</a></li>
6396               </ul>
6397             </td>
6398
6399           </tr>
6400           <tr class="entries_header">
6401             <th class="th_details" colspan="6">Details</th>
6402           </tr>
6403           <tr class="entry_cont">
6404             <td class="entry_details" colspan="6">
6405               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is
6406 AUTO.<wbr/></p>
6407 <p>When set to any of the ON modes,<wbr/> the camera device's
6408 auto-exposure routine is enabled,<wbr/> overriding the
6409 application's selected exposure time,<wbr/> sensor sensitivity,<wbr/>
6410 and frame duration (<a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
6411 <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>,<wbr/> and
6412 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>).<wbr/> If one of the FLASH modes
6413 is selected,<wbr/> the camera device's flash unit controls are
6414 also overridden.<wbr/></p>
6415 <p>The FLASH modes are only available if the camera device
6416 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>
6417 <p>If flash TORCH mode is desired,<wbr/> this field must be set to
6418 ON or OFF,<wbr/> and <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> set to TORCH.<wbr/></p>
6419 <p>When set to any of the ON modes,<wbr/> the values chosen by the
6420 camera device auto-exposure routine for the overridden
6421 fields for a given capture will be available in its
6422 CaptureResult.<wbr/></p>
6423             </td>
6424           </tr>
6425
6426
6427           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6428            <!-- end of entry -->
6429         
6430                 
6431           <tr class="entry" id="dynamic_android.control.aeRegions">
6432             <td class="entry_name
6433              " rowspan="5">
6434               android.<wbr/>control.<wbr/>ae<wbr/>Regions
6435             </td>
6436             <td class="entry_type">
6437                 <span class="entry_type_name">int32</span>
6438                 <span class="entry_type_container">x</span>
6439
6440                 <span class="entry_type_array">
6441                   5 x area_count
6442                 </span>
6443               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
6444
6445
6446
6447
6448
6449
6450             </td> <!-- entry_type -->
6451
6452             <td class="entry_description">
6453               <p>List of metering areas to use for auto-exposure adjustment.<wbr/></p>
6454             </td>
6455
6456             <td class="entry_units">
6457               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
6458             </td>
6459
6460             <td class="entry_range">
6461               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
6462 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
6463             </td>
6464
6465             <td class="entry_hal_version">
6466               <p>3.<wbr/>2</p>
6467             </td>
6468
6469             <td class="entry_tags">
6470               <ul class="entry_tags">
6471                   <li><a href="#tag_BC">BC</a></li>
6472               </ul>
6473             </td>
6474
6475           </tr>
6476           <tr class="entries_header">
6477             <th class="th_details" colspan="6">Details</th>
6478           </tr>
6479           <tr class="entry_cont">
6480             <td class="entry_details" colspan="6">
6481               <p>Not available if <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a> is 0.<wbr/>
6482 Otherwise will always be present.<wbr/></p>
6483 <p>The maximum number of regions supported by the device is determined by the value
6484 of <a href="#static_android.control.maxRegionsAe">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Ae</a>.<wbr/></p>
6485 <p>The coordinate system is based on the active pixel array,<wbr/>
6486 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
6487 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
6488 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
6489 bottom-right pixel in the active pixel array.<wbr/></p>
6490 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
6491 for every pixel in the area.<wbr/> This means that a large metering area
6492 with the same weight as a smaller area will have more effect in
6493 the metering result.<wbr/> Metering areas can partially overlap and the
6494 camera device will add the weights in the overlap region.<wbr/></p>
6495 <p>The weights are relative to weights of other exposure metering regions,<wbr/> so if only one
6496 region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0
6497 weight is ignored.<wbr/></p>
6498 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
6499 camera device.<wbr/></p>
6500 <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
6501 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
6502 region and output only the intersection rectangle as the metering region in the result
6503 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
6504 not reported in the result metadata.<wbr/></p>
6505             </td>
6506           </tr>
6507
6508           <tr class="entries_header">
6509             <th class="th_details" colspan="6">HAL Implementation Details</th>
6510           </tr>
6511           <tr class="entry_cont">
6512             <td class="entry_details" colspan="6">
6513               <p>The HAL level representation of MeteringRectangle[] is a
6514 int[5 * area_<wbr/>count].<wbr/>
6515 Every five elements represent a metering region of
6516 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
6517 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
6518 exclusive on xmax and ymax.<wbr/></p>
6519             </td>
6520           </tr>
6521
6522           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6523            <!-- end of entry -->
6524         
6525                 
6526           <tr class="entry" id="dynamic_android.control.aeTargetFpsRange">
6527             <td class="entry_name
6528              " rowspan="3">
6529               android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range
6530             </td>
6531             <td class="entry_type">
6532                 <span class="entry_type_name">int32</span>
6533                 <span class="entry_type_container">x</span>
6534
6535                 <span class="entry_type_array">
6536                   2
6537                 </span>
6538               <span class="entry_type_visibility"> [public as rangeInt]</span>
6539
6540
6541               <span class="entry_type_hwlevel">[legacy] </span>
6542
6543
6544
6545
6546             </td> <!-- entry_type -->
6547
6548             <td class="entry_description">
6549               <p>Range over which the auto-exposure routine can
6550 adjust the capture frame rate to maintain good
6551 exposure.<wbr/></p>
6552             </td>
6553
6554             <td class="entry_units">
6555               Frames per second (FPS)
6556             </td>
6557
6558             <td class="entry_range">
6559               <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>
6560             </td>
6561
6562             <td class="entry_hal_version">
6563               <p>3.<wbr/>2</p>
6564             </td>
6565
6566             <td class="entry_tags">
6567               <ul class="entry_tags">
6568                   <li><a href="#tag_BC">BC</a></li>
6569               </ul>
6570             </td>
6571
6572           </tr>
6573           <tr class="entries_header">
6574             <th class="th_details" colspan="6">Details</th>
6575           </tr>
6576           <tr class="entry_cont">
6577             <td class="entry_details" colspan="6">
6578               <p>Only constrains auto-exposure (AE) algorithm,<wbr/> not
6579 manual control of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> and
6580 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a>.<wbr/></p>
6581             </td>
6582           </tr>
6583
6584
6585           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6586            <!-- end of entry -->
6587         
6588                 
6589           <tr class="entry" id="dynamic_android.control.aePrecaptureTrigger">
6590             <td class="entry_name
6591              " rowspan="5">
6592               android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger
6593             </td>
6594             <td class="entry_type">
6595                 <span class="entry_type_name entry_type_name_enum">byte</span>
6596
6597               <span class="entry_type_visibility"> [public]</span>
6598
6599
6600               <span class="entry_type_hwlevel">[limited] </span>
6601
6602
6603
6604                 <ul class="entry_type_enum">
6605                   <li>
6606                     <span class="entry_type_enum_name">IDLE (v3.2)</span>
6607                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
6608                   </li>
6609                   <li>
6610                     <span class="entry_type_enum_name">START (v3.2)</span>
6611                     <span class="entry_type_enum_notes"><p>The precapture metering sequence will be started
6612 by the camera device.<wbr/></p>
6613 <p>The exact effect of the precapture trigger depends on
6614 the current AE mode and state.<wbr/></p></span>
6615                   </li>
6616                   <li>
6617                     <span class="entry_type_enum_name">CANCEL (v3.2)</span>
6618                     <span class="entry_type_enum_notes"><p>The camera device will cancel any currently active or completed
6619 precapture metering sequence,<wbr/> the auto-exposure routine will return to its
6620 initial state.<wbr/></p></span>
6621                   </li>
6622                 </ul>
6623
6624             </td> <!-- entry_type -->
6625
6626             <td class="entry_description">
6627               <p>Whether the camera device will trigger a precapture
6628 metering sequence when it processes this request.<wbr/></p>
6629             </td>
6630
6631             <td class="entry_units">
6632             </td>
6633
6634             <td class="entry_range">
6635             </td>
6636
6637             <td class="entry_hal_version">
6638               <p>3.<wbr/>2</p>
6639             </td>
6640
6641             <td class="entry_tags">
6642               <ul class="entry_tags">
6643                   <li><a href="#tag_BC">BC</a></li>
6644               </ul>
6645             </td>
6646
6647           </tr>
6648           <tr class="entries_header">
6649             <th class="th_details" colspan="6">Details</th>
6650           </tr>
6651           <tr class="entry_cont">
6652             <td class="entry_details" colspan="6">
6653               <p>This entry is normally set to IDLE,<wbr/> or is not
6654 included at all in the request settings.<wbr/> When included and
6655 set to START,<wbr/> the camera device will trigger the auto-exposure (AE)
6656 precapture metering sequence.<wbr/></p>
6657 <p>When set to CANCEL,<wbr/> the camera device will cancel any active
6658 precapture metering trigger,<wbr/> and return to its initial AE state.<wbr/>
6659 If a precapture metering sequence is already completed,<wbr/> and the camera
6660 device has implicitly locked the AE for subsequent still capture,<wbr/> the
6661 CANCEL trigger will unlock the AE and return to its initial AE state.<wbr/></p>
6662 <p>The precapture sequence should be triggered before starting a
6663 high-quality still capture for final metering decisions to
6664 be made,<wbr/> and for firing pre-capture flash pulses to estimate
6665 scene brightness and required final capture flash power,<wbr/> when
6666 the flash is enabled.<wbr/></p>
6667 <p>Normally,<wbr/> this entry should be set to START for only a
6668 single request,<wbr/> and the application should wait until the
6669 sequence completes before starting a new one.<wbr/></p>
6670 <p>When a precapture metering sequence is finished,<wbr/> the camera device
6671 may lock the auto-exposure routine internally to be able to accurately expose the
6672 subsequent still capture image (<code><a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE</code>).<wbr/>
6673 For this case,<wbr/> the AE may not resume normal scan if no subsequent still capture is
6674 submitted.<wbr/> To ensure that the AE routine restarts normal scan,<wbr/> the application should
6675 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
6676 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
6677 still capture request after the precapture sequence completes.<wbr/> Alternatively,<wbr/> for
6678 API level 23 or newer devices,<wbr/> the CANCEL can be used to unlock the camera device
6679 internally locked AE if the application doesn't submit a still capture request after
6680 the AE precapture trigger.<wbr/> Note that,<wbr/> the CANCEL was added in API level 23,<wbr/> and must not
6681 be used in devices that have earlier API levels.<wbr/></p>
6682 <p>The exact effect of auto-exposure (AE) precapture trigger
6683 depends on the current AE mode and state; see
6684 <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> for AE precapture state transition
6685 details.<wbr/></p>
6686 <p>On LEGACY-level devices,<wbr/> the precapture trigger is not supported;
6687 capturing a high-resolution JPEG image will automatically trigger a
6688 precapture sequence before the high-resolution capture,<wbr/> including
6689 potentially firing a pre-capture flash.<wbr/></p>
6690 <p>Using the precapture trigger and the auto-focus trigger <a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>
6691 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
6692 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
6693 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
6694 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
6695 changes to <a href="#dynamic_android.control.aeState">android.<wbr/>control.<wbr/>ae<wbr/>State</a> indicating the start of the precapture sequence,<wbr/> for
6696 example.<wbr/></p>
6697 <p>If both the precapture and the auto-focus trigger are activated on the same request,<wbr/> then
6698 the camera device will complete them in the optimal order for that device.<wbr/></p>
6699             </td>
6700           </tr>
6701
6702           <tr class="entries_header">
6703             <th class="th_details" colspan="6">HAL Implementation Details</th>
6704           </tr>
6705           <tr class="entry_cont">
6706             <td class="entry_details" colspan="6">
6707               <p>The HAL must support triggering the AE precapture trigger while an AF trigger is active
6708 (and vice versa),<wbr/> or at the same time as the AF trigger.<wbr/>  It is acceptable for the HAL to
6709 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
6710 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
6711 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
6712             </td>
6713           </tr>
6714
6715           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
6716            <!-- end of entry -->
6717         
6718                 
6719           <tr class="entry" id="dynamic_android.control.aeState">
6720             <td class="entry_name
6721              " rowspan="3">
6722               android.<wbr/>control.<wbr/>ae<wbr/>State
6723             </td>
6724             <td class="entry_type">
6725                 <span class="entry_type_name entry_type_name_enum">byte</span>
6726
6727               <span class="entry_type_visibility"> [public]</span>
6728
6729
6730               <span class="entry_type_hwlevel">[limited] </span>
6731
6732
6733
6734                 <ul class="entry_type_enum">
6735                   <li>
6736                     <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
6737                     <span class="entry_type_enum_notes"><p>AE is off or recently reset.<wbr/></p>
6738 <p>When a camera device is opened,<wbr/> it starts in
6739 this state.<wbr/> This is a transient state,<wbr/> the camera device may skip reporting
6740 this state in capture result.<wbr/></p></span>
6741                   </li>
6742                   <li>
6743                     <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
6744                     <span class="entry_type_enum_notes"><p>AE doesn't yet have a good set of control values
6745 for the current scene.<wbr/></p>
6746 <p>This is a transient state,<wbr/> the camera device may skip
6747 reporting this state in capture result.<wbr/></p></span>
6748                   </li>
6749                   <li>
6750                     <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
6751                     <span class="entry_type_enum_notes"><p>AE has a good set of control values for the
6752 current scene.<wbr/></p></span>
6753                   </li>
6754                   <li>
6755                     <span class="entry_type_enum_name">LOCKED (v3.2)</span>
6756                     <span class="entry_type_enum_notes"><p>AE has been locked.<wbr/></p></span>
6757                   </li>
6758                   <li>
6759                     <span class="entry_type_enum_name">FLASH_REQUIRED (v3.2)</span>
6760                     <span class="entry_type_enum_notes"><p>AE has a good set of control values,<wbr/> but flash
6761 needs to be fired for good quality still
6762 capture.<wbr/></p></span>
6763                   </li>
6764                   <li>
6765                     <span class="entry_type_enum_name">PRECAPTURE (v3.2)</span>
6766                     <span class="entry_type_enum_notes"><p>AE has been asked to do a precapture sequence
6767 and is currently executing it.<wbr/></p>
6768 <p>Precapture can be triggered through setting
6769 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to START.<wbr/> Currently
6770 active and completed (if it causes camera device internal AE lock) precapture
6771 metering sequence can be canceled through setting
6772 <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> to CANCEL.<wbr/></p>
6773 <p>Once PRECAPTURE completes,<wbr/> AE will transition to CONVERGED
6774 or FLASH_<wbr/>REQUIRED as appropriate.<wbr/> This is a transient
6775 state,<wbr/> the camera device may skip reporting this state in
6776 capture result.<wbr/></p></span>
6777                   </li>
6778                 </ul>
6779
6780             </td> <!-- entry_type -->
6781
6782             <td class="entry_description">
6783               <p>Current state of the auto-exposure (AE) algorithm.<wbr/></p>
6784             </td>
6785
6786             <td class="entry_units">
6787             </td>
6788
6789             <td class="entry_range">
6790             </td>
6791
6792             <td class="entry_hal_version">
6793               <p>3.<wbr/>2</p>
6794             </td>
6795
6796             <td class="entry_tags">
6797             </td>
6798
6799           </tr>
6800           <tr class="entries_header">
6801             <th class="th_details" colspan="6">Details</th>
6802           </tr>
6803           <tr class="entry_cont">
6804             <td class="entry_details" colspan="6">
6805               <p>Switching between or enabling AE modes (<a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>) always
6806 resets the AE state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
6807 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
6808 the algorithm states to INACTIVE.<wbr/></p>
6809 <p>The camera device can do several state transitions between two results,<wbr/> if it is
6810 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
6811 seen in a result.<wbr/></p>
6812 <p>The state in the result is the state for this image (in sync with this image): if
6813 AE state becomes CONVERGED,<wbr/> then the image data associated with this result should
6814 be good to use.<wbr/></p>
6815 <p>Below are state transition tables for different AE modes.<wbr/></p>
6816 <table>
6817 <thead>
6818 <tr>
6819 <th align="center">State</th>
6820 <th align="center">Transition Cause</th>
6821 <th align="center">New State</th>
6822 <th align="center">Notes</th>
6823 </tr>
6824 </thead>
6825 <tbody>
6826 <tr>
6827 <td align="center">INACTIVE</td>
6828 <td align="center"></td>
6829 <td align="center">INACTIVE</td>
6830 <td align="center">Camera device auto exposure algorithm is disabled</td>
6831 </tr>
6832 </tbody>
6833 </table>
6834 <p>When <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is AE_<wbr/>MODE_<wbr/>ON*:</p>
6835 <table>
6836 <thead>
6837 <tr>
6838 <th align="center">State</th>
6839 <th align="center">Transition Cause</th>
6840 <th align="center">New State</th>
6841 <th align="center">Notes</th>
6842 </tr>
6843 </thead>
6844 <tbody>
6845 <tr>
6846 <td align="center">INACTIVE</td>
6847 <td align="center">Camera device initiates AE scan</td>
6848 <td align="center">SEARCHING</td>
6849 <td align="center">Values changing</td>
6850 </tr>
6851 <tr>
6852 <td align="center">INACTIVE</td>
6853 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6854 <td align="center">LOCKED</td>
6855 <td align="center">Values locked</td>
6856 </tr>
6857 <tr>
6858 <td align="center">SEARCHING</td>
6859 <td align="center">Camera device finishes AE scan</td>
6860 <td align="center">CONVERGED</td>
6861 <td align="center">Good values,<wbr/> not changing</td>
6862 </tr>
6863 <tr>
6864 <td align="center">SEARCHING</td>
6865 <td align="center">Camera device finishes AE scan</td>
6866 <td align="center">FLASH_<wbr/>REQUIRED</td>
6867 <td align="center">Converged but too dark w/<wbr/>o flash</td>
6868 </tr>
6869 <tr>
6870 <td align="center">SEARCHING</td>
6871 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6872 <td align="center">LOCKED</td>
6873 <td align="center">Values locked</td>
6874 </tr>
6875 <tr>
6876 <td align="center">CONVERGED</td>
6877 <td align="center">Camera device initiates AE scan</td>
6878 <td align="center">SEARCHING</td>
6879 <td align="center">Values changing</td>
6880 </tr>
6881 <tr>
6882 <td align="center">CONVERGED</td>
6883 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6884 <td align="center">LOCKED</td>
6885 <td align="center">Values locked</td>
6886 </tr>
6887 <tr>
6888 <td align="center">FLASH_<wbr/>REQUIRED</td>
6889 <td align="center">Camera device initiates AE scan</td>
6890 <td align="center">SEARCHING</td>
6891 <td align="center">Values changing</td>
6892 </tr>
6893 <tr>
6894 <td align="center">FLASH_<wbr/>REQUIRED</td>
6895 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6896 <td align="center">LOCKED</td>
6897 <td align="center">Values locked</td>
6898 </tr>
6899 <tr>
6900 <td align="center">LOCKED</td>
6901 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6902 <td align="center">SEARCHING</td>
6903 <td align="center">Values not good after unlock</td>
6904 </tr>
6905 <tr>
6906 <td align="center">LOCKED</td>
6907 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6908 <td align="center">CONVERGED</td>
6909 <td align="center">Values good after unlock</td>
6910 </tr>
6911 <tr>
6912 <td align="center">LOCKED</td>
6913 <td align="center"><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6914 <td align="center">FLASH_<wbr/>REQUIRED</td>
6915 <td align="center">Exposure good,<wbr/> but too dark</td>
6916 </tr>
6917 <tr>
6918 <td align="center">PRECAPTURE</td>
6919 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is OFF</td>
6920 <td align="center">CONVERGED</td>
6921 <td align="center">Ready for high-quality capture</td>
6922 </tr>
6923 <tr>
6924 <td align="center">PRECAPTURE</td>
6925 <td align="center">Sequence done.<wbr/> <a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a> is ON</td>
6926 <td align="center">LOCKED</td>
6927 <td align="center">Ready for high-quality capture</td>
6928 </tr>
6929 <tr>
6930 <td align="center">LOCKED</td>
6931 <td align="center">aeLock is ON and aePrecaptureTrigger is START</td>
6932 <td align="center">LOCKED</td>
6933 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6934 </tr>
6935 <tr>
6936 <td align="center">LOCKED</td>
6937 <td align="center">aeLock is ON and aePrecaptureTrigger is CANCEL</td>
6938 <td align="center">LOCKED</td>
6939 <td align="center">Precapture trigger is ignored when AE is already locked</td>
6940 </tr>
6941 <tr>
6942 <td align="center">Any state (excluding LOCKED)</td>
6943 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is START</td>
6944 <td align="center">PRECAPTURE</td>
6945 <td align="center">Start AE precapture metering sequence</td>
6946 </tr>
6947 <tr>
6948 <td align="center">Any state (excluding LOCKED)</td>
6949 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL</td>
6950 <td align="center">INACTIVE</td>
6951 <td align="center">Currently active precapture metering sequence is canceled</td>
6952 </tr>
6953 </tbody>
6954 </table>
6955 <p>If the camera device supports AE external flash mode (ON_<wbr/>EXTERNAL_<wbr/>FLASH is included in
6956 <a href="#static_android.control.aeAvailableModes">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Modes</a>),<wbr/> aeState must be FLASH_<wbr/>REQUIRED after the camera device
6957 finishes AE scan and it's too dark without flash.<wbr/></p>
6958 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
6959 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
6960 can be skipped in that manner is called a transient state.<wbr/></p>
6961 <p>For example,<wbr/> for above AE modes (AE_<wbr/>MODE_<wbr/>ON*),<wbr/> in addition to the state transitions
6962 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
6963 transient states between two results.<wbr/> See below table for examples:</p>
6964 <table>
6965 <thead>
6966 <tr>
6967 <th align="center">State</th>
6968 <th align="center">Transition Cause</th>
6969 <th align="center">New State</th>
6970 <th align="center">Notes</th>
6971 </tr>
6972 </thead>
6973 <tbody>
6974 <tr>
6975 <td align="center">INACTIVE</td>
6976 <td align="center">Camera device finished AE scan</td>
6977 <td align="center">CONVERGED</td>
6978 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
6979 </tr>
6980 <tr>
6981 <td align="center">Any state (excluding LOCKED)</td>
6982 <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>
6983 <td align="center">FLASH_<wbr/>REQUIRED</td>
6984 <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>
6985 </tr>
6986 <tr>
6987 <td align="center">Any state (excluding LOCKED)</td>
6988 <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>
6989 <td align="center">CONVERGED</td>
6990 <td align="center">Converged after a precapture sequence,<wbr/> transient states are skipped by camera device.<wbr/></td>
6991 </tr>
6992 <tr>
6993 <td align="center">Any state (excluding LOCKED)</td>
6994 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
6995 <td align="center">FLASH_<wbr/>REQUIRED</td>
6996 <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>
6997 </tr>
6998 <tr>
6999 <td align="center">Any state (excluding LOCKED)</td>
7000 <td align="center"><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is CANCEL,<wbr/> converged</td>
7001 <td align="center">CONVERGED</td>
7002 <td align="center">Converged after a precapture sequenceis canceled,<wbr/> transient states are skipped by camera device.<wbr/></td>
7003 </tr>
7004 <tr>
7005 <td align="center">CONVERGED</td>
7006 <td align="center">Camera device finished AE scan</td>
7007 <td align="center">FLASH_<wbr/>REQUIRED</td>
7008 <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>
7009 </tr>
7010 <tr>
7011 <td align="center">FLASH_<wbr/>REQUIRED</td>
7012 <td align="center">Camera device finished AE scan</td>
7013 <td align="center">CONVERGED</td>
7014 <td align="center">Converged after a new scan,<wbr/> transient states are skipped by camera device.<wbr/></td>
7015 </tr>
7016 </tbody>
7017 </table>
7018             </td>
7019           </tr>
7020
7021
7022           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7023            <!-- end of entry -->
7024         
7025                 
7026           <tr class="entry" id="dynamic_android.control.afMode">
7027             <td class="entry_name
7028              " rowspan="5">
7029               android.<wbr/>control.<wbr/>af<wbr/>Mode
7030             </td>
7031             <td class="entry_type">
7032                 <span class="entry_type_name entry_type_name_enum">byte</span>
7033
7034               <span class="entry_type_visibility"> [public]</span>
7035
7036
7037               <span class="entry_type_hwlevel">[legacy] </span>
7038
7039
7040
7041                 <ul class="entry_type_enum">
7042                   <li>
7043                     <span class="entry_type_enum_name">OFF (v3.2)</span>
7044                     <span class="entry_type_enum_notes"><p>The auto-focus routine does not control the lens;
7045 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> is controlled by the
7046 application.<wbr/></p></span>
7047                   </li>
7048                   <li>
7049                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
7050                     <span class="entry_type_enum_notes"><p>Basic automatic focus mode.<wbr/></p>
7051 <p>In this mode,<wbr/> the lens does not move unless
7052 the autofocus trigger action is called.<wbr/> When that trigger
7053 is activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7054 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/></p>
7055 <p>Always supported if lens is not fixed focus.<wbr/></p>
7056 <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
7057 is fixed-focus.<wbr/></p>
7058 <p>Triggering AF_<wbr/>CANCEL resets the lens position to default,<wbr/>
7059 and sets the AF state to INACTIVE.<wbr/></p></span>
7060                   </li>
7061                   <li>
7062                     <span class="entry_type_enum_name">MACRO (v3.2)</span>
7063                     <span class="entry_type_enum_notes"><p>Close-up focusing mode.<wbr/></p>
7064 <p>In this mode,<wbr/> the lens does not move unless the
7065 autofocus trigger action is called.<wbr/> When that trigger is
7066 activated,<wbr/> AF will transition to ACTIVE_<wbr/>SCAN,<wbr/> then to
7067 the outcome of the scan (FOCUSED or NOT_<wbr/>FOCUSED).<wbr/> This
7068 mode is optimized for focusing on objects very close to
7069 the camera.<wbr/></p>
7070 <p>When that trigger is activated,<wbr/> AF will transition to
7071 ACTIVE_<wbr/>SCAN,<wbr/> then to the outcome of the scan (FOCUSED or
7072 NOT_<wbr/>FOCUSED).<wbr/> Triggering cancel AF resets the lens
7073 position to default,<wbr/> and sets the AF state to
7074 INACTIVE.<wbr/></p></span>
7075                   </li>
7076                   <li>
7077                     <span class="entry_type_enum_name">CONTINUOUS_VIDEO (v3.2)</span>
7078                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7079 position continually to attempt to provide a
7080 constantly-in-focus image stream.<wbr/></p>
7081 <p>The focusing behavior should be suitable for good quality
7082 video recording; typically this means slower focus
7083 movement and no overshoots.<wbr/> When the AF trigger is not
7084 involved,<wbr/> the AF algorithm should start in INACTIVE state,<wbr/>
7085 and then transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED
7086 states as appropriate.<wbr/> When the AF trigger is activated,<wbr/>
7087 the algorithm should immediately transition into
7088 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7089 lens position until a cancel AF trigger is received.<wbr/></p>
7090 <p>Once cancel is received,<wbr/> the algorithm should transition
7091 back to INACTIVE and resume passive scan.<wbr/> Note that this
7092 behavior is not identical to CONTINUOUS_<wbr/>PICTURE,<wbr/> since an
7093 ongoing PASSIVE_<wbr/>SCAN must immediately be
7094 canceled.<wbr/></p></span>
7095                   </li>
7096                   <li>
7097                     <span class="entry_type_enum_name">CONTINUOUS_PICTURE (v3.2)</span>
7098                     <span class="entry_type_enum_notes"><p>In this mode,<wbr/> the AF algorithm modifies the lens
7099 position continually to attempt to provide a
7100 constantly-in-focus image stream.<wbr/></p>
7101 <p>The focusing behavior should be suitable for still image
7102 capture; typically this means focusing as fast as
7103 possible.<wbr/> When the AF trigger is not involved,<wbr/> the AF
7104 algorithm should start in INACTIVE state,<wbr/> and then
7105 transition into PASSIVE_<wbr/>SCAN and PASSIVE_<wbr/>FOCUSED states as
7106 appropriate as it attempts to maintain focus.<wbr/> When the AF
7107 trigger is activated,<wbr/> the algorithm should finish its
7108 PASSIVE_<wbr/>SCAN if active,<wbr/> and then transition into
7109 AF_<wbr/>FOCUSED or AF_<wbr/>NOT_<wbr/>FOCUSED as appropriate,<wbr/> and lock the
7110 lens position until a cancel AF trigger is received.<wbr/></p>
7111 <p>When the AF cancel trigger is activated,<wbr/> the algorithm
7112 should transition back to INACTIVE and then act as if it
7113 has just been started.<wbr/></p></span>
7114                   </li>
7115                   <li>
7116                     <span class="entry_type_enum_name">EDOF (v3.2)</span>
7117                     <span class="entry_type_enum_notes"><p>Extended depth of field (digital focus) mode.<wbr/></p>
7118 <p>The camera device will produce images with an extended
7119 depth of field automatically; no special focusing
7120 operations need to be done before taking a picture.<wbr/></p>
7121 <p>AF triggers are ignored,<wbr/> and the AF state will always be
7122 INACTIVE.<wbr/></p></span>
7123                   </li>
7124                 </ul>
7125
7126             </td> <!-- entry_type -->
7127
7128             <td class="entry_description">
7129               <p>Whether auto-focus (AF) is currently enabled,<wbr/> and what
7130 mode it is set to.<wbr/></p>
7131             </td>
7132
7133             <td class="entry_units">
7134             </td>
7135
7136             <td class="entry_range">
7137               <p><a href="#static_android.control.afAvailableModes">android.<wbr/>control.<wbr/>af<wbr/>Available<wbr/>Modes</a></p>
7138             </td>
7139
7140             <td class="entry_hal_version">
7141               <p>3.<wbr/>2</p>
7142             </td>
7143
7144             <td class="entry_tags">
7145               <ul class="entry_tags">
7146                   <li><a href="#tag_BC">BC</a></li>
7147               </ul>
7148             </td>
7149
7150           </tr>
7151           <tr class="entries_header">
7152             <th class="th_details" colspan="6">Details</th>
7153           </tr>
7154           <tr class="entry_cont">
7155             <td class="entry_details" colspan="6">
7156               <p>Only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> = AUTO and the lens is not fixed focus
7157 (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
7158 when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/> the behavior of AF is device
7159 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
7160 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>
7161 <p>If the lens is controlled by the camera device auto-focus algorithm,<wbr/>
7162 the camera device will report the current AF status in <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>
7163 in result metadata.<wbr/></p>
7164             </td>
7165           </tr>
7166
7167           <tr class="entries_header">
7168             <th class="th_details" colspan="6">HAL Implementation Details</th>
7169           </tr>
7170           <tr class="entry_cont">
7171             <td class="entry_details" colspan="6">
7172               <p>When afMode is AUTO or MACRO,<wbr/> the lens must not move until an AF trigger is sent in a
7173 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
7174 up with either FOCUSED_<wbr/>LOCKED or NOT_<wbr/>FOCUSED_<wbr/>LOCKED state (see
7175 <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
7176 locked and will not move.<wbr/> If camera movement (e.<wbr/>g.<wbr/> tilting camera) causes the lens to move
7177 after the lens is locked,<wbr/> the HAL must compensate this movement appropriately such that
7178 the same focal plane remains in focus.<wbr/></p>
7179 <p>When afMode is one of the continuous auto focus modes,<wbr/> the HAL is free to start a AF
7180 scan whenever it's not locked.<wbr/> When the lens is locked after an AF trigger
7181 (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
7182 same lock behavior as above.<wbr/></p>
7183 <p>When afMode is OFF,<wbr/> the application controls focus manually.<wbr/> The accuracy of the
7184 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/>
7185 However,<wbr/> the lens must not move regardless of the camera movement for any focus distance
7186 manual control.<wbr/></p>
7187 <p>To put this in concrete terms,<wbr/> if the camera has lens elements which may move based on
7188 camera orientation or motion (e.<wbr/>g.<wbr/> due to gravity),<wbr/> then the HAL must drive the lens to
7189 remain in a fixed position invariant to the camera's orientation or motion,<wbr/> for example,<wbr/>
7190 by using accelerometer measurements in the lens control logic.<wbr/> This is a typical issue
7191 that will arise on camera modules with open-loop VCMs.<wbr/></p>
7192             </td>
7193           </tr>
7194
7195           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7196            <!-- end of entry -->
7197         
7198                 
7199           <tr class="entry" id="dynamic_android.control.afRegions">
7200             <td class="entry_name
7201              " rowspan="5">
7202               android.<wbr/>control.<wbr/>af<wbr/>Regions
7203             </td>
7204             <td class="entry_type">
7205                 <span class="entry_type_name">int32</span>
7206                 <span class="entry_type_container">x</span>
7207
7208                 <span class="entry_type_array">
7209                   5 x area_count
7210                 </span>
7211               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
7212
7213
7214
7215
7216
7217
7218             </td> <!-- entry_type -->
7219
7220             <td class="entry_description">
7221               <p>List of metering areas to use for auto-focus.<wbr/></p>
7222             </td>
7223
7224             <td class="entry_units">
7225               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
7226             </td>
7227
7228             <td class="entry_range">
7229               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
7230 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
7231             </td>
7232
7233             <td class="entry_hal_version">
7234               <p>3.<wbr/>2</p>
7235             </td>
7236
7237             <td class="entry_tags">
7238               <ul class="entry_tags">
7239                   <li><a href="#tag_BC">BC</a></li>
7240               </ul>
7241             </td>
7242
7243           </tr>
7244           <tr class="entries_header">
7245             <th class="th_details" colspan="6">Details</th>
7246           </tr>
7247           <tr class="entry_cont">
7248             <td class="entry_details" colspan="6">
7249               <p>Not available if <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a> is 0.<wbr/>
7250 Otherwise will always be present.<wbr/></p>
7251 <p>The maximum number of focus areas supported by the device is determined by the value
7252 of <a href="#static_android.control.maxRegionsAf">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Af</a>.<wbr/></p>
7253 <p>The coordinate system is based on the active pixel array,<wbr/>
7254 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
7255 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
7256 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
7257 bottom-right pixel in the active pixel array.<wbr/></p>
7258 <p>The weight must be within <code>[0,<wbr/> 1000]</code>,<wbr/> and represents a weight
7259 for every pixel in the area.<wbr/> This means that a large metering area
7260 with the same weight as a smaller area will have more effect in
7261 the metering result.<wbr/> Metering areas can partially overlap and the
7262 camera device will add the weights in the overlap region.<wbr/></p>
7263 <p>The weights are relative to weights of other metering regions,<wbr/> so if only one region
7264 is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with 0 weight is
7265 ignored.<wbr/></p>
7266 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
7267 camera device.<wbr/></p>
7268 <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
7269 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
7270 region and output only the intersection rectangle as the metering region in the result
7271 metadata.<wbr/> If the region is entirely outside the crop region,<wbr/> it will be ignored and
7272 not reported in the result metadata.<wbr/></p>
7273             </td>
7274           </tr>
7275
7276           <tr class="entries_header">
7277             <th class="th_details" colspan="6">HAL Implementation Details</th>
7278           </tr>
7279           <tr class="entry_cont">
7280             <td class="entry_details" colspan="6">
7281               <p>The HAL level representation of MeteringRectangle[] is a
7282 int[5 * area_<wbr/>count].<wbr/>
7283 Every five elements represent a metering region of
7284 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
7285 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
7286 exclusive on xmax and ymax.<wbr/></p>
7287             </td>
7288           </tr>
7289
7290           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7291            <!-- end of entry -->
7292         
7293                 
7294           <tr class="entry" id="dynamic_android.control.afTrigger">
7295             <td class="entry_name
7296              " rowspan="5">
7297               android.<wbr/>control.<wbr/>af<wbr/>Trigger
7298             </td>
7299             <td class="entry_type">
7300                 <span class="entry_type_name entry_type_name_enum">byte</span>
7301
7302               <span class="entry_type_visibility"> [public]</span>
7303
7304
7305               <span class="entry_type_hwlevel">[legacy] </span>
7306
7307
7308
7309                 <ul class="entry_type_enum">
7310                   <li>
7311                     <span class="entry_type_enum_name">IDLE (v3.2)</span>
7312                     <span class="entry_type_enum_notes"><p>The trigger is idle.<wbr/></p></span>
7313                   </li>
7314                   <li>
7315                     <span class="entry_type_enum_name">START (v3.2)</span>
7316                     <span class="entry_type_enum_notes"><p>Autofocus will trigger now.<wbr/></p></span>
7317                   </li>
7318                   <li>
7319                     <span class="entry_type_enum_name">CANCEL (v3.2)</span>
7320                     <span class="entry_type_enum_notes"><p>Autofocus will return to its initial
7321 state,<wbr/> and cancel any currently active trigger.<wbr/></p></span>
7322                   </li>
7323                 </ul>
7324
7325             </td> <!-- entry_type -->
7326
7327             <td class="entry_description">
7328               <p>Whether the camera device will trigger autofocus for this request.<wbr/></p>
7329             </td>
7330
7331             <td class="entry_units">
7332             </td>
7333
7334             <td class="entry_range">
7335             </td>
7336
7337             <td class="entry_hal_version">
7338               <p>3.<wbr/>2</p>
7339             </td>
7340
7341             <td class="entry_tags">
7342               <ul class="entry_tags">
7343                   <li><a href="#tag_BC">BC</a></li>
7344               </ul>
7345             </td>
7346
7347           </tr>
7348           <tr class="entries_header">
7349             <th class="th_details" colspan="6">Details</th>
7350           </tr>
7351           <tr class="entry_cont">
7352             <td class="entry_details" colspan="6">
7353               <p>This entry is normally set to IDLE,<wbr/> or is not
7354 included at all in the request settings.<wbr/></p>
7355 <p>When included and set to START,<wbr/> the camera device will trigger the
7356 autofocus algorithm.<wbr/> If autofocus is disabled,<wbr/> this trigger has no effect.<wbr/></p>
7357 <p>When set to CANCEL,<wbr/> the camera device will cancel any active trigger,<wbr/>
7358 and return to its initial AF state.<wbr/></p>
7359 <p>Generally,<wbr/> applications should set this entry to START or CANCEL for only a
7360 single capture,<wbr/> and then return it to IDLE (or not set at all).<wbr/> Specifying
7361 START for multiple captures in a row means restarting the AF operation over
7362 and over again.<wbr/></p>
7363 <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>
7364 <p>Using the autofocus trigger and the precapture trigger <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>
7365 simultaneously is allowed.<wbr/> However,<wbr/> since these triggers often require cooperation between
7366 the auto-focus and auto-exposure routines (for example,<wbr/> the may need to be enabled for a
7367 focus sweep),<wbr/> the camera device may delay acting on a later trigger until the previous
7368 trigger has been fully handled.<wbr/> This may lead to longer intervals between the trigger and
7369 changes to <a href="#dynamic_android.control.afState">android.<wbr/>control.<wbr/>af<wbr/>State</a>,<wbr/> for example.<wbr/></p>
7370             </td>
7371           </tr>
7372
7373           <tr class="entries_header">
7374             <th class="th_details" colspan="6">HAL Implementation Details</th>
7375           </tr>
7376           <tr class="entry_cont">
7377             <td class="entry_details" colspan="6">
7378               <p>The HAL must support triggering the AF trigger while an AE precapture trigger is active
7379 (and vice versa),<wbr/> or at the same time as the AE trigger.<wbr/>  It is acceptable for the HAL to
7380 treat these as two consecutive triggers,<wbr/> for example handling the AF trigger and then the
7381 AE trigger.<wbr/>  Or the HAL may choose to optimize the case with both triggers fired at once,<wbr/>
7382 to minimize the latency for converging both focus and exposure/<wbr/>flash usage.<wbr/></p>
7383             </td>
7384           </tr>
7385
7386           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7387            <!-- end of entry -->
7388         
7389                 
7390           <tr class="entry" id="dynamic_android.control.afState">
7391             <td class="entry_name
7392              " rowspan="3">
7393               android.<wbr/>control.<wbr/>af<wbr/>State
7394             </td>
7395             <td class="entry_type">
7396                 <span class="entry_type_name entry_type_name_enum">byte</span>
7397
7398               <span class="entry_type_visibility"> [public]</span>
7399
7400
7401               <span class="entry_type_hwlevel">[legacy] </span>
7402
7403
7404
7405                 <ul class="entry_type_enum">
7406                   <li>
7407                     <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
7408                     <span class="entry_type_enum_notes"><p>AF is off or has not yet tried to scan/<wbr/>been asked
7409 to scan.<wbr/></p>
7410 <p>When a camera device is opened,<wbr/> it starts in this
7411 state.<wbr/> This is a transient state,<wbr/> the camera device may
7412 skip reporting this state in capture
7413 result.<wbr/></p></span>
7414                   </li>
7415                   <li>
7416                     <span class="entry_type_enum_name">PASSIVE_SCAN (v3.2)</span>
7417                     <span class="entry_type_enum_notes"><p>AF is currently performing an AF scan initiated the
7418 camera device in a continuous autofocus mode.<wbr/></p>
7419 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7420 state,<wbr/> the camera device may skip reporting this state in
7421 capture result.<wbr/></p></span>
7422                   </li>
7423                   <li>
7424                     <span class="entry_type_enum_name">PASSIVE_FOCUSED (v3.2)</span>
7425                     <span class="entry_type_enum_notes"><p>AF currently believes it is in focus,<wbr/> but may
7426 restart scanning at any time.<wbr/></p>
7427 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient
7428 state,<wbr/> the camera device may skip reporting this state in
7429 capture result.<wbr/></p></span>
7430                   </li>
7431                   <li>
7432                     <span class="entry_type_enum_name">ACTIVE_SCAN (v3.2)</span>
7433                     <span class="entry_type_enum_notes"><p>AF is performing an AF scan because it was
7434 triggered by AF trigger.<wbr/></p>
7435 <p>Only used by AUTO or MACRO AF modes.<wbr/> This is a transient
7436 state,<wbr/> the camera device may skip reporting this state in
7437 capture result.<wbr/></p></span>
7438                   </li>
7439                   <li>
7440                     <span class="entry_type_enum_name">FOCUSED_LOCKED (v3.2)</span>
7441                     <span class="entry_type_enum_notes"><p>AF believes it is focused correctly and has locked
7442 focus.<wbr/></p>
7443 <p>This state is reached only after an explicit START AF trigger has been
7444 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus has been obtained.<wbr/></p>
7445 <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
7446 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>
7447                   </li>
7448                   <li>
7449                     <span class="entry_type_enum_name">NOT_FOCUSED_LOCKED (v3.2)</span>
7450                     <span class="entry_type_enum_notes"><p>AF has failed to focus successfully and has locked
7451 focus.<wbr/></p>
7452 <p>This state is reached only after an explicit START AF trigger has been
7453 sent (<a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a>),<wbr/> when good focus cannot be obtained.<wbr/></p>
7454 <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
7455 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>
7456                   </li>
7457                   <li>
7458                     <span class="entry_type_enum_name">PASSIVE_UNFOCUSED (v3.2)</span>
7459                     <span class="entry_type_enum_notes"><p>AF finished a passive scan without finding focus,<wbr/>
7460 and may restart scanning at any time.<wbr/></p>
7461 <p>Only used by CONTINUOUS_<wbr/>* AF modes.<wbr/> This is a transient state,<wbr/> the camera
7462 device may skip reporting this state in capture result.<wbr/></p>
7463 <p>LEGACY camera devices do not support this state.<wbr/> When a passive
7464 scan has finished,<wbr/> it will always go to PASSIVE_<wbr/>FOCUSED.<wbr/></p></span>
7465                   </li>
7466                 </ul>
7467
7468             </td> <!-- entry_type -->
7469
7470             <td class="entry_description">
7471               <p>Current state of auto-focus (AF) algorithm.<wbr/></p>
7472             </td>
7473
7474             <td class="entry_units">
7475             </td>
7476
7477             <td class="entry_range">
7478             </td>
7479
7480             <td class="entry_hal_version">
7481               <p>3.<wbr/>2</p>
7482             </td>
7483
7484             <td class="entry_tags">
7485             </td>
7486
7487           </tr>
7488           <tr class="entries_header">
7489             <th class="th_details" colspan="6">Details</th>
7490           </tr>
7491           <tr class="entry_cont">
7492             <td class="entry_details" colspan="6">
7493               <p>Switching between or enabling AF modes (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>) always
7494 resets the AF state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
7495 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
7496 the algorithm states to INACTIVE.<wbr/></p>
7497 <p>The camera device can do several state transitions between two results,<wbr/> if it is
7498 allowed by the state transition table.<wbr/> For example: INACTIVE may never actually be
7499 seen in a result.<wbr/></p>
7500 <p>The state in the result is the state for this image (in sync with this image): if
7501 AF state becomes FOCUSED,<wbr/> then the image data associated with this result should
7502 be sharp.<wbr/></p>
7503 <p>Below are state transition tables for different AF modes.<wbr/></p>
7504 <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>
7505 <table>
7506 <thead>
7507 <tr>
7508 <th align="center">State</th>
7509 <th align="center">Transition Cause</th>
7510 <th align="center">New State</th>
7511 <th align="center">Notes</th>
7512 </tr>
7513 </thead>
7514 <tbody>
7515 <tr>
7516 <td align="center">INACTIVE</td>
7517 <td align="center"></td>
7518 <td align="center">INACTIVE</td>
7519 <td align="center">Never changes</td>
7520 </tr>
7521 </tbody>
7522 </table>
7523 <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>
7524 <table>
7525 <thead>
7526 <tr>
7527 <th align="center">State</th>
7528 <th align="center">Transition Cause</th>
7529 <th align="center">New State</th>
7530 <th align="center">Notes</th>
7531 </tr>
7532 </thead>
7533 <tbody>
7534 <tr>
7535 <td align="center">INACTIVE</td>
7536 <td align="center">AF_<wbr/>TRIGGER</td>
7537 <td align="center">ACTIVE_<wbr/>SCAN</td>
7538 <td align="center">Start AF sweep,<wbr/> Lens now moving</td>
7539 </tr>
7540 <tr>
7541 <td align="center">ACTIVE_<wbr/>SCAN</td>
7542 <td align="center">AF sweep done</td>
7543 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7544 <td align="center">Focused,<wbr/> Lens now locked</td>
7545 </tr>
7546 <tr>
7547 <td align="center">ACTIVE_<wbr/>SCAN</td>
7548 <td align="center">AF sweep done</td>
7549 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7550 <td align="center">Not focused,<wbr/> Lens now locked</td>
7551 </tr>
7552 <tr>
7553 <td align="center">ACTIVE_<wbr/>SCAN</td>
7554 <td align="center">AF_<wbr/>CANCEL</td>
7555 <td align="center">INACTIVE</td>
7556 <td align="center">Cancel/<wbr/>reset AF,<wbr/> Lens now locked</td>
7557 </tr>
7558 <tr>
7559 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7560 <td align="center">AF_<wbr/>CANCEL</td>
7561 <td align="center">INACTIVE</td>
7562 <td align="center">Cancel/<wbr/>reset AF</td>
7563 </tr>
7564 <tr>
7565 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7566 <td align="center">AF_<wbr/>TRIGGER</td>
7567 <td align="center">ACTIVE_<wbr/>SCAN</td>
7568 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7569 </tr>
7570 <tr>
7571 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7572 <td align="center">AF_<wbr/>CANCEL</td>
7573 <td align="center">INACTIVE</td>
7574 <td align="center">Cancel/<wbr/>reset AF</td>
7575 </tr>
7576 <tr>
7577 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7578 <td align="center">AF_<wbr/>TRIGGER</td>
7579 <td align="center">ACTIVE_<wbr/>SCAN</td>
7580 <td align="center">Start new sweep,<wbr/> Lens now moving</td>
7581 </tr>
7582 <tr>
7583 <td align="center">Any state</td>
7584 <td align="center">Mode change</td>
7585 <td align="center">INACTIVE</td>
7586 <td align="center"></td>
7587 </tr>
7588 </tbody>
7589 </table>
7590 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
7591 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
7592 can be skipped in that manner is called a transient state.<wbr/></p>
7593 <p>For example,<wbr/> for these AF modes (AF_<wbr/>MODE_<wbr/>AUTO and AF_<wbr/>MODE_<wbr/>MACRO),<wbr/> in addition to the
7594 state transitions listed in above table,<wbr/> it is also legal for the camera device to skip
7595 one or more transient states between two results.<wbr/> See below table for examples:</p>
7596 <table>
7597 <thead>
7598 <tr>
7599 <th align="center">State</th>
7600 <th align="center">Transition Cause</th>
7601 <th align="center">New State</th>
7602 <th align="center">Notes</th>
7603 </tr>
7604 </thead>
7605 <tbody>
7606 <tr>
7607 <td align="center">INACTIVE</td>
7608 <td align="center">AF_<wbr/>TRIGGER</td>
7609 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7610 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7611 </tr>
7612 <tr>
7613 <td align="center">INACTIVE</td>
7614 <td align="center">AF_<wbr/>TRIGGER</td>
7615 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7616 <td align="center">Focus failed after a scan,<wbr/> lens is now locked.<wbr/></td>
7617 </tr>
7618 <tr>
7619 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7620 <td align="center">AF_<wbr/>TRIGGER</td>
7621 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7622 <td align="center">Focus is already good or good after a scan,<wbr/> lens is now locked.<wbr/></td>
7623 </tr>
7624 <tr>
7625 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7626 <td align="center">AF_<wbr/>TRIGGER</td>
7627 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7628 <td align="center">Focus is good after a scan,<wbr/> lens is not locked.<wbr/></td>
7629 </tr>
7630 </tbody>
7631 </table>
7632 <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>
7633 <table>
7634 <thead>
7635 <tr>
7636 <th align="center">State</th>
7637 <th align="center">Transition Cause</th>
7638 <th align="center">New State</th>
7639 <th align="center">Notes</th>
7640 </tr>
7641 </thead>
7642 <tbody>
7643 <tr>
7644 <td align="center">INACTIVE</td>
7645 <td align="center">Camera device initiates new scan</td>
7646 <td align="center">PASSIVE_<wbr/>SCAN</td>
7647 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7648 </tr>
7649 <tr>
7650 <td align="center">INACTIVE</td>
7651 <td align="center">AF_<wbr/>TRIGGER</td>
7652 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7653 <td align="center">AF state query,<wbr/> Lens now locked</td>
7654 </tr>
7655 <tr>
7656 <td align="center">PASSIVE_<wbr/>SCAN</td>
7657 <td align="center">Camera device completes current scan</td>
7658 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7659 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7660 </tr>
7661 <tr>
7662 <td align="center">PASSIVE_<wbr/>SCAN</td>
7663 <td align="center">Camera device fails current scan</td>
7664 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7665 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7666 </tr>
7667 <tr>
7668 <td align="center">PASSIVE_<wbr/>SCAN</td>
7669 <td align="center">AF_<wbr/>TRIGGER</td>
7670 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7671 <td align="center">Immediate transition,<wbr/> if focus is good.<wbr/> Lens now locked</td>
7672 </tr>
7673 <tr>
7674 <td align="center">PASSIVE_<wbr/>SCAN</td>
7675 <td align="center">AF_<wbr/>TRIGGER</td>
7676 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7677 <td align="center">Immediate transition,<wbr/> if focus is bad.<wbr/> Lens now locked</td>
7678 </tr>
7679 <tr>
7680 <td align="center">PASSIVE_<wbr/>SCAN</td>
7681 <td align="center">AF_<wbr/>CANCEL</td>
7682 <td align="center">INACTIVE</td>
7683 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7684 </tr>
7685 <tr>
7686 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7687 <td align="center">Camera device initiates new scan</td>
7688 <td align="center">PASSIVE_<wbr/>SCAN</td>
7689 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7690 </tr>
7691 <tr>
7692 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7693 <td align="center">Camera device initiates new scan</td>
7694 <td align="center">PASSIVE_<wbr/>SCAN</td>
7695 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7696 </tr>
7697 <tr>
7698 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7699 <td align="center">AF_<wbr/>TRIGGER</td>
7700 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7701 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7702 </tr>
7703 <tr>
7704 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7705 <td align="center">AF_<wbr/>TRIGGER</td>
7706 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7707 <td align="center">Immediate transition,<wbr/> lens now locked</td>
7708 </tr>
7709 <tr>
7710 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7711 <td align="center">AF_<wbr/>TRIGGER</td>
7712 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7713 <td align="center">No effect</td>
7714 </tr>
7715 <tr>
7716 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7717 <td align="center">AF_<wbr/>CANCEL</td>
7718 <td align="center">INACTIVE</td>
7719 <td align="center">Restart AF scan</td>
7720 </tr>
7721 <tr>
7722 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7723 <td align="center">AF_<wbr/>TRIGGER</td>
7724 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7725 <td align="center">No effect</td>
7726 </tr>
7727 <tr>
7728 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7729 <td align="center">AF_<wbr/>CANCEL</td>
7730 <td align="center">INACTIVE</td>
7731 <td align="center">Restart AF scan</td>
7732 </tr>
7733 </tbody>
7734 </table>
7735 <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>
7736 <table>
7737 <thead>
7738 <tr>
7739 <th align="center">State</th>
7740 <th align="center">Transition Cause</th>
7741 <th align="center">New State</th>
7742 <th align="center">Notes</th>
7743 </tr>
7744 </thead>
7745 <tbody>
7746 <tr>
7747 <td align="center">INACTIVE</td>
7748 <td align="center">Camera device initiates new scan</td>
7749 <td align="center">PASSIVE_<wbr/>SCAN</td>
7750 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7751 </tr>
7752 <tr>
7753 <td align="center">INACTIVE</td>
7754 <td align="center">AF_<wbr/>TRIGGER</td>
7755 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7756 <td align="center">AF state query,<wbr/> Lens now locked</td>
7757 </tr>
7758 <tr>
7759 <td align="center">PASSIVE_<wbr/>SCAN</td>
7760 <td align="center">Camera device completes current scan</td>
7761 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7762 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7763 </tr>
7764 <tr>
7765 <td align="center">PASSIVE_<wbr/>SCAN</td>
7766 <td align="center">Camera device fails current scan</td>
7767 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7768 <td align="center">End AF scan,<wbr/> Lens now locked</td>
7769 </tr>
7770 <tr>
7771 <td align="center">PASSIVE_<wbr/>SCAN</td>
7772 <td align="center">AF_<wbr/>TRIGGER</td>
7773 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7774 <td align="center">Eventual transition once the focus is good.<wbr/> Lens now locked</td>
7775 </tr>
7776 <tr>
7777 <td align="center">PASSIVE_<wbr/>SCAN</td>
7778 <td align="center">AF_<wbr/>TRIGGER</td>
7779 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7780 <td align="center">Eventual transition if cannot find focus.<wbr/> Lens now locked</td>
7781 </tr>
7782 <tr>
7783 <td align="center">PASSIVE_<wbr/>SCAN</td>
7784 <td align="center">AF_<wbr/>CANCEL</td>
7785 <td align="center">INACTIVE</td>
7786 <td align="center">Reset lens position,<wbr/> Lens now locked</td>
7787 </tr>
7788 <tr>
7789 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7790 <td align="center">Camera device initiates new scan</td>
7791 <td align="center">PASSIVE_<wbr/>SCAN</td>
7792 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7793 </tr>
7794 <tr>
7795 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7796 <td align="center">Camera device initiates new scan</td>
7797 <td align="center">PASSIVE_<wbr/>SCAN</td>
7798 <td align="center">Start AF scan,<wbr/> Lens now moving</td>
7799 </tr>
7800 <tr>
7801 <td align="center">PASSIVE_<wbr/>FOCUSED</td>
7802 <td align="center">AF_<wbr/>TRIGGER</td>
7803 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7804 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7805 </tr>
7806 <tr>
7807 <td align="center">PASSIVE_<wbr/>UNFOCUSED</td>
7808 <td align="center">AF_<wbr/>TRIGGER</td>
7809 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7810 <td align="center">Immediate trans.<wbr/> Lens now locked</td>
7811 </tr>
7812 <tr>
7813 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7814 <td align="center">AF_<wbr/>TRIGGER</td>
7815 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7816 <td align="center">No effect</td>
7817 </tr>
7818 <tr>
7819 <td align="center">FOCUSED_<wbr/>LOCKED</td>
7820 <td align="center">AF_<wbr/>CANCEL</td>
7821 <td align="center">INACTIVE</td>
7822 <td align="center">Restart AF scan</td>
7823 </tr>
7824 <tr>
7825 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7826 <td align="center">AF_<wbr/>TRIGGER</td>
7827 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7828 <td align="center">No effect</td>
7829 </tr>
7830 <tr>
7831 <td align="center">NOT_<wbr/>FOCUSED_<wbr/>LOCKED</td>
7832 <td align="center">AF_<wbr/>CANCEL</td>
7833 <td align="center">INACTIVE</td>
7834 <td align="center">Restart AF scan</td>
7835 </tr>
7836 </tbody>
7837 </table>
7838 <p>When switch between AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>* (CAF modes) and AF_<wbr/>MODE_<wbr/>AUTO/<wbr/>AF_<wbr/>MODE_<wbr/>MACRO
7839 (AUTO modes),<wbr/> the initial INACTIVE or PASSIVE_<wbr/>SCAN states may be skipped by the
7840 camera device.<wbr/> When a trigger is included in a mode switch request,<wbr/> the trigger
7841 will be evaluated in the context of the new mode in the request.<wbr/>
7842 See below table for examples:</p>
7843 <table>
7844 <thead>
7845 <tr>
7846 <th align="center">State</th>
7847 <th align="center">Transition Cause</th>
7848 <th align="center">New State</th>
7849 <th align="center">Notes</th>
7850 </tr>
7851 </thead>
7852 <tbody>
7853 <tr>
7854 <td align="center">any state</td>
7855 <td align="center">CAF--&gt;AUTO mode switch</td>
7856 <td align="center">INACTIVE</td>
7857 <td align="center">Mode switch without trigger,<wbr/> initial state must be INACTIVE</td>
7858 </tr>
7859 <tr>
7860 <td align="center">any state</td>
7861 <td align="center">CAF--&gt;AUTO mode switch with AF_<wbr/>TRIGGER</td>
7862 <td align="center">trigger-reachable states from INACTIVE</td>
7863 <td align="center">Mode switch with trigger,<wbr/> INACTIVE is skipped</td>
7864 </tr>
7865 <tr>
7866 <td align="center">any state</td>
7867 <td align="center">AUTO--&gt;CAF mode switch</td>
7868 <td align="center">passively reachable states from INACTIVE</td>
7869 <td align="center">Mode switch without trigger,<wbr/> passive transient state is skipped</td>
7870 </tr>
7871 </tbody>
7872 </table>
7873             </td>
7874           </tr>
7875
7876
7877           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7878            <!-- end of entry -->
7879         
7880                 
7881           <tr class="entry" id="dynamic_android.control.afTriggerId">
7882             <td class="entry_name
7883                 entry_name_deprecated
7884              " rowspan="3">
7885               android.<wbr/>control.<wbr/>af<wbr/>Trigger<wbr/>Id
7886             </td>
7887             <td class="entry_type">
7888                 <span class="entry_type_name">int32</span>
7889
7890               <span class="entry_type_visibility"> [system]</span>
7891
7892
7893
7894               <span class="entry_type_deprecated">[deprecated] </span>
7895
7896
7897
7898             </td> <!-- entry_type -->
7899
7900             <td class="entry_description">
7901               <p>The ID sent with the latest
7902 CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS call</p>
7903             </td>
7904
7905             <td class="entry_units">
7906             </td>
7907
7908             <td class="entry_range">
7909               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
7910             </td>
7911
7912             <td class="entry_hal_version">
7913               <p>3.<wbr/>2</p>
7914             </td>
7915
7916             <td class="entry_tags">
7917             </td>
7918
7919           </tr>
7920           <tr class="entries_header">
7921             <th class="th_details" colspan="6">Details</th>
7922           </tr>
7923           <tr class="entry_cont">
7924             <td class="entry_details" colspan="6">
7925               <p>Must be 0 if no CAMERA2_<wbr/>TRIGGER_<wbr/>AUTOFOCUS trigger
7926 received yet by HAL.<wbr/> Always updated even if AF algorithm
7927 ignores the trigger</p>
7928             </td>
7929           </tr>
7930
7931
7932           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
7933            <!-- end of entry -->
7934         
7935                 
7936           <tr class="entry" id="dynamic_android.control.awbLock">
7937             <td class="entry_name
7938              " rowspan="3">
7939               android.<wbr/>control.<wbr/>awb<wbr/>Lock
7940             </td>
7941             <td class="entry_type">
7942                 <span class="entry_type_name entry_type_name_enum">byte</span>
7943
7944               <span class="entry_type_visibility"> [public as boolean]</span>
7945
7946
7947               <span class="entry_type_hwlevel">[legacy] </span>
7948
7949
7950
7951                 <ul class="entry_type_enum">
7952                   <li>
7953                     <span class="entry_type_enum_name">OFF (v3.2)</span>
7954                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is disabled; the AWB
7955 algorithm is free to update its parameters if in AUTO
7956 mode.<wbr/></p></span>
7957                   </li>
7958                   <li>
7959                     <span class="entry_type_enum_name">ON (v3.2)</span>
7960                     <span class="entry_type_enum_notes"><p>Auto-white balance lock is enabled; the AWB
7961 algorithm will not update its parameters while the lock
7962 is active.<wbr/></p></span>
7963                   </li>
7964                 </ul>
7965
7966             </td> <!-- entry_type -->
7967
7968             <td class="entry_description">
7969               <p>Whether auto-white balance (AWB) is currently locked to its
7970 latest calculated values.<wbr/></p>
7971             </td>
7972
7973             <td class="entry_units">
7974             </td>
7975
7976             <td class="entry_range">
7977             </td>
7978
7979             <td class="entry_hal_version">
7980               <p>3.<wbr/>2</p>
7981             </td>
7982
7983             <td class="entry_tags">
7984               <ul class="entry_tags">
7985                   <li><a href="#tag_BC">BC</a></li>
7986               </ul>
7987             </td>
7988
7989           </tr>
7990           <tr class="entries_header">
7991             <th class="th_details" colspan="6">Details</th>
7992           </tr>
7993           <tr class="entry_cont">
7994             <td class="entry_details" colspan="6">
7995               <p>When set to <code>true</code> (ON),<wbr/> the AWB algorithm is locked to its latest parameters,<wbr/>
7996 and will not change color balance settings until the lock is set to <code>false</code> (OFF).<wbr/></p>
7997 <p>Since the camera device has a pipeline of in-flight requests,<wbr/> the settings that
7998 get locked do not necessarily correspond to the settings that were present in the
7999 latest capture result received from the camera device,<wbr/> since additional captures
8000 and AWB updates may have occurred even before the result was sent out.<wbr/> If an
8001 application is switching between automatic and manual control and wishes to eliminate
8002 any flicker during the switch,<wbr/> the following procedure is recommended:</p>
8003 <ol>
8004 <li>Starting in auto-AWB mode:</li>
8005 <li>Lock AWB</li>
8006 <li>Wait for the first result to be output that has the AWB locked</li>
8007 <li>Copy AWB settings from that result into a request,<wbr/> set the request to manual AWB</li>
8008 <li>Submit the capture request,<wbr/> proceed to run manual AWB as desired.<wbr/></li>
8009 </ol>
8010 <p>Note that AWB lock is only meaningful when
8011 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is in the AUTO mode; in other modes,<wbr/>
8012 AWB is already fixed to a specific setting.<wbr/></p>
8013 <p>Some LEGACY devices may not support ON; the value is then overridden to OFF.<wbr/></p>
8014             </td>
8015           </tr>
8016
8017
8018           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8019            <!-- end of entry -->
8020         
8021                 
8022           <tr class="entry" id="dynamic_android.control.awbMode">
8023             <td class="entry_name
8024              " rowspan="3">
8025               android.<wbr/>control.<wbr/>awb<wbr/>Mode
8026             </td>
8027             <td class="entry_type">
8028                 <span class="entry_type_name entry_type_name_enum">byte</span>
8029
8030               <span class="entry_type_visibility"> [public]</span>
8031
8032
8033               <span class="entry_type_hwlevel">[legacy] </span>
8034
8035
8036
8037                 <ul class="entry_type_enum">
8038                   <li>
8039                     <span class="entry_type_enum_name">OFF (v3.2)</span>
8040                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled.<wbr/></p>
8041 <p>The application-selected color transform matrix
8042 (<a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>) and gains
8043 (<a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a>) are used by the camera
8044 device for manual white balance control.<wbr/></p></span>
8045                   </li>
8046                   <li>
8047                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
8048                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is active.<wbr/></p>
8049 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8050 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8051 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8052 values used by the camera device for the transform and gains
8053 will be available in the capture result for this request.<wbr/></p></span>
8054                   </li>
8055                   <li>
8056                     <span class="entry_type_enum_name">INCANDESCENT (v3.2)</span>
8057                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8058 the camera device uses incandescent light as the assumed scene
8059 illumination for white balance.<wbr/></p>
8060 <p>While the exact white balance transforms are up to the
8061 camera device,<wbr/> they will approximately match the CIE
8062 standard illuminant A.<wbr/></p>
8063 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8064 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8065 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8066 values used by the camera device for the transform and gains
8067 will be available in the capture result for this request.<wbr/></p></span>
8068                   </li>
8069                   <li>
8070                     <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
8071                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8072 the camera device uses fluorescent light as the assumed scene
8073 illumination for white balance.<wbr/></p>
8074 <p>While the exact white balance transforms are up to the
8075 camera device,<wbr/> they will approximately match the CIE
8076 standard illuminant F2.<wbr/></p>
8077 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8078 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8079 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8080 values used by the camera device for the transform and gains
8081 will be available in the capture result for this request.<wbr/></p></span>
8082                   </li>
8083                   <li>
8084                     <span class="entry_type_enum_name">WARM_FLUORESCENT (v3.2)</span>
8085                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8086 the camera device uses warm fluorescent light as the assumed scene
8087 illumination for white balance.<wbr/></p>
8088 <p>While the exact white balance transforms are up to the
8089 camera device,<wbr/> they will approximately match the CIE
8090 standard illuminant F4.<wbr/></p>
8091 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8092 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8093 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8094 values used by the camera device for the transform and gains
8095 will be available in the capture result for this request.<wbr/></p></span>
8096                   </li>
8097                   <li>
8098                     <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
8099                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8100 the camera device uses daylight light as the assumed scene
8101 illumination for white balance.<wbr/></p>
8102 <p>While the exact white balance transforms are up to the
8103 camera device,<wbr/> they will approximately match the CIE
8104 standard illuminant D65.<wbr/></p>
8105 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8106 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8107 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8108 values used by the camera device for the transform and gains
8109 will be available in the capture result for this request.<wbr/></p></span>
8110                   </li>
8111                   <li>
8112                     <span class="entry_type_enum_name">CLOUDY_DAYLIGHT (v3.2)</span>
8113                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8114 the camera device uses cloudy daylight light as the assumed scene
8115 illumination for white balance.<wbr/></p>
8116 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8117 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8118 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8119 values used by the camera device for the transform and gains
8120 will be available in the capture result for this request.<wbr/></p></span>
8121                   </li>
8122                   <li>
8123                     <span class="entry_type_enum_name">TWILIGHT (v3.2)</span>
8124                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8125 the camera device uses twilight light as the assumed scene
8126 illumination for white balance.<wbr/></p>
8127 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8128 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8129 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8130 values used by the camera device for the transform and gains
8131 will be available in the capture result for this request.<wbr/></p></span>
8132                   </li>
8133                   <li>
8134                     <span class="entry_type_enum_name">SHADE (v3.2)</span>
8135                     <span class="entry_type_enum_notes"><p>The camera device's auto-white balance routine is disabled;
8136 the camera device uses shade light as the assumed scene
8137 illumination for white balance.<wbr/></p>
8138 <p>The application's values for <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>
8139 and <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> are ignored.<wbr/>
8140 For devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability,<wbr/> the
8141 values used by the camera device for the transform and gains
8142 will be available in the capture result for this request.<wbr/></p></span>
8143                   </li>
8144                 </ul>
8145
8146             </td> <!-- entry_type -->
8147
8148             <td class="entry_description">
8149               <p>Whether auto-white balance (AWB) is currently setting the color
8150 transform fields,<wbr/> and what its illumination target
8151 is.<wbr/></p>
8152             </td>
8153
8154             <td class="entry_units">
8155             </td>
8156
8157             <td class="entry_range">
8158               <p><a href="#static_android.control.awbAvailableModes">android.<wbr/>control.<wbr/>awb<wbr/>Available<wbr/>Modes</a></p>
8159             </td>
8160
8161             <td class="entry_hal_version">
8162               <p>3.<wbr/>2</p>
8163             </td>
8164
8165             <td class="entry_tags">
8166               <ul class="entry_tags">
8167                   <li><a href="#tag_BC">BC</a></li>
8168               </ul>
8169             </td>
8170
8171           </tr>
8172           <tr class="entries_header">
8173             <th class="th_details" colspan="6">Details</th>
8174           </tr>
8175           <tr class="entry_cont">
8176             <td class="entry_details" colspan="6">
8177               <p>This control is only effective if <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> is AUTO.<wbr/></p>
8178 <p>When set to the ON mode,<wbr/> the camera device's auto-white balance
8179 routine is enabled,<wbr/> overriding the application's selected
8180 <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
8181 <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>
8182 is OFF,<wbr/> the behavior of AWB is device dependent.<wbr/> It is recommened to
8183 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
8184 setting AE mode to OFF.<wbr/></p>
8185 <p>When set to the OFF mode,<wbr/> the camera device's auto-white balance
8186 routine is disabled.<wbr/> The application manually controls the white
8187 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>
8188 and <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a>.<wbr/></p>
8189 <p>When set to any other modes,<wbr/> the camera device's auto-white
8190 balance routine is disabled.<wbr/> The camera device uses each
8191 particular illumination target for white balance
8192 adjustment.<wbr/> The application's values for
8193 <a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a>,<wbr/>
8194 <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> and
8195 <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> are ignored.<wbr/></p>
8196             </td>
8197           </tr>
8198
8199
8200           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8201            <!-- end of entry -->
8202         
8203                 
8204           <tr class="entry" id="dynamic_android.control.awbRegions">
8205             <td class="entry_name
8206              " rowspan="5">
8207               android.<wbr/>control.<wbr/>awb<wbr/>Regions
8208             </td>
8209             <td class="entry_type">
8210                 <span class="entry_type_name">int32</span>
8211                 <span class="entry_type_container">x</span>
8212
8213                 <span class="entry_type_array">
8214                   5 x area_count
8215                 </span>
8216               <span class="entry_type_visibility"> [public as meteringRectangle]</span>
8217
8218
8219
8220
8221
8222
8223             </td> <!-- entry_type -->
8224
8225             <td class="entry_description">
8226               <p>List of metering areas to use for auto-white-balance illuminant
8227 estimation.<wbr/></p>
8228             </td>
8229
8230             <td class="entry_units">
8231               Pixel coordinates within android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
8232             </td>
8233
8234             <td class="entry_range">
8235               <p>Coordinates must be between <code>[(0,<wbr/>0),<wbr/> (width,<wbr/> height))</code> of
8236 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></p>
8237             </td>
8238
8239             <td class="entry_hal_version">
8240               <p>3.<wbr/>2</p>
8241             </td>
8242
8243             <td class="entry_tags">
8244               <ul class="entry_tags">
8245                   <li><a href="#tag_BC">BC</a></li>
8246               </ul>
8247             </td>
8248
8249           </tr>
8250           <tr class="entries_header">
8251             <th class="th_details" colspan="6">Details</th>
8252           </tr>
8253           <tr class="entry_cont">
8254             <td class="entry_details" colspan="6">
8255               <p>Not available if <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a> is 0.<wbr/>
8256 Otherwise will always be present.<wbr/></p>
8257 <p>The maximum number of regions supported by the device is determined by the value
8258 of <a href="#static_android.control.maxRegionsAwb">android.<wbr/>control.<wbr/>max<wbr/>Regions<wbr/>Awb</a>.<wbr/></p>
8259 <p>The coordinate system is based on the active pixel array,<wbr/>
8260 with (0,<wbr/>0) being the top-left pixel in the active pixel array,<wbr/> and
8261 (<a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>width - 1,<wbr/>
8262 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>height - 1) being the
8263 bottom-right pixel in the active pixel array.<wbr/></p>
8264 <p>The weight must range from 0 to 1000,<wbr/> and represents a weight
8265 for every pixel in the area.<wbr/> This means that a large metering area
8266 with the same weight as a smaller area will have more effect in
8267 the metering result.<wbr/> Metering areas can partially overlap and the
8268 camera device will add the weights in the overlap region.<wbr/></p>
8269 <p>The weights are relative to weights of other white balance metering regions,<wbr/> so if
8270 only one region is used,<wbr/> all non-zero weights will have the same effect.<wbr/> A region with
8271 0 weight is ignored.<wbr/></p>
8272 <p>If all regions have 0 weight,<wbr/> then no specific metering area needs to be used by the
8273 camera device.<wbr/></p>
8274 <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
8275 capture result metadata,<wbr/> the camera device will ignore the sections outside the crop
8276 region and output only the intersection rectangle as the metering region in the result
8277 metadata.<wbr/>  If the region is entirely outside the crop region,<wbr/> it will be ignored and
8278 not reported in the result metadata.<wbr/></p>
8279             </td>
8280           </tr>
8281
8282           <tr class="entries_header">
8283             <th class="th_details" colspan="6">HAL Implementation Details</th>
8284           </tr>
8285           <tr class="entry_cont">
8286             <td class="entry_details" colspan="6">
8287               <p>The HAL level representation of MeteringRectangle[] is a
8288 int[5 * area_<wbr/>count].<wbr/>
8289 Every five elements represent a metering region of
8290 (xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax,<wbr/> weight).<wbr/>
8291 The rectangle is defined to be inclusive on xmin and ymin,<wbr/> but
8292 exclusive on xmax and ymax.<wbr/></p>
8293             </td>
8294           </tr>
8295
8296           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8297            <!-- end of entry -->
8298         
8299                 
8300           <tr class="entry" id="dynamic_android.control.captureIntent">
8301             <td class="entry_name
8302              " rowspan="3">
8303               android.<wbr/>control.<wbr/>capture<wbr/>Intent
8304             </td>
8305             <td class="entry_type">
8306                 <span class="entry_type_name entry_type_name_enum">byte</span>
8307
8308               <span class="entry_type_visibility"> [public]</span>
8309
8310
8311               <span class="entry_type_hwlevel">[legacy] </span>
8312
8313
8314
8315                 <ul class="entry_type_enum">
8316                   <li>
8317                     <span class="entry_type_enum_name">CUSTOM (v3.2)</span>
8318                     <span class="entry_type_enum_notes"><p>The goal of this request doesn't fall into the other
8319 categories.<wbr/> The camera device will default to preview-like
8320 behavior.<wbr/></p></span>
8321                   </li>
8322                   <li>
8323                     <span class="entry_type_enum_name">PREVIEW (v3.2)</span>
8324                     <span class="entry_type_enum_notes"><p>This request is for a preview-like use case.<wbr/></p>
8325 <p>The precapture trigger may be used to start off a metering
8326 w/<wbr/>flash sequence.<wbr/></p></span>
8327                   </li>
8328                   <li>
8329                     <span class="entry_type_enum_name">STILL_CAPTURE (v3.2)</span>
8330                     <span class="entry_type_enum_notes"><p>This request is for a still capture-type
8331 use case.<wbr/></p>
8332 <p>If the flash unit is under automatic control,<wbr/> it may fire as needed.<wbr/></p></span>
8333                   </li>
8334                   <li>
8335                     <span class="entry_type_enum_name">VIDEO_RECORD (v3.2)</span>
8336                     <span class="entry_type_enum_notes"><p>This request is for a video recording
8337 use case.<wbr/></p></span>
8338                   </li>
8339                   <li>
8340                     <span class="entry_type_enum_name">VIDEO_SNAPSHOT (v3.2)</span>
8341                     <span class="entry_type_enum_notes"><p>This request is for a video snapshot (still
8342 image while recording video) use case.<wbr/></p>
8343 <p>The camera device should take the highest-quality image
8344 possible (given the other settings) without disrupting the
8345 frame rate of video recording.<wbr/>  </p></span>
8346                   </li>
8347                   <li>
8348                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
8349                     <span class="entry_type_enum_notes"><p>This request is for a ZSL usecase; the
8350 application will stream full-resolution images and
8351 reprocess one or several later for a final
8352 capture.<wbr/></p></span>
8353                   </li>
8354                   <li>
8355                     <span class="entry_type_enum_name">MANUAL (v3.2)</span>
8356                     <span class="entry_type_enum_notes"><p>This request is for manual capture use case where
8357 the applications want to directly control the capture parameters.<wbr/></p>
8358 <p>For example,<wbr/> the application may wish to manually control
8359 <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>
8360                   </li>
8361                   <li>
8362                     <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
8363                     <span class="entry_type_enum_notes"><p>This request is for a motion tracking use case,<wbr/> where
8364 the application will use camera and inertial sensor data to
8365 locate and track objects in the world.<wbr/></p>
8366 <p>The camera device auto-exposure routine will limit the exposure time
8367 of the camera to no more than 20 milliseconds,<wbr/> to minimize motion blur.<wbr/></p></span>
8368                   </li>
8369                 </ul>
8370
8371             </td> <!-- entry_type -->
8372
8373             <td class="entry_description">
8374               <p>Information to the camera device 3A (auto-exposure,<wbr/>
8375 auto-focus,<wbr/> auto-white balance) routines about the purpose
8376 of this capture,<wbr/> to help the camera device to decide optimal 3A
8377 strategy.<wbr/></p>
8378             </td>
8379
8380             <td class="entry_units">
8381             </td>
8382
8383             <td class="entry_range">
8384             </td>
8385
8386             <td class="entry_hal_version">
8387               <p>3.<wbr/>2</p>
8388             </td>
8389
8390             <td class="entry_tags">
8391               <ul class="entry_tags">
8392                   <li><a href="#tag_BC">BC</a></li>
8393               </ul>
8394             </td>
8395
8396           </tr>
8397           <tr class="entries_header">
8398             <th class="th_details" colspan="6">Details</th>
8399           </tr>
8400           <tr class="entry_cont">
8401             <td class="entry_details" colspan="6">
8402               <p>This control (except for MANUAL) is only effective if
8403 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> != OFF</code> and any 3A routine is active.<wbr/></p>
8404 <p>All intents are supported by all devices,<wbr/> except that:
8405   * ZERO_<wbr/>SHUTTER_<wbr/>LAG will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8406 PRIVATE_<wbr/>REPROCESSING or YUV_<wbr/>REPROCESSING.<wbr/>
8407   * MANUAL will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8408 MANUAL_<wbr/>SENSOR.<wbr/>
8409   * MOTION_<wbr/>TRACKING will be supported if <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
8410 MOTION_<wbr/>TRACKING.<wbr/></p>
8411             </td>
8412           </tr>
8413
8414
8415           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8416            <!-- end of entry -->
8417         
8418                 
8419           <tr class="entry" id="dynamic_android.control.awbState">
8420             <td class="entry_name
8421              " rowspan="3">
8422               android.<wbr/>control.<wbr/>awb<wbr/>State
8423             </td>
8424             <td class="entry_type">
8425                 <span class="entry_type_name entry_type_name_enum">byte</span>
8426
8427               <span class="entry_type_visibility"> [public]</span>
8428
8429
8430               <span class="entry_type_hwlevel">[limited] </span>
8431
8432
8433
8434                 <ul class="entry_type_enum">
8435                   <li>
8436                     <span class="entry_type_enum_name">INACTIVE (v3.2)</span>
8437                     <span class="entry_type_enum_notes"><p>AWB is not in auto mode,<wbr/> or has not yet started metering.<wbr/></p>
8438 <p>When a camera device is opened,<wbr/> it starts in this
8439 state.<wbr/> This is a transient state,<wbr/> the camera device may
8440 skip reporting this state in capture
8441 result.<wbr/></p></span>
8442                   </li>
8443                   <li>
8444                     <span class="entry_type_enum_name">SEARCHING (v3.2)</span>
8445                     <span class="entry_type_enum_notes"><p>AWB doesn't yet have a good set of control
8446 values for the current scene.<wbr/></p>
8447 <p>This is a transient state,<wbr/> the camera device
8448 may skip reporting this state in capture result.<wbr/></p></span>
8449                   </li>
8450                   <li>
8451                     <span class="entry_type_enum_name">CONVERGED (v3.2)</span>
8452                     <span class="entry_type_enum_notes"><p>AWB has a good set of control values for the
8453 current scene.<wbr/></p></span>
8454                   </li>
8455                   <li>
8456                     <span class="entry_type_enum_name">LOCKED (v3.2)</span>
8457                     <span class="entry_type_enum_notes"><p>AWB has been locked.<wbr/></p></span>
8458                   </li>
8459                 </ul>
8460
8461             </td> <!-- entry_type -->
8462
8463             <td class="entry_description">
8464               <p>Current state of auto-white balance (AWB) algorithm.<wbr/></p>
8465             </td>
8466
8467             <td class="entry_units">
8468             </td>
8469
8470             <td class="entry_range">
8471             </td>
8472
8473             <td class="entry_hal_version">
8474               <p>3.<wbr/>2</p>
8475             </td>
8476
8477             <td class="entry_tags">
8478             </td>
8479
8480           </tr>
8481           <tr class="entries_header">
8482             <th class="th_details" colspan="6">Details</th>
8483           </tr>
8484           <tr class="entry_cont">
8485             <td class="entry_details" colspan="6">
8486               <p>Switching between or enabling AWB modes (<a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>) always
8487 resets the AWB state to INACTIVE.<wbr/> Similarly,<wbr/> switching between <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a>,<wbr/>
8488 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
8489 the algorithm states to INACTIVE.<wbr/></p>
8490 <p>The camera device can do several state transitions between two results,<wbr/> if it is
8491 allowed by the state transition table.<wbr/> So INACTIVE may never actually be seen in
8492 a result.<wbr/></p>
8493 <p>The state in the result is the state for this image (in sync with this image): if
8494 AWB state becomes CONVERGED,<wbr/> then the image data associated with this result should
8495 be good to use.<wbr/></p>
8496 <p>Below are state transition tables for different AWB modes.<wbr/></p>
8497 <p>When <code><a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> != AWB_<wbr/>MODE_<wbr/>AUTO</code>:</p>
8498 <table>
8499 <thead>
8500 <tr>
8501 <th align="center">State</th>
8502 <th align="center">Transition Cause</th>
8503 <th align="center">New State</th>
8504 <th align="center">Notes</th>
8505 </tr>
8506 </thead>
8507 <tbody>
8508 <tr>
8509 <td align="center">INACTIVE</td>
8510 <td align="center"></td>
8511 <td align="center">INACTIVE</td>
8512 <td align="center">Camera device auto white balance algorithm is disabled</td>
8513 </tr>
8514 </tbody>
8515 </table>
8516 <p>When <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a> is AWB_<wbr/>MODE_<wbr/>AUTO:</p>
8517 <table>
8518 <thead>
8519 <tr>
8520 <th align="center">State</th>
8521 <th align="center">Transition Cause</th>
8522 <th align="center">New State</th>
8523 <th align="center">Notes</th>
8524 </tr>
8525 </thead>
8526 <tbody>
8527 <tr>
8528 <td align="center">INACTIVE</td>
8529 <td align="center">Camera device initiates AWB scan</td>
8530 <td align="center">SEARCHING</td>
8531 <td align="center">Values changing</td>
8532 </tr>
8533 <tr>
8534 <td align="center">INACTIVE</td>
8535 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8536 <td align="center">LOCKED</td>
8537 <td align="center">Values locked</td>
8538 </tr>
8539 <tr>
8540 <td align="center">SEARCHING</td>
8541 <td align="center">Camera device finishes AWB scan</td>
8542 <td align="center">CONVERGED</td>
8543 <td align="center">Good values,<wbr/> not changing</td>
8544 </tr>
8545 <tr>
8546 <td align="center">SEARCHING</td>
8547 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8548 <td align="center">LOCKED</td>
8549 <td align="center">Values locked</td>
8550 </tr>
8551 <tr>
8552 <td align="center">CONVERGED</td>
8553 <td align="center">Camera device initiates AWB scan</td>
8554 <td align="center">SEARCHING</td>
8555 <td align="center">Values changing</td>
8556 </tr>
8557 <tr>
8558 <td align="center">CONVERGED</td>
8559 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is ON</td>
8560 <td align="center">LOCKED</td>
8561 <td align="center">Values locked</td>
8562 </tr>
8563 <tr>
8564 <td align="center">LOCKED</td>
8565 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8566 <td align="center">SEARCHING</td>
8567 <td align="center">Values not good after unlock</td>
8568 </tr>
8569 </tbody>
8570 </table>
8571 <p>For the above table,<wbr/> the camera device may skip reporting any state changes that happen
8572 without application intervention (i.<wbr/>e.<wbr/> mode switch,<wbr/> trigger,<wbr/> locking).<wbr/> Any state that
8573 can be skipped in that manner is called a transient state.<wbr/></p>
8574 <p>For example,<wbr/> for this AWB mode (AWB_<wbr/>MODE_<wbr/>AUTO),<wbr/> in addition to the state transitions
8575 listed in above table,<wbr/> it is also legal for the camera device to skip one or more
8576 transient states between two results.<wbr/> See below table for examples:</p>
8577 <table>
8578 <thead>
8579 <tr>
8580 <th align="center">State</th>
8581 <th align="center">Transition Cause</th>
8582 <th align="center">New State</th>
8583 <th align="center">Notes</th>
8584 </tr>
8585 </thead>
8586 <tbody>
8587 <tr>
8588 <td align="center">INACTIVE</td>
8589 <td align="center">Camera device finished AWB scan</td>
8590 <td align="center">CONVERGED</td>
8591 <td align="center">Values are already good,<wbr/> transient states are skipped by camera device.<wbr/></td>
8592 </tr>
8593 <tr>
8594 <td align="center">LOCKED</td>
8595 <td align="center"><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a> is OFF</td>
8596 <td align="center">CONVERGED</td>
8597 <td align="center">Values good after unlock,<wbr/> transient states are skipped by camera device.<wbr/></td>
8598 </tr>
8599 </tbody>
8600 </table>
8601             </td>
8602           </tr>
8603
8604
8605           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8606            <!-- end of entry -->
8607         
8608                 
8609           <tr class="entry" id="dynamic_android.control.effectMode">
8610             <td class="entry_name
8611              " rowspan="3">
8612               android.<wbr/>control.<wbr/>effect<wbr/>Mode
8613             </td>
8614             <td class="entry_type">
8615                 <span class="entry_type_name entry_type_name_enum">byte</span>
8616
8617               <span class="entry_type_visibility"> [public]</span>
8618
8619
8620               <span class="entry_type_hwlevel">[legacy] </span>
8621
8622
8623
8624                 <ul class="entry_type_enum">
8625                   <li>
8626                     <span class="entry_type_enum_name">OFF (v3.2)</span>
8627                     <span class="entry_type_enum_notes"><p>No color effect will be applied.<wbr/></p></span>
8628                   </li>
8629                   <li>
8630                     <span class="entry_type_enum_name">MONO (v3.2)</span>
8631                     <span class="entry_type_enum_optional">[optional]</span>
8632                     <span class="entry_type_enum_notes"><p>A "monocolor" effect where the image is mapped into
8633 a single color.<wbr/></p>
8634 <p>This will typically be grayscale.<wbr/></p></span>
8635                   </li>
8636                   <li>
8637                     <span class="entry_type_enum_name">NEGATIVE (v3.2)</span>
8638                     <span class="entry_type_enum_optional">[optional]</span>
8639                     <span class="entry_type_enum_notes"><p>A "photo-negative" effect where the image's colors
8640 are inverted.<wbr/></p></span>
8641                   </li>
8642                   <li>
8643                     <span class="entry_type_enum_name">SOLARIZE (v3.2)</span>
8644                     <span class="entry_type_enum_optional">[optional]</span>
8645                     <span class="entry_type_enum_notes"><p>A "solarisation" effect (Sabattier effect) where the
8646 image is wholly or partially reversed in
8647 tone.<wbr/></p></span>
8648                   </li>
8649                   <li>
8650                     <span class="entry_type_enum_name">SEPIA (v3.2)</span>
8651                     <span class="entry_type_enum_optional">[optional]</span>
8652                     <span class="entry_type_enum_notes"><p>A "sepia" effect where the image is mapped into warm
8653 gray,<wbr/> red,<wbr/> and brown tones.<wbr/></p></span>
8654                   </li>
8655                   <li>
8656                     <span class="entry_type_enum_name">POSTERIZE (v3.2)</span>
8657                     <span class="entry_type_enum_optional">[optional]</span>
8658                     <span class="entry_type_enum_notes"><p>A "posterization" effect where the image uses
8659 discrete regions of tone rather than a continuous
8660 gradient of tones.<wbr/></p></span>
8661                   </li>
8662                   <li>
8663                     <span class="entry_type_enum_name">WHITEBOARD (v3.2)</span>
8664                     <span class="entry_type_enum_optional">[optional]</span>
8665                     <span class="entry_type_enum_notes"><p>A "whiteboard" effect where the image is typically displayed
8666 as regions of white,<wbr/> with black or grey details.<wbr/></p></span>
8667                   </li>
8668                   <li>
8669                     <span class="entry_type_enum_name">BLACKBOARD (v3.2)</span>
8670                     <span class="entry_type_enum_optional">[optional]</span>
8671                     <span class="entry_type_enum_notes"><p>A "blackboard" effect where the image is typically displayed
8672 as regions of black,<wbr/> with white or grey details.<wbr/></p></span>
8673                   </li>
8674                   <li>
8675                     <span class="entry_type_enum_name">AQUA (v3.2)</span>
8676                     <span class="entry_type_enum_optional">[optional]</span>
8677                     <span class="entry_type_enum_notes"><p>An "aqua" effect where a blue hue is added to the image.<wbr/></p></span>
8678                   </li>
8679                 </ul>
8680
8681             </td> <!-- entry_type -->
8682
8683             <td class="entry_description">
8684               <p>A special color effect to apply.<wbr/></p>
8685             </td>
8686
8687             <td class="entry_units">
8688             </td>
8689
8690             <td class="entry_range">
8691               <p><a href="#static_android.control.availableEffects">android.<wbr/>control.<wbr/>available<wbr/>Effects</a></p>
8692             </td>
8693
8694             <td class="entry_hal_version">
8695               <p>3.<wbr/>2</p>
8696             </td>
8697
8698             <td class="entry_tags">
8699               <ul class="entry_tags">
8700                   <li><a href="#tag_BC">BC</a></li>
8701               </ul>
8702             </td>
8703
8704           </tr>
8705           <tr class="entries_header">
8706             <th class="th_details" colspan="6">Details</th>
8707           </tr>
8708           <tr class="entry_cont">
8709             <td class="entry_details" colspan="6">
8710               <p>When this mode is set,<wbr/> a color effect will be applied
8711 to images produced by the camera device.<wbr/> The interpretation
8712 and implementation of these color effects is left to the
8713 implementor of the camera device,<wbr/> and should not be
8714 depended on to be consistent (or present) across all
8715 devices.<wbr/></p>
8716             </td>
8717           </tr>
8718
8719
8720           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8721            <!-- end of entry -->
8722         
8723                 
8724           <tr class="entry" id="dynamic_android.control.mode">
8725             <td class="entry_name
8726              " rowspan="3">
8727               android.<wbr/>control.<wbr/>mode
8728             </td>
8729             <td class="entry_type">
8730                 <span class="entry_type_name entry_type_name_enum">byte</span>
8731
8732               <span class="entry_type_visibility"> [public]</span>
8733
8734
8735               <span class="entry_type_hwlevel">[legacy] </span>
8736
8737
8738
8739                 <ul class="entry_type_enum">
8740                   <li>
8741                     <span class="entry_type_enum_name">OFF (v3.2)</span>
8742                     <span class="entry_type_enum_notes"><p>Full application control of pipeline.<wbr/></p>
8743 <p>All control by the device's metering and focusing (3A)
8744 routines is disabled,<wbr/> and no other settings in
8745 android.<wbr/>control.<wbr/>* have any effect,<wbr/> except that
8746 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> may be used by the camera
8747 device to select post-processing values for processing
8748 blocks that do not allow for manual control,<wbr/> or are not
8749 exposed by the camera API.<wbr/></p>
8750 <p>However,<wbr/> the camera device's 3A routines may continue to
8751 collect statistics and update their internal state so that
8752 when control is switched to AUTO mode,<wbr/> good control values
8753 can be immediately applied.<wbr/></p></span>
8754                   </li>
8755                   <li>
8756                     <span class="entry_type_enum_name">AUTO (v3.2)</span>
8757                     <span class="entry_type_enum_notes"><p>Use settings for each individual 3A routine.<wbr/></p>
8758 <p>Manual control of capture parameters is disabled.<wbr/> All
8759 controls in android.<wbr/>control.<wbr/>* besides sceneMode take
8760 effect.<wbr/></p></span>
8761                   </li>
8762                   <li>
8763                     <span class="entry_type_enum_name">USE_SCENE_MODE (v3.2)</span>
8764                     <span class="entry_type_enum_optional">[optional]</span>
8765                     <span class="entry_type_enum_notes"><p>Use a specific scene mode.<wbr/></p>
8766 <p>Enabling this disables control.<wbr/>aeMode,<wbr/> control.<wbr/>awbMode and
8767 control.<wbr/>afMode controls; the camera device will ignore
8768 those settings while USE_<wbr/>SCENE_<wbr/>MODE is active (except for
8769 FACE_<wbr/>PRIORITY scene mode).<wbr/> Other control entries are still active.<wbr/>
8770 This setting can only be used if scene mode is supported (i.<wbr/>e.<wbr/>
8771 <a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a>
8772 contain some modes other than DISABLED).<wbr/></p></span>
8773                   </li>
8774                   <li>
8775                     <span class="entry_type_enum_name">OFF_KEEP_STATE (v3.2)</span>
8776                     <span class="entry_type_enum_optional">[optional]</span>
8777                     <span class="entry_type_enum_notes"><p>Same as OFF mode,<wbr/> except that this capture will not be
8778 used by camera device background auto-exposure,<wbr/> auto-white balance and
8779 auto-focus algorithms (3A) to update their statistics.<wbr/></p>
8780 <p>Specifically,<wbr/> the 3A routines are locked to the last
8781 values set from a request with AUTO,<wbr/> OFF,<wbr/> or
8782 USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> and any statistics or state updates
8783 collected from manual captures with OFF_<wbr/>KEEP_<wbr/>STATE will be
8784 discarded by the camera device.<wbr/></p></span>
8785                   </li>
8786                 </ul>
8787
8788             </td> <!-- entry_type -->
8789
8790             <td class="entry_description">
8791               <p>Overall mode of 3A (auto-exposure,<wbr/> auto-white-balance,<wbr/> auto-focus) control
8792 routines.<wbr/></p>
8793             </td>
8794
8795             <td class="entry_units">
8796             </td>
8797
8798             <td class="entry_range">
8799               <p><a href="#static_android.control.availableModes">android.<wbr/>control.<wbr/>available<wbr/>Modes</a></p>
8800             </td>
8801
8802             <td class="entry_hal_version">
8803               <p>3.<wbr/>2</p>
8804             </td>
8805
8806             <td class="entry_tags">
8807               <ul class="entry_tags">
8808                   <li><a href="#tag_BC">BC</a></li>
8809               </ul>
8810             </td>
8811
8812           </tr>
8813           <tr class="entries_header">
8814             <th class="th_details" colspan="6">Details</th>
8815           </tr>
8816           <tr class="entry_cont">
8817             <td class="entry_details" colspan="6">
8818               <p>This is a top-level 3A control switch.<wbr/> When set to OFF,<wbr/> all 3A control
8819 by the camera device is disabled.<wbr/> The application must set the fields for
8820 capture parameters itself.<wbr/></p>
8821 <p>When set to AUTO,<wbr/> the individual algorithm controls in
8822 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>
8823 <p>When set to USE_<wbr/>SCENE_<wbr/>MODE,<wbr/> the individual controls in
8824 android.<wbr/>control.<wbr/>* are mostly disabled,<wbr/> and the camera device
8825 implements one of the scene mode settings (such as ACTION,<wbr/>
8826 SUNSET,<wbr/> or PARTY) as it wishes.<wbr/> The camera device scene mode
8827 3A settings are provided by <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">capture results</a>.<wbr/></p>
8828 <p>When set to OFF_<wbr/>KEEP_<wbr/>STATE,<wbr/> it is similar to OFF mode,<wbr/> the only difference
8829 is that this frame will not be used by camera device background 3A statistics
8830 update,<wbr/> as if this frame is never captured.<wbr/> This mode can be used in the scenario
8831 where the application doesn't want a 3A manual control capture to affect
8832 the subsequent auto 3A capture results.<wbr/></p>
8833             </td>
8834           </tr>
8835
8836
8837           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
8838            <!-- end of entry -->
8839         
8840                 
8841           <tr class="entry" id="dynamic_android.control.sceneMode">
8842             <td class="entry_name
8843              " rowspan="5">
8844               android.<wbr/>control.<wbr/>scene<wbr/>Mode
8845             </td>
8846             <td class="entry_type">
8847                 <span class="entry_type_name entry_type_name_enum">byte</span>
8848
8849               <span class="entry_type_visibility"> [public]</span>
8850
8851
8852               <span class="entry_type_hwlevel">[legacy] </span>
8853
8854
8855
8856                 <ul class="entry_type_enum">
8857                   <li>
8858                     <span class="entry_type_enum_name">DISABLED (v3.2)</span>
8859                     <span class="entry_type_enum_value">0</span>
8860                     <span class="entry_type_enum_notes"><p>Indicates that no scene modes are set for a given capture request.<wbr/></p></span>
8861                   </li>
8862                   <li>
8863                     <span class="entry_type_enum_name">FACE_PRIORITY (v3.2)</span>
8864                     <span class="entry_type_enum_notes"><p>If face detection support exists,<wbr/> use face
8865 detection data for auto-focus,<wbr/> auto-white balance,<wbr/> and
8866 auto-exposure routines.<wbr/></p>
8867 <p>If face detection statistics are disabled
8868 (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/>
8869 this should still operate correctly (but will not return
8870 face detection statistics to the framework).<wbr/></p>
8871 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
8872 <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>
8873 remain active when FACE_<wbr/>PRIORITY is set.<wbr/></p></span>
8874                   </li>
8875                   <li>
8876                     <span class="entry_type_enum_name">ACTION (v3.2)</span>
8877                     <span class="entry_type_enum_optional">[optional]</span>
8878                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving objects.<wbr/></p>
8879 <p>Similar to SPORTS.<wbr/></p></span>
8880                   </li>
8881                   <li>
8882                     <span class="entry_type_enum_name">PORTRAIT (v3.2)</span>
8883                     <span class="entry_type_enum_optional">[optional]</span>
8884                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people.<wbr/></p></span>
8885                   </li>
8886                   <li>
8887                     <span class="entry_type_enum_name">LANDSCAPE (v3.2)</span>
8888                     <span class="entry_type_enum_optional">[optional]</span>
8889                     <span class="entry_type_enum_notes"><p>Optimized for photos of distant macroscopic objects.<wbr/></p></span>
8890                   </li>
8891                   <li>
8892                     <span class="entry_type_enum_name">NIGHT (v3.2)</span>
8893                     <span class="entry_type_enum_optional">[optional]</span>
8894                     <span class="entry_type_enum_notes"><p>Optimized for low-light settings.<wbr/></p></span>
8895                   </li>
8896                   <li>
8897                     <span class="entry_type_enum_name">NIGHT_PORTRAIT (v3.2)</span>
8898                     <span class="entry_type_enum_optional">[optional]</span>
8899                     <span class="entry_type_enum_notes"><p>Optimized for still photos of people in low-light
8900 settings.<wbr/></p></span>
8901                   </li>
8902                   <li>
8903                     <span class="entry_type_enum_name">THEATRE (v3.2)</span>
8904                     <span class="entry_type_enum_optional">[optional]</span>
8905                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings where flash must
8906 remain off.<wbr/></p></span>
8907                   </li>
8908                   <li>
8909                     <span class="entry_type_enum_name">BEACH (v3.2)</span>
8910                     <span class="entry_type_enum_optional">[optional]</span>
8911                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor beach settings.<wbr/></p></span>
8912                   </li>
8913                   <li>
8914                     <span class="entry_type_enum_name">SNOW (v3.2)</span>
8915                     <span class="entry_type_enum_optional">[optional]</span>
8916                     <span class="entry_type_enum_notes"><p>Optimized for bright,<wbr/> outdoor settings containing snow.<wbr/></p></span>
8917                   </li>
8918                   <li>
8919                     <span class="entry_type_enum_name">SUNSET (v3.2)</span>
8920                     <span class="entry_type_enum_optional">[optional]</span>
8921                     <span class="entry_type_enum_notes"><p>Optimized for scenes of the setting sun.<wbr/></p></span>
8922                   </li>
8923                   <li>
8924                     <span class="entry_type_enum_name">STEADYPHOTO (v3.2)</span>
8925                     <span class="entry_type_enum_optional">[optional]</span>
8926                     <span class="entry_type_enum_notes"><p>Optimized to avoid blurry photos due to small amounts of
8927 device motion (for example: due to hand shake).<wbr/></p></span>
8928                   </li>
8929                   <li>
8930                     <span class="entry_type_enum_name">FIREWORKS (v3.2)</span>
8931                     <span class="entry_type_enum_optional">[optional]</span>
8932                     <span class="entry_type_enum_notes"><p>Optimized for nighttime photos of fireworks.<wbr/></p></span>
8933                   </li>
8934                   <li>
8935                     <span class="entry_type_enum_name">SPORTS (v3.2)</span>
8936                     <span class="entry_type_enum_optional">[optional]</span>
8937                     <span class="entry_type_enum_notes"><p>Optimized for photos of quickly moving people.<wbr/></p>
8938 <p>Similar to ACTION.<wbr/></p></span>
8939                   </li>
8940                   <li>
8941                     <span class="entry_type_enum_name">PARTY (v3.2)</span>
8942                     <span class="entry_type_enum_optional">[optional]</span>
8943                     <span class="entry_type_enum_notes"><p>Optimized for dim,<wbr/> indoor settings with multiple moving
8944 people.<wbr/></p></span>
8945                   </li>
8946                   <li>
8947                     <span class="entry_type_enum_name">CANDLELIGHT (v3.2)</span>
8948                     <span class="entry_type_enum_optional">[optional]</span>
8949                     <span class="entry_type_enum_notes"><p>Optimized for dim settings where the main light source
8950 is a flame.<wbr/></p></span>
8951                   </li>
8952                   <li>
8953                     <span class="entry_type_enum_name">BARCODE (v3.2)</span>
8954                     <span class="entry_type_enum_optional">[optional]</span>
8955                     <span class="entry_type_enum_notes"><p>Optimized for accurately capturing a photo of barcode
8956 for use by camera applications that wish to read the
8957 barcode value.<wbr/></p></span>
8958                   </li>
8959                   <li>
8960                     <span class="entry_type_enum_name">HIGH_SPEED_VIDEO (v3.2)</span>
8961                     <span class="entry_type_enum_deprecated">[deprecated]</span>
8962                     <span class="entry_type_enum_optional">[optional]</span>
8963                     <span class="entry_type_enum_notes"><p>This is deprecated,<wbr/> please use <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
8964 and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>
8965 for high speed video recording.<wbr/></p>
8966 <p>Optimized for high speed video recording (frame rate &gt;=60fps) use case.<wbr/></p>
8967 <p>The supported high speed video sizes and fps ranges are specified in
8968 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/> To get desired
8969 output frame rates,<wbr/> the application is only allowed to select video size
8970 and fps range combinations listed in this static metadata.<wbr/> The fps range
8971 can be control via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
8972 <p>In this mode,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
8973 ON,<wbr/> ON,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
8974 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
8975 and post-processing parameters is possible.<wbr/> All other controls operate the
8976 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
8977 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
8978 <ul>
8979 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
8980 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
8981 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
8982 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
8983 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
8984 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
8985 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
8986 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
8987 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
8988 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
8989 </ul>
8990 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
8991 <ul>
8992 <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>
8993 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
8994 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
8995 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></li>
8996 </ul>
8997 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
8998 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
8999 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
9000 the application need check if the video encoder is capable of supporting the
9001 high frame rate for a given video size,<wbr/> or it will end up with lower recording
9002 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the preview frame
9003 rate will be bounded by the screen refresh rate.<wbr/></p>
9004 <p>The camera device will only support up to 2 output high speed streams
9005 (processed non-stalling format defined in <a href="#static_android.request.maxNumOutputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams</a>)
9006 in this mode.<wbr/> This control will be effective only if all of below conditions are true:</p>
9007 <ul>
9008 <li>The application created no more than maxNumHighSpeedStreams processed non-stalling
9009 format output streams,<wbr/> where maxNumHighSpeedStreams is calculated as
9010 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>
9011 <li>The stream sizes are selected from the sizes reported by
9012 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a>.<wbr/></li>
9013 <li>No processed non-stalling or raw streams are configured.<wbr/></li>
9014 </ul>
9015 <p>When above conditions are NOT satistied,<wbr/> the controls of this mode and
9016 <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/>
9017 the camera device will fall back to <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> <code>==</code> AUTO,<wbr/>
9018 and the returned capture result metadata will give the fps range choosen
9019 by the camera device.<wbr/></p>
9020 <p>Switching into or out of this mode may trigger some camera ISP/<wbr/>sensor
9021 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
9022 the application avoids unnecessary scene mode switch as much as possible.<wbr/></p></span>
9023                   </li>
9024                   <li>
9025                     <span class="entry_type_enum_name">HDR (v3.2)</span>
9026                     <span class="entry_type_enum_optional">[optional]</span>
9027                     <span class="entry_type_enum_notes"><p>Turn on a device-specific high dynamic range (HDR) mode.<wbr/></p>
9028 <p>In this scene mode,<wbr/> the camera device captures images
9029 that keep a larger range of scene illumination levels
9030 visible in the final image.<wbr/> For example,<wbr/> when taking a
9031 picture of a object in front of a bright window,<wbr/> both
9032 the object and the scene through the window may be
9033 visible when using HDR mode,<wbr/> while in normal AUTO mode,<wbr/>
9034 one or the other may be poorly exposed.<wbr/> As a tradeoff,<wbr/>
9035 HDR mode generally takes much longer to capture a single
9036 image,<wbr/> has no user control,<wbr/> and may have other artifacts
9037 depending on the HDR method used.<wbr/></p>
9038 <p>Therefore,<wbr/> HDR captures operate at a much slower rate
9039 than regular captures.<wbr/></p>
9040 <p>In this mode,<wbr/> on LIMITED or FULL devices,<wbr/> when a request
9041 is made with a <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> of
9042 STILL_<wbr/>CAPTURE,<wbr/> the camera device will capture an image
9043 using a high dynamic range capture technique.<wbr/>  On LEGACY
9044 devices,<wbr/> captures that target a JPEG-format output will
9045 be captured with HDR,<wbr/> and the capture intent is not
9046 relevant.<wbr/></p>
9047 <p>The HDR capture may involve the device capturing a burst
9048 of images internally and combining them into one,<wbr/> or it
9049 may involve the device using specialized high dynamic
9050 range capture hardware.<wbr/> In all cases,<wbr/> a single image is
9051 produced in response to a capture request submitted
9052 while in HDR mode.<wbr/></p>
9053 <p>Since substantial post-processing is generally needed to
9054 produce an HDR image,<wbr/> only YUV,<wbr/> PRIVATE,<wbr/> and JPEG
9055 outputs are supported for LIMITED/<wbr/>FULL device HDR
9056 captures,<wbr/> and only JPEG outputs are supported for LEGACY
9057 HDR captures.<wbr/> Using a RAW output for HDR capture is not
9058 supported.<wbr/></p>
9059 <p>Some devices may also support always-on HDR,<wbr/> which
9060 applies HDR processing at full frame rate.<wbr/>  For these
9061 devices,<wbr/> intents other than STILL_<wbr/>CAPTURE will also
9062 produce an HDR output with no frame rate impact compared
9063 to normal operation,<wbr/> though the quality may be lower
9064 than for STILL_<wbr/>CAPTURE intents.<wbr/></p>
9065 <p>If SCENE_<wbr/>MODE_<wbr/>HDR is used with unsupported output types
9066 or capture intents,<wbr/> the images captured will be as if
9067 the SCENE_<wbr/>MODE was not enabled at all.<wbr/></p></span>
9068                   </li>
9069                   <li>
9070                     <span class="entry_type_enum_name">FACE_PRIORITY_LOW_LIGHT (v3.2)</span>
9071                     <span class="entry_type_enum_optional">[optional]</span>
9072                     <span class="entry_type_enum_hidden">[hidden]</span>
9073                     <span class="entry_type_enum_notes"><p>Same as FACE_<wbr/>PRIORITY scene mode,<wbr/> except that the camera
9074 device will choose higher sensitivity values (<a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>)
9075 under low light conditions.<wbr/></p>
9076 <p>The camera device may be tuned to expose the images in a reduced
9077 sensitivity range to produce the best quality images.<wbr/> For example,<wbr/>
9078 if the <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> gives range of [100,<wbr/> 1600],<wbr/>
9079 the camera device auto-exposure routine tuning process may limit the actual
9080 exposure sensitivity range to [100,<wbr/> 1200] to ensure that the noise level isn't
9081 exessive in order to preserve the image quality.<wbr/> Under this situation,<wbr/> the image under
9082 low light may be under-exposed when the sensor max exposure time (bounded by the
9083 <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a> when <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of the
9084 ON_<wbr/>* modes) and effective max sensitivity are reached.<wbr/> This scene mode allows the
9085 camera device auto-exposure routine to increase the sensitivity up to the max
9086 sensitivity specified by <a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a> when the scene is too
9087 dark and the max exposure time is reached.<wbr/> The captured images may be noisier
9088 compared with the images captured in normal FACE_<wbr/>PRIORITY mode; therefore,<wbr/> it is
9089 recommended that the application only use this scene mode when it is capable of
9090 reducing the noise level of the captured images.<wbr/></p>
9091 <p>Unlike the other scene modes,<wbr/> <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9092 <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>
9093 remain active when FACE_<wbr/>PRIORITY_<wbr/>LOW_<wbr/>LIGHT is set.<wbr/></p></span>
9094                   </li>
9095                   <li>
9096                     <span class="entry_type_enum_name">DEVICE_CUSTOM_START (v3.2)</span>
9097                     <span class="entry_type_enum_optional">[optional]</span>
9098                     <span class="entry_type_enum_hidden">[hidden]</span>
9099                     <span class="entry_type_enum_value">100</span>
9100                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9101 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9102 customized scene modes.<wbr/></p></span>
9103                   </li>
9104                   <li>
9105                     <span class="entry_type_enum_name">DEVICE_CUSTOM_END (v3.2)</span>
9106                     <span class="entry_type_enum_optional">[optional]</span>
9107                     <span class="entry_type_enum_hidden">[hidden]</span>
9108                     <span class="entry_type_enum_value">127</span>
9109                     <span class="entry_type_enum_notes"><p>Scene mode values within the range of
9110 <code>[DEVICE_<wbr/>CUSTOM_<wbr/>START,<wbr/> DEVICE_<wbr/>CUSTOM_<wbr/>END]</code> are reserved for device specific
9111 customized scene modes.<wbr/></p></span>
9112                   </li>
9113                 </ul>
9114
9115             </td> <!-- entry_type -->
9116
9117             <td class="entry_description">
9118               <p>Control for which scene mode is currently active.<wbr/></p>
9119             </td>
9120
9121             <td class="entry_units">
9122             </td>
9123
9124             <td class="entry_range">
9125               <p><a href="#static_android.control.availableSceneModes">android.<wbr/>control.<wbr/>available<wbr/>Scene<wbr/>Modes</a></p>
9126             </td>
9127
9128             <td class="entry_hal_version">
9129               <p>3.<wbr/>2</p>
9130             </td>
9131
9132             <td class="entry_tags">
9133               <ul class="entry_tags">
9134                   <li><a href="#tag_BC">BC</a></li>
9135               </ul>
9136             </td>
9137
9138           </tr>
9139           <tr class="entries_header">
9140             <th class="th_details" colspan="6">Details</th>
9141           </tr>
9142           <tr class="entry_cont">
9143             <td class="entry_details" colspan="6">
9144               <p>Scene modes are custom camera modes optimized for a certain set of conditions and
9145 capture settings.<wbr/></p>
9146 <p>This is the mode that that is active when
9147 <code><a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == USE_<wbr/>SCENE_<wbr/>MODE</code>.<wbr/> Aside from FACE_<wbr/>PRIORITY,<wbr/> these modes will
9148 disable <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>,<wbr/> and <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>
9149 while in use.<wbr/></p>
9150 <p>The interpretation and implementation of these scene modes is left
9151 to the implementor of the camera device.<wbr/> Their behavior will not be
9152 consistent across all devices,<wbr/> and any given device may only implement
9153 a subset of these modes.<wbr/></p>
9154             </td>
9155           </tr>
9156
9157           <tr class="entries_header">
9158             <th class="th_details" colspan="6">HAL Implementation Details</th>
9159           </tr>
9160           <tr class="entry_cont">
9161             <td class="entry_details" colspan="6">
9162               <p>HAL implementations that include scene modes are expected to provide
9163 the per-scene settings to use for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/>
9164 <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
9165 <a href="#static_android.control.sceneModeOverrides">android.<wbr/>control.<wbr/>scene<wbr/>Mode<wbr/>Overrides</a>.<wbr/></p>
9166 <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/> the
9167 HAL must list supported video size and fps range in
9168 <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/>  1280x720,<wbr/>
9169 if the HAL has two different sensor configurations for normal streaming mode and high
9170 speed streaming,<wbr/> when this scene mode is set/<wbr/>reset in a sequence of capture requests,<wbr/> the
9171 HAL may have to switch between different sensor modes.<wbr/>  This mode is deprecated in legacy
9172 HAL3.<wbr/>3,<wbr/> to support high speed video recording,<wbr/> please implement
9173 <a href="#static_android.control.availableHighSpeedVideoConfigurations">android.<wbr/>control.<wbr/>available<wbr/>High<wbr/>Speed<wbr/>Video<wbr/>Configurations</a> and CONSTRAINED_<wbr/>HIGH_<wbr/>SPEED_<wbr/>VIDEO
9174 capbility defined in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
9175             </td>
9176           </tr>
9177
9178           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9179            <!-- end of entry -->
9180         
9181                 
9182           <tr class="entry" id="dynamic_android.control.videoStabilizationMode">
9183             <td class="entry_name
9184              " rowspan="3">
9185               android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode
9186             </td>
9187             <td class="entry_type">
9188                 <span class="entry_type_name entry_type_name_enum">byte</span>
9189
9190               <span class="entry_type_visibility"> [public]</span>
9191
9192
9193               <span class="entry_type_hwlevel">[legacy] </span>
9194
9195
9196
9197                 <ul class="entry_type_enum">
9198                   <li>
9199                     <span class="entry_type_enum_name">OFF (v3.2)</span>
9200                     <span class="entry_type_enum_notes"><p>Video stabilization is disabled.<wbr/></p></span>
9201                   </li>
9202                   <li>
9203                     <span class="entry_type_enum_name">ON (v3.2)</span>
9204                     <span class="entry_type_enum_notes"><p>Video stabilization is enabled.<wbr/></p></span>
9205                   </li>
9206                 </ul>
9207
9208             </td> <!-- entry_type -->
9209
9210             <td class="entry_description">
9211               <p>Whether video stabilization is
9212 active.<wbr/></p>
9213             </td>
9214
9215             <td class="entry_units">
9216             </td>
9217
9218             <td class="entry_range">
9219             </td>
9220
9221             <td class="entry_hal_version">
9222               <p>3.<wbr/>2</p>
9223             </td>
9224
9225             <td class="entry_tags">
9226               <ul class="entry_tags">
9227                   <li><a href="#tag_BC">BC</a></li>
9228               </ul>
9229             </td>
9230
9231           </tr>
9232           <tr class="entries_header">
9233             <th class="th_details" colspan="6">Details</th>
9234           </tr>
9235           <tr class="entry_cont">
9236             <td class="entry_details" colspan="6">
9237               <p>Video stabilization automatically warps images from
9238 the camera in order to stabilize motion between consecutive frames.<wbr/></p>
9239 <p>If enabled,<wbr/> video stabilization can modify the
9240 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a> to keep the video stream stabilized.<wbr/></p>
9241 <p>Switching between different video stabilization modes may take several
9242 frames to initialize,<wbr/> the camera device will report the current mode
9243 in capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/>
9244 the video stabilization modes in the first several capture results may
9245 still be "OFF",<wbr/> and it will become "ON" when the initialization is
9246 done.<wbr/></p>
9247 <p>In addition,<wbr/> not all recording sizes or frame rates may be supported for
9248 stabilization by a device that reports stabilization support.<wbr/> It is guaranteed
9249 that an output targeting a MediaRecorder or MediaCodec will be stabilized if
9250 the recording resolution is less than or equal to 1920 x 1080 (width less than
9251 or equal to 1920,<wbr/> height less than or equal to 1080),<wbr/> and the recording
9252 frame rate is less than or equal to 30fps.<wbr/>  At other sizes,<wbr/> the CaptureResult
9253 <a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a> field will return
9254 OFF if the recording output is not stabilized,<wbr/> or if there are no output
9255 Surface types that can be stabilized.<wbr/></p>
9256 <p>If a camera device supports both this mode and OIS
9257 (<a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may
9258 produce undesirable interaction,<wbr/> so it is recommended not to enable
9259 both at the same time.<wbr/></p>
9260             </td>
9261           </tr>
9262
9263
9264           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9265            <!-- end of entry -->
9266         
9267                 
9268           <tr class="entry" id="dynamic_android.control.postRawSensitivityBoost">
9269             <td class="entry_name
9270              " rowspan="3">
9271               android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost
9272             </td>
9273             <td class="entry_type">
9274                 <span class="entry_type_name">int32</span>
9275
9276               <span class="entry_type_visibility"> [public]</span>
9277
9278
9279
9280
9281
9282
9283             </td> <!-- entry_type -->
9284
9285             <td class="entry_description">
9286               <p>The amount of additional sensitivity boost applied to output images
9287 after RAW sensor data is captured.<wbr/></p>
9288             </td>
9289
9290             <td class="entry_units">
9291               ISO arithmetic units,<wbr/> the same as android.<wbr/>sensor.<wbr/>sensitivity
9292             </td>
9293
9294             <td class="entry_range">
9295               <p><a href="#static_android.control.postRawSensitivityBoostRange">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost<wbr/>Range</a></p>
9296             </td>
9297
9298             <td class="entry_hal_version">
9299               <p>3.<wbr/>2</p>
9300             </td>
9301
9302             <td class="entry_tags">
9303             </td>
9304
9305           </tr>
9306           <tr class="entries_header">
9307             <th class="th_details" colspan="6">Details</th>
9308           </tr>
9309           <tr class="entry_cont">
9310             <td class="entry_details" colspan="6">
9311               <p>Some camera devices support additional digital sensitivity boosting in the
9312 camera processing pipeline after sensor RAW image is captured.<wbr/>
9313 Such a boost will be applied to YUV/<wbr/>JPEG format output images but will not
9314 have effect on RAW output formats like RAW_<wbr/>SENSOR,<wbr/> RAW10,<wbr/> RAW12 or RAW_<wbr/>OPAQUE.<wbr/></p>
9315 <p>This key will be <code>null</code> for devices that do not support any RAW format
9316 outputs.<wbr/> For devices that do support RAW format outputs,<wbr/> this key will always
9317 present,<wbr/> and if a device does not support post RAW sensitivity boost,<wbr/> it will
9318 list <code>100</code> in this key.<wbr/></p>
9319 <p>If the camera device cannot apply the exact boost requested,<wbr/> it will reduce the
9320 boost to the nearest supported value.<wbr/>
9321 The final boost value used will be available in the output capture result.<wbr/></p>
9322 <p>For devices that support post RAW sensitivity boost,<wbr/> the YUV/<wbr/>JPEG output images
9323 of such device will have the total sensitivity of
9324 <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> * <a href="#controls_android.control.postRawSensitivityBoost">android.<wbr/>control.<wbr/>post<wbr/>Raw<wbr/>Sensitivity<wbr/>Boost</a> /<wbr/> 100</code>
9325 The sensitivity of RAW format images will always be <code><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></code></p>
9326 <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
9327 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
9328             </td>
9329           </tr>
9330
9331
9332           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9333            <!-- end of entry -->
9334         
9335                 
9336           <tr class="entry" id="dynamic_android.control.enableZsl">
9337             <td class="entry_name
9338              " rowspan="5">
9339               android.<wbr/>control.<wbr/>enable<wbr/>Zsl
9340             </td>
9341             <td class="entry_type">
9342                 <span class="entry_type_name entry_type_name_enum">byte</span>
9343
9344               <span class="entry_type_visibility"> [public as boolean]</span>
9345
9346
9347
9348
9349
9350                 <ul class="entry_type_enum">
9351                   <li>
9352                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
9353                     <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE must be captured
9354 after previous requests.<wbr/></p></span>
9355                   </li>
9356                   <li>
9357                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
9358                     <span class="entry_type_enum_notes"><p>Requests with <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE may or may not be
9359 captured before previous requests.<wbr/></p></span>
9360                   </li>
9361                 </ul>
9362
9363             </td> <!-- entry_type -->
9364
9365             <td class="entry_description">
9366               <p>Allow camera device to enable zero-shutter-lag mode for requests with
9367 <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> == STILL_<wbr/>CAPTURE.<wbr/></p>
9368             </td>
9369
9370             <td class="entry_units">
9371             </td>
9372
9373             <td class="entry_range">
9374             </td>
9375
9376             <td class="entry_hal_version">
9377               <p>3.<wbr/>2</p>
9378             </td>
9379
9380             <td class="entry_tags">
9381             </td>
9382
9383           </tr>
9384           <tr class="entries_header">
9385             <th class="th_details" colspan="6">Details</th>
9386           </tr>
9387           <tr class="entry_cont">
9388             <td class="entry_details" colspan="6">
9389               <p>If enableZsl is <code>true</code>,<wbr/> the camera device may enable zero-shutter-lag mode for requests with
9390 STILL_<wbr/>CAPTURE capture intent.<wbr/> The camera device may use images captured in the past to
9391 produce output images for a zero-shutter-lag request.<wbr/> The result metadata including the
9392 <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> reflects the source frames used to produce output images.<wbr/>
9393 Therefore,<wbr/> the contents of the output images and the result metadata may be out of order
9394 compared to previous regular requests.<wbr/> enableZsl does not affect requests with other
9395 capture intents.<wbr/></p>
9396 <p>For example,<wbr/> when requests are submitted in the following order:
9397   Request A: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is PREVIEW
9398   Request B: enableZsl is ON,<wbr/> <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> is STILL_<wbr/>CAPTURE</p>
9399 <p>The output images for request B may have contents captured before the output images for
9400 request A,<wbr/> and the result metadata for request B may be older than the result metadata for
9401 request A.<wbr/></p>
9402 <p>Note that when enableZsl is <code>true</code>,<wbr/> it is not guaranteed to get output images captured in
9403 the past for requests with STILL_<wbr/>CAPTURE capture intent.<wbr/></p>
9404 <p>For applications targeting SDK versions O and newer,<wbr/> the value of enableZsl in
9405 TEMPLATE_<wbr/>STILL_<wbr/>CAPTURE template may be <code>true</code>.<wbr/> The value in other templates is always
9406 <code>false</code> if present.<wbr/></p>
9407 <p>For applications targeting SDK versions older than O,<wbr/> the value of enableZsl in all
9408 capture templates is always <code>false</code> if present.<wbr/></p>
9409 <p>For application-operated ZSL,<wbr/> use CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p>
9410             </td>
9411           </tr>
9412
9413           <tr class="entries_header">
9414             <th class="th_details" colspan="6">HAL Implementation Details</th>
9415           </tr>
9416           <tr class="entry_cont">
9417             <td class="entry_details" colspan="6">
9418               <p>It is valid for HAL to produce regular output images for requests with STILL_<wbr/>CAPTURE
9419 capture intent.<wbr/></p>
9420             </td>
9421           </tr>
9422
9423           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9424            <!-- end of entry -->
9425         
9426                 
9427           <tr class="entry" id="dynamic_android.control.afSceneChange">
9428             <td class="entry_name
9429              " rowspan="3">
9430               android.<wbr/>control.<wbr/>af<wbr/>Scene<wbr/>Change
9431             </td>
9432             <td class="entry_type">
9433                 <span class="entry_type_name entry_type_name_enum">int32</span>
9434
9435               <span class="entry_type_visibility"> [public]</span>
9436
9437
9438
9439
9440
9441                 <ul class="entry_type_enum">
9442                   <li>
9443                     <span class="entry_type_enum_name">NOT_DETECTED (v3.3)</span>
9444                     <span class="entry_type_enum_notes"><p>Scene change is not detected within the AF region(s).<wbr/></p></span>
9445                   </li>
9446                   <li>
9447                     <span class="entry_type_enum_name">DETECTED (v3.3)</span>
9448                     <span class="entry_type_enum_notes"><p>Scene change is detected within the AF region(s).<wbr/></p></span>
9449                   </li>
9450                 </ul>
9451
9452             </td> <!-- entry_type -->
9453
9454             <td class="entry_description">
9455               <p>Whether a significant scene change is detected within the currently-set AF
9456 region(s).<wbr/></p>
9457             </td>
9458
9459             <td class="entry_units">
9460             </td>
9461
9462             <td class="entry_range">
9463             </td>
9464
9465             <td class="entry_hal_version">
9466               <p>3.<wbr/>3</p>
9467             </td>
9468
9469             <td class="entry_tags">
9470             </td>
9471
9472           </tr>
9473           <tr class="entries_header">
9474             <th class="th_details" colspan="6">Details</th>
9475           </tr>
9476           <tr class="entry_cont">
9477             <td class="entry_details" colspan="6">
9478               <p>When the camera focus routine detects a change in the scene it is looking at,<wbr/>
9479 such as a large shift in camera viewpoint,<wbr/> significant motion in the scene,<wbr/> or a
9480 significant illumination change,<wbr/> this value will be set to DETECTED for a single capture
9481 result.<wbr/> Otherwise the value will be NOT_<wbr/>DETECTED.<wbr/> The threshold for detection is similar
9482 to what would trigger a new passive focus scan to begin in CONTINUOUS autofocus modes.<wbr/></p>
9483 <p>afSceneChange may be DETECTED only if afMode is AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>VIDEO or
9484 AF_<wbr/>MODE_<wbr/>CONTINUOUS_<wbr/>PICTURE.<wbr/> In other AF modes,<wbr/> afSceneChange must be NOT_<wbr/>DETECTED.<wbr/></p>
9485 <p>This key will be available if the camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
9486             </td>
9487           </tr>
9488
9489
9490           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9491            <!-- end of entry -->
9492         
9493         
9494
9495       <!-- end of kind -->
9496       </tbody>
9497
9498   <!-- end of section -->
9499   <tr><td colspan="7" id="section_demosaic" class="section">demosaic</td></tr>
9500
9501
9502       <tr><td colspan="7" class="kind">controls</td></tr>
9503
9504       <thead class="entries_header">
9505         <tr>
9506           <th class="th_name">Property Name</th>
9507           <th class="th_type">Type</th>
9508           <th class="th_description">Description</th>
9509           <th class="th_units">Units</th>
9510           <th class="th_range">Range</th>
9511           <th class="th_hal_version">Initial HIDL HAL version</th>
9512           <th class="th_tags">Tags</th>
9513         </tr>
9514       </thead>
9515
9516       <tbody>
9517
9518         
9519
9520         
9521
9522         
9523
9524         
9525
9526                 
9527           <tr class="entry" id="controls_android.demosaic.mode">
9528             <td class="entry_name
9529              " rowspan="1">
9530               android.<wbr/>demosaic.<wbr/>mode
9531             </td>
9532             <td class="entry_type">
9533                 <span class="entry_type_name entry_type_name_enum">byte</span>
9534
9535               <span class="entry_type_visibility"> [system]</span>
9536
9537
9538
9539
9540
9541                 <ul class="entry_type_enum">
9542                   <li>
9543                     <span class="entry_type_enum_name">FAST (v3.2)</span>
9544                     <span class="entry_type_enum_notes"><p>Minimal or no slowdown of frame rate compared to
9545 Bayer RAW output.<wbr/></p></span>
9546                   </li>
9547                   <li>
9548                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9549                     <span class="entry_type_enum_notes"><p>Improved processing quality but the frame rate might be slowed down
9550 relative to raw output.<wbr/></p></span>
9551                   </li>
9552                 </ul>
9553
9554             </td> <!-- entry_type -->
9555
9556             <td class="entry_description">
9557               <p>Controls the quality of the demosaicing
9558 processing.<wbr/></p>
9559             </td>
9560
9561             <td class="entry_units">
9562             </td>
9563
9564             <td class="entry_range">
9565             </td>
9566
9567             <td class="entry_hal_version">
9568               <p>3.<wbr/>2</p>
9569             </td>
9570
9571             <td class="entry_tags">
9572               <ul class="entry_tags">
9573                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9574               </ul>
9575             </td>
9576
9577           </tr>
9578
9579
9580           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9581            <!-- end of entry -->
9582         
9583         
9584
9585       <!-- end of kind -->
9586       </tbody>
9587
9588   <!-- end of section -->
9589   <tr><td colspan="7" id="section_edge" class="section">edge</td></tr>
9590
9591
9592       <tr><td colspan="7" class="kind">controls</td></tr>
9593
9594       <thead class="entries_header">
9595         <tr>
9596           <th class="th_name">Property Name</th>
9597           <th class="th_type">Type</th>
9598           <th class="th_description">Description</th>
9599           <th class="th_units">Units</th>
9600           <th class="th_range">Range</th>
9601           <th class="th_hal_version">Initial HIDL HAL version</th>
9602           <th class="th_tags">Tags</th>
9603         </tr>
9604       </thead>
9605
9606       <tbody>
9607
9608         
9609
9610         
9611
9612         
9613
9614         
9615
9616                 
9617           <tr class="entry" id="controls_android.edge.mode">
9618             <td class="entry_name
9619              " rowspan="5">
9620               android.<wbr/>edge.<wbr/>mode
9621             </td>
9622             <td class="entry_type">
9623                 <span class="entry_type_name entry_type_name_enum">byte</span>
9624
9625               <span class="entry_type_visibility"> [public]</span>
9626
9627
9628               <span class="entry_type_hwlevel">[full] </span>
9629
9630
9631
9632                 <ul class="entry_type_enum">
9633                   <li>
9634                     <span class="entry_type_enum_name">OFF (v3.2)</span>
9635                     <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9636                   </li>
9637                   <li>
9638                     <span class="entry_type_enum_name">FAST (v3.2)</span>
9639                     <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9640 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9641 slow down frame rate relative to sensor.<wbr/></p></span>
9642                   </li>
9643                   <li>
9644                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9645                     <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>
9646                   </li>
9647                   <li>
9648                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9649                     <span class="entry_type_enum_optional">[optional]</span>
9650                     <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9651 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9652 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9653 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9654 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9655 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9656 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9657 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9658 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9659 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9660 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9661 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9662 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9663 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9664 reasonable preview quality.<wbr/></p>
9665 <p>This mode is guaranteed to be supported by devices that support either the
9666 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9667 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9668 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9669                   </li>
9670                 </ul>
9671
9672             </td> <!-- entry_type -->
9673
9674             <td class="entry_description">
9675               <p>Operation mode for edge
9676 enhancement.<wbr/></p>
9677             </td>
9678
9679             <td class="entry_units">
9680             </td>
9681
9682             <td class="entry_range">
9683               <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9684             </td>
9685
9686             <td class="entry_hal_version">
9687               <p>3.<wbr/>2</p>
9688             </td>
9689
9690             <td class="entry_tags">
9691               <ul class="entry_tags">
9692                   <li><a href="#tag_V1">V1</a></li>
9693                   <li><a href="#tag_REPROC">REPROC</a></li>
9694               </ul>
9695             </td>
9696
9697           </tr>
9698           <tr class="entries_header">
9699             <th class="th_details" colspan="6">Details</th>
9700           </tr>
9701           <tr class="entry_cont">
9702             <td class="entry_details" colspan="6">
9703               <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
9704 no enhancement will be applied by the camera device.<wbr/></p>
9705 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
9706 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
9707 camera device will use the highest-quality enhancement algorithms,<wbr/>
9708 even if it slows down capture rate.<wbr/> FAST means the camera device will
9709 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
9710 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
9711 amount of enhancement applied.<wbr/></p>
9712 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
9713 buffer of high-resolution images during preview and reprocess image(s) from that buffer
9714 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
9715 edge enhancement to low-resolution streams (below maximum recording resolution) to
9716 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
9717 since those will be reprocessed later if necessary.<wbr/></p>
9718 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
9719 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
9720 The camera device may adjust its internal edge enhancement parameters for best
9721 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>
9722             </td>
9723           </tr>
9724
9725           <tr class="entries_header">
9726             <th class="th_details" colspan="6">HAL Implementation Details</th>
9727           </tr>
9728           <tr class="entry_cont">
9729             <td class="entry_details" colspan="6">
9730               <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
9731 adjust the internal edge enhancement reduction parameters appropriately to get the best
9732 quality images.<wbr/></p>
9733             </td>
9734           </tr>
9735
9736           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9737            <!-- end of entry -->
9738         
9739                 
9740           <tr class="entry" id="controls_android.edge.strength">
9741             <td class="entry_name
9742              " rowspan="1">
9743               android.<wbr/>edge.<wbr/>strength
9744             </td>
9745             <td class="entry_type">
9746                 <span class="entry_type_name">byte</span>
9747
9748               <span class="entry_type_visibility"> [system]</span>
9749
9750
9751
9752
9753
9754
9755             </td> <!-- entry_type -->
9756
9757             <td class="entry_description">
9758               <p>Control the amount of edge enhancement
9759 applied to the images</p>
9760             </td>
9761
9762             <td class="entry_units">
9763               1-10; 10 is maximum sharpening
9764             </td>
9765
9766             <td class="entry_range">
9767             </td>
9768
9769             <td class="entry_hal_version">
9770               <p>3.<wbr/>2</p>
9771             </td>
9772
9773             <td class="entry_tags">
9774               <ul class="entry_tags">
9775                   <li><a href="#tag_FUTURE">FUTURE</a></li>
9776               </ul>
9777             </td>
9778
9779           </tr>
9780
9781
9782           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9783            <!-- end of entry -->
9784         
9785         
9786
9787       <!-- end of kind -->
9788       </tbody>
9789       <tr><td colspan="7" class="kind">static</td></tr>
9790
9791       <thead class="entries_header">
9792         <tr>
9793           <th class="th_name">Property Name</th>
9794           <th class="th_type">Type</th>
9795           <th class="th_description">Description</th>
9796           <th class="th_units">Units</th>
9797           <th class="th_range">Range</th>
9798           <th class="th_hal_version">Initial HIDL HAL version</th>
9799           <th class="th_tags">Tags</th>
9800         </tr>
9801       </thead>
9802
9803       <tbody>
9804
9805         
9806
9807         
9808
9809         
9810
9811         
9812
9813                 
9814           <tr class="entry" id="static_android.edge.availableEdgeModes">
9815             <td class="entry_name
9816              " rowspan="5">
9817               android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes
9818             </td>
9819             <td class="entry_type">
9820                 <span class="entry_type_name">byte</span>
9821                 <span class="entry_type_container">x</span>
9822
9823                 <span class="entry_type_array">
9824                   n
9825                 </span>
9826               <span class="entry_type_visibility"> [public as enumList]</span>
9827
9828
9829               <span class="entry_type_hwlevel">[full] </span>
9830
9831
9832                 <div class="entry_type_notes">list of enums</div>
9833
9834
9835             </td> <!-- entry_type -->
9836
9837             <td class="entry_description">
9838               <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
9839 device.<wbr/></p>
9840             </td>
9841
9842             <td class="entry_units">
9843             </td>
9844
9845             <td class="entry_range">
9846               <p>Any value listed in <a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></p>
9847             </td>
9848
9849             <td class="entry_hal_version">
9850               <p>3.<wbr/>2</p>
9851             </td>
9852
9853             <td class="entry_tags">
9854               <ul class="entry_tags">
9855                   <li><a href="#tag_V1">V1</a></li>
9856                   <li><a href="#tag_REPROC">REPROC</a></li>
9857               </ul>
9858             </td>
9859
9860           </tr>
9861           <tr class="entries_header">
9862             <th class="th_details" colspan="6">Details</th>
9863           </tr>
9864           <tr class="entry_cont">
9865             <td class="entry_details" colspan="6">
9866               <p>Full-capability camera devices must always support OFF; camera devices that support
9867 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will list ZERO_<wbr/>SHUTTER_<wbr/>LAG; all devices will
9868 list FAST.<wbr/></p>
9869             </td>
9870           </tr>
9871
9872           <tr class="entries_header">
9873             <th class="th_details" colspan="6">HAL Implementation Details</th>
9874           </tr>
9875           <tr class="entry_cont">
9876             <td class="entry_details" colspan="6">
9877               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if edge enhancement control is available
9878 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
9879 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
9880 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
9881             </td>
9882           </tr>
9883
9884           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
9885            <!-- end of entry -->
9886         
9887         
9888
9889       <!-- end of kind -->
9890       </tbody>
9891       <tr><td colspan="7" class="kind">dynamic</td></tr>
9892
9893       <thead class="entries_header">
9894         <tr>
9895           <th class="th_name">Property Name</th>
9896           <th class="th_type">Type</th>
9897           <th class="th_description">Description</th>
9898           <th class="th_units">Units</th>
9899           <th class="th_range">Range</th>
9900           <th class="th_hal_version">Initial HIDL HAL version</th>
9901           <th class="th_tags">Tags</th>
9902         </tr>
9903       </thead>
9904
9905       <tbody>
9906
9907         
9908
9909         
9910
9911         
9912
9913         
9914
9915                 
9916           <tr class="entry" id="dynamic_android.edge.mode">
9917             <td class="entry_name
9918              " rowspan="5">
9919               android.<wbr/>edge.<wbr/>mode
9920             </td>
9921             <td class="entry_type">
9922                 <span class="entry_type_name entry_type_name_enum">byte</span>
9923
9924               <span class="entry_type_visibility"> [public]</span>
9925
9926
9927               <span class="entry_type_hwlevel">[full] </span>
9928
9929
9930
9931                 <ul class="entry_type_enum">
9932                   <li>
9933                     <span class="entry_type_enum_name">OFF (v3.2)</span>
9934                     <span class="entry_type_enum_notes"><p>No edge enhancement is applied.<wbr/></p></span>
9935                   </li>
9936                   <li>
9937                     <span class="entry_type_enum_name">FAST (v3.2)</span>
9938                     <span class="entry_type_enum_notes"><p>Apply edge enhancement at a quality level that does not slow down frame rate
9939 relative to sensor output.<wbr/> It may be the same as OFF if edge enhancement will
9940 slow down frame rate relative to sensor.<wbr/></p></span>
9941                   </li>
9942                   <li>
9943                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
9944                     <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>
9945                   </li>
9946                   <li>
9947                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
9948                     <span class="entry_type_enum_optional">[optional]</span>
9949                     <span class="entry_type_enum_notes"><p>Edge enhancement is applied at different
9950 levels for different output streams,<wbr/> based on resolution.<wbr/> Streams at maximum recording
9951 resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
9952 or below have edge enhancement applied,<wbr/> while higher-resolution streams have no edge
9953 enhancement applied.<wbr/> The level of edge enhancement for low-resolution streams is tuned
9954 so that frame rate is not impacted,<wbr/> and the quality is equal to or better than FAST
9955 (since it is only applied to lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
9956 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
9957 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
9958 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
9959 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
9960 high-resolution buffers must not have edge enhancement applied to maximize efficiency of
9961 preview and to avoid double-applying enhancement when reprocessed,<wbr/> while low-resolution
9962 buffers (used for recording or preview,<wbr/> generally) need edge enhancement applied for
9963 reasonable preview quality.<wbr/></p>
9964 <p>This mode is guaranteed to be supported by devices that support either the
9965 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
9966 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
9967 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
9968                   </li>
9969                 </ul>
9970
9971             </td> <!-- entry_type -->
9972
9973             <td class="entry_description">
9974               <p>Operation mode for edge
9975 enhancement.<wbr/></p>
9976             </td>
9977
9978             <td class="entry_units">
9979             </td>
9980
9981             <td class="entry_range">
9982               <p><a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a></p>
9983             </td>
9984
9985             <td class="entry_hal_version">
9986               <p>3.<wbr/>2</p>
9987             </td>
9988
9989             <td class="entry_tags">
9990               <ul class="entry_tags">
9991                   <li><a href="#tag_V1">V1</a></li>
9992                   <li><a href="#tag_REPROC">REPROC</a></li>
9993               </ul>
9994             </td>
9995
9996           </tr>
9997           <tr class="entries_header">
9998             <th class="th_details" colspan="6">Details</th>
9999           </tr>
10000           <tr class="entry_cont">
10001             <td class="entry_details" colspan="6">
10002               <p>Edge enhancement improves sharpness and details in the captured image.<wbr/> OFF means
10003 no enhancement will be applied by the camera device.<wbr/></p>
10004 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined enhancement
10005 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the
10006 camera device will use the highest-quality enhancement algorithms,<wbr/>
10007 even if it slows down capture rate.<wbr/> FAST means the camera device will
10008 not slow down capture rate when applying edge enhancement.<wbr/> FAST may be the same as OFF if
10009 edge enhancement will slow down capture rate.<wbr/> Every output stream will have a similar
10010 amount of enhancement applied.<wbr/></p>
10011 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
10012 buffer of high-resolution images during preview and reprocess image(s) from that buffer
10013 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
10014 edge enhancement to low-resolution streams (below maximum recording resolution) to
10015 maximize preview quality,<wbr/> but does not apply edge enhancement to high-resolution streams,<wbr/>
10016 since those will be reprocessed later if necessary.<wbr/></p>
10017 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera
10018 device will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV-domain edge enhancement,<wbr/> respectively.<wbr/>
10019 The camera device may adjust its internal edge enhancement parameters for best
10020 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>
10021             </td>
10022           </tr>
10023
10024           <tr class="entries_header">
10025             <th class="th_details" colspan="6">HAL Implementation Details</th>
10026           </tr>
10027           <tr class="entry_cont">
10028             <td class="entry_details" colspan="6">
10029               <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
10030 adjust the internal edge enhancement reduction parameters appropriately to get the best
10031 quality images.<wbr/></p>
10032             </td>
10033           </tr>
10034
10035           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10036            <!-- end of entry -->
10037         
10038         
10039
10040       <!-- end of kind -->
10041       </tbody>
10042
10043   <!-- end of section -->
10044   <tr><td colspan="7" id="section_flash" class="section">flash</td></tr>
10045
10046
10047       <tr><td colspan="7" class="kind">controls</td></tr>
10048
10049       <thead class="entries_header">
10050         <tr>
10051           <th class="th_name">Property Name</th>
10052           <th class="th_type">Type</th>
10053           <th class="th_description">Description</th>
10054           <th class="th_units">Units</th>
10055           <th class="th_range">Range</th>
10056           <th class="th_hal_version">Initial HIDL HAL version</th>
10057           <th class="th_tags">Tags</th>
10058         </tr>
10059       </thead>
10060
10061       <tbody>
10062
10063         
10064
10065         
10066
10067         
10068
10069         
10070
10071                 
10072           <tr class="entry" id="controls_android.flash.firingPower">
10073             <td class="entry_name
10074              " rowspan="3">
10075               android.<wbr/>flash.<wbr/>firing<wbr/>Power
10076             </td>
10077             <td class="entry_type">
10078                 <span class="entry_type_name">byte</span>
10079
10080               <span class="entry_type_visibility"> [system]</span>
10081
10082
10083
10084
10085
10086
10087             </td> <!-- entry_type -->
10088
10089             <td class="entry_description">
10090               <p>Power for flash firing/<wbr/>torch</p>
10091             </td>
10092
10093             <td class="entry_units">
10094               10 is max power; 0 is no flash.<wbr/> Linear
10095             </td>
10096
10097             <td class="entry_range">
10098               <p>0 - 10</p>
10099             </td>
10100
10101             <td class="entry_hal_version">
10102               <p>3.<wbr/>2</p>
10103             </td>
10104
10105             <td class="entry_tags">
10106               <ul class="entry_tags">
10107                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10108               </ul>
10109             </td>
10110
10111           </tr>
10112           <tr class="entries_header">
10113             <th class="th_details" colspan="6">Details</th>
10114           </tr>
10115           <tr class="entry_cont">
10116             <td class="entry_details" colspan="6">
10117               <p>Power for snapshot may use a different scale than
10118 for torch mode.<wbr/> Only one entry for torch mode will be
10119 used</p>
10120             </td>
10121           </tr>
10122
10123
10124           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10125            <!-- end of entry -->
10126         
10127                 
10128           <tr class="entry" id="controls_android.flash.firingTime">
10129             <td class="entry_name
10130              " rowspan="3">
10131               android.<wbr/>flash.<wbr/>firing<wbr/>Time
10132             </td>
10133             <td class="entry_type">
10134                 <span class="entry_type_name">int64</span>
10135
10136               <span class="entry_type_visibility"> [system]</span>
10137
10138
10139
10140
10141
10142
10143             </td> <!-- entry_type -->
10144
10145             <td class="entry_description">
10146               <p>Firing time of flash relative to start of
10147 exposure</p>
10148             </td>
10149
10150             <td class="entry_units">
10151               nanoseconds
10152             </td>
10153
10154             <td class="entry_range">
10155               <p>0-(exposure time-flash duration)</p>
10156             </td>
10157
10158             <td class="entry_hal_version">
10159               <p>3.<wbr/>2</p>
10160             </td>
10161
10162             <td class="entry_tags">
10163               <ul class="entry_tags">
10164                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10165               </ul>
10166             </td>
10167
10168           </tr>
10169           <tr class="entries_header">
10170             <th class="th_details" colspan="6">Details</th>
10171           </tr>
10172           <tr class="entry_cont">
10173             <td class="entry_details" colspan="6">
10174               <p>Clamped to (0,<wbr/> exposure time - flash
10175 duration).<wbr/></p>
10176             </td>
10177           </tr>
10178
10179
10180           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10181            <!-- end of entry -->
10182         
10183                 
10184           <tr class="entry" id="controls_android.flash.mode">
10185             <td class="entry_name
10186              " rowspan="3">
10187               android.<wbr/>flash.<wbr/>mode
10188             </td>
10189             <td class="entry_type">
10190                 <span class="entry_type_name entry_type_name_enum">byte</span>
10191
10192               <span class="entry_type_visibility"> [public]</span>
10193
10194
10195               <span class="entry_type_hwlevel">[legacy] </span>
10196
10197
10198
10199                 <ul class="entry_type_enum">
10200                   <li>
10201                     <span class="entry_type_enum_name">OFF (v3.2)</span>
10202                     <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10203                   </li>
10204                   <li>
10205                     <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10206                     <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10207 for this capture.<wbr/></p></span>
10208                   </li>
10209                   <li>
10210                     <span class="entry_type_enum_name">TORCH (v3.2)</span>
10211                     <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10212                   </li>
10213                 </ul>
10214
10215             </td> <!-- entry_type -->
10216
10217             <td class="entry_description">
10218               <p>The desired mode for for the camera device's flash control.<wbr/></p>
10219             </td>
10220
10221             <td class="entry_units">
10222             </td>
10223
10224             <td class="entry_range">
10225             </td>
10226
10227             <td class="entry_hal_version">
10228               <p>3.<wbr/>2</p>
10229             </td>
10230
10231             <td class="entry_tags">
10232               <ul class="entry_tags">
10233                   <li><a href="#tag_BC">BC</a></li>
10234               </ul>
10235             </td>
10236
10237           </tr>
10238           <tr class="entries_header">
10239             <th class="th_details" colspan="6">Details</th>
10240           </tr>
10241           <tr class="entry_cont">
10242             <td class="entry_details" colspan="6">
10243               <p>This control is only effective when flash unit is available
10244 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10245 <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/>
10246 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10247 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10248 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10249 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10250 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10251 control should be used along with auto-exposure (AE) precapture metering sequence
10252 (<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>
10253 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10254 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10255 <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>
10256             </td>
10257           </tr>
10258
10259
10260           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10261            <!-- end of entry -->
10262         
10263         
10264
10265       <!-- end of kind -->
10266       </tbody>
10267       <tr><td colspan="7" class="kind">static</td></tr>
10268
10269       <thead class="entries_header">
10270         <tr>
10271           <th class="th_name">Property Name</th>
10272           <th class="th_type">Type</th>
10273           <th class="th_description">Description</th>
10274           <th class="th_units">Units</th>
10275           <th class="th_range">Range</th>
10276           <th class="th_hal_version">Initial HIDL HAL version</th>
10277           <th class="th_tags">Tags</th>
10278         </tr>
10279       </thead>
10280
10281       <tbody>
10282
10283         
10284
10285         
10286
10287         
10288
10289         
10290                 
10291             
10292
10293                 
10294           <tr class="entry" id="static_android.flash.info.available">
10295             <td class="entry_name
10296              " rowspan="3">
10297               android.<wbr/>flash.<wbr/>info.<wbr/>available
10298             </td>
10299             <td class="entry_type">
10300                 <span class="entry_type_name entry_type_name_enum">byte</span>
10301
10302               <span class="entry_type_visibility"> [public as boolean]</span>
10303
10304
10305               <span class="entry_type_hwlevel">[legacy] </span>
10306
10307
10308
10309                 <ul class="entry_type_enum">
10310                   <li>
10311                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
10312                   </li>
10313                   <li>
10314                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
10315                   </li>
10316                 </ul>
10317
10318             </td> <!-- entry_type -->
10319
10320             <td class="entry_description">
10321               <p>Whether this camera device has a
10322 flash unit.<wbr/></p>
10323             </td>
10324
10325             <td class="entry_units">
10326             </td>
10327
10328             <td class="entry_range">
10329             </td>
10330
10331             <td class="entry_hal_version">
10332               <p>3.<wbr/>2</p>
10333             </td>
10334
10335             <td class="entry_tags">
10336               <ul class="entry_tags">
10337                   <li><a href="#tag_BC">BC</a></li>
10338               </ul>
10339             </td>
10340
10341           </tr>
10342           <tr class="entries_header">
10343             <th class="th_details" colspan="6">Details</th>
10344           </tr>
10345           <tr class="entry_cont">
10346             <td class="entry_details" colspan="6">
10347               <p>Will be <code>false</code> if no flash is available.<wbr/></p>
10348 <p>If there is no flash unit,<wbr/> none of the flash controls do
10349 anything.<wbr/></p>
10350             </td>
10351           </tr>
10352
10353
10354           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10355            <!-- end of entry -->
10356         
10357                 
10358           <tr class="entry" id="static_android.flash.info.chargeDuration">
10359             <td class="entry_name
10360              " rowspan="3">
10361               android.<wbr/>flash.<wbr/>info.<wbr/>charge<wbr/>Duration
10362             </td>
10363             <td class="entry_type">
10364                 <span class="entry_type_name">int64</span>
10365
10366               <span class="entry_type_visibility"> [system]</span>
10367
10368
10369
10370
10371
10372
10373             </td> <!-- entry_type -->
10374
10375             <td class="entry_description">
10376               <p>Time taken before flash can fire
10377 again</p>
10378             </td>
10379
10380             <td class="entry_units">
10381               nanoseconds
10382             </td>
10383
10384             <td class="entry_range">
10385               <p>0-1e9</p>
10386             </td>
10387
10388             <td class="entry_hal_version">
10389               <p>3.<wbr/>2</p>
10390             </td>
10391
10392             <td class="entry_tags">
10393               <ul class="entry_tags">
10394                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10395               </ul>
10396             </td>
10397
10398           </tr>
10399           <tr class="entries_header">
10400             <th class="th_details" colspan="6">Details</th>
10401           </tr>
10402           <tr class="entry_cont">
10403             <td class="entry_details" colspan="6">
10404               <p>1 second too long/<wbr/>too short for recharge? Should
10405 this be power-dependent?</p>
10406             </td>
10407           </tr>
10408
10409
10410           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10411            <!-- end of entry -->
10412         
10413         
10414         
10415
10416                 
10417           <tr class="entry" id="static_android.flash.colorTemperature">
10418             <td class="entry_name
10419              " rowspan="1">
10420               android.<wbr/>flash.<wbr/>color<wbr/>Temperature
10421             </td>
10422             <td class="entry_type">
10423                 <span class="entry_type_name">byte</span>
10424
10425               <span class="entry_type_visibility"> [system]</span>
10426
10427
10428
10429
10430
10431
10432             </td> <!-- entry_type -->
10433
10434             <td class="entry_description">
10435               <p>The x,<wbr/>y whitepoint of the
10436 flash</p>
10437             </td>
10438
10439             <td class="entry_units">
10440               pair of floats
10441             </td>
10442
10443             <td class="entry_range">
10444               <p>0-1 for both</p>
10445             </td>
10446
10447             <td class="entry_hal_version">
10448               <p>3.<wbr/>2</p>
10449             </td>
10450
10451             <td class="entry_tags">
10452               <ul class="entry_tags">
10453                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10454               </ul>
10455             </td>
10456
10457           </tr>
10458
10459
10460           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10461            <!-- end of entry -->
10462         
10463                 
10464           <tr class="entry" id="static_android.flash.maxEnergy">
10465             <td class="entry_name
10466              " rowspan="1">
10467               android.<wbr/>flash.<wbr/>max<wbr/>Energy
10468             </td>
10469             <td class="entry_type">
10470                 <span class="entry_type_name">byte</span>
10471
10472               <span class="entry_type_visibility"> [system]</span>
10473
10474
10475
10476
10477
10478
10479             </td> <!-- entry_type -->
10480
10481             <td class="entry_description">
10482               <p>Max energy output of the flash for a full
10483 power single flash</p>
10484             </td>
10485
10486             <td class="entry_units">
10487               lumen-seconds
10488             </td>
10489
10490             <td class="entry_range">
10491               <p>&gt;= 0</p>
10492             </td>
10493
10494             <td class="entry_hal_version">
10495               <p>3.<wbr/>2</p>
10496             </td>
10497
10498             <td class="entry_tags">
10499               <ul class="entry_tags">
10500                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10501               </ul>
10502             </td>
10503
10504           </tr>
10505
10506
10507           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10508            <!-- end of entry -->
10509         
10510         
10511
10512       <!-- end of kind -->
10513       </tbody>
10514       <tr><td colspan="7" class="kind">dynamic</td></tr>
10515
10516       <thead class="entries_header">
10517         <tr>
10518           <th class="th_name">Property Name</th>
10519           <th class="th_type">Type</th>
10520           <th class="th_description">Description</th>
10521           <th class="th_units">Units</th>
10522           <th class="th_range">Range</th>
10523           <th class="th_hal_version">Initial HIDL HAL version</th>
10524           <th class="th_tags">Tags</th>
10525         </tr>
10526       </thead>
10527
10528       <tbody>
10529
10530         
10531
10532         
10533
10534         
10535
10536         
10537
10538                 
10539           <tr class="entry" id="dynamic_android.flash.firingPower">
10540             <td class="entry_name
10541              " rowspan="3">
10542               android.<wbr/>flash.<wbr/>firing<wbr/>Power
10543             </td>
10544             <td class="entry_type">
10545                 <span class="entry_type_name">byte</span>
10546
10547               <span class="entry_type_visibility"> [system]</span>
10548
10549
10550
10551
10552
10553
10554             </td> <!-- entry_type -->
10555
10556             <td class="entry_description">
10557               <p>Power for flash firing/<wbr/>torch</p>
10558             </td>
10559
10560             <td class="entry_units">
10561               10 is max power; 0 is no flash.<wbr/> Linear
10562             </td>
10563
10564             <td class="entry_range">
10565               <p>0 - 10</p>
10566             </td>
10567
10568             <td class="entry_hal_version">
10569               <p>3.<wbr/>2</p>
10570             </td>
10571
10572             <td class="entry_tags">
10573               <ul class="entry_tags">
10574                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10575               </ul>
10576             </td>
10577
10578           </tr>
10579           <tr class="entries_header">
10580             <th class="th_details" colspan="6">Details</th>
10581           </tr>
10582           <tr class="entry_cont">
10583             <td class="entry_details" colspan="6">
10584               <p>Power for snapshot may use a different scale than
10585 for torch mode.<wbr/> Only one entry for torch mode will be
10586 used</p>
10587             </td>
10588           </tr>
10589
10590
10591           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10592            <!-- end of entry -->
10593         
10594                 
10595           <tr class="entry" id="dynamic_android.flash.firingTime">
10596             <td class="entry_name
10597              " rowspan="3">
10598               android.<wbr/>flash.<wbr/>firing<wbr/>Time
10599             </td>
10600             <td class="entry_type">
10601                 <span class="entry_type_name">int64</span>
10602
10603               <span class="entry_type_visibility"> [system]</span>
10604
10605
10606
10607
10608
10609
10610             </td> <!-- entry_type -->
10611
10612             <td class="entry_description">
10613               <p>Firing time of flash relative to start of
10614 exposure</p>
10615             </td>
10616
10617             <td class="entry_units">
10618               nanoseconds
10619             </td>
10620
10621             <td class="entry_range">
10622               <p>0-(exposure time-flash duration)</p>
10623             </td>
10624
10625             <td class="entry_hal_version">
10626               <p>3.<wbr/>2</p>
10627             </td>
10628
10629             <td class="entry_tags">
10630               <ul class="entry_tags">
10631                   <li><a href="#tag_FUTURE">FUTURE</a></li>
10632               </ul>
10633             </td>
10634
10635           </tr>
10636           <tr class="entries_header">
10637             <th class="th_details" colspan="6">Details</th>
10638           </tr>
10639           <tr class="entry_cont">
10640             <td class="entry_details" colspan="6">
10641               <p>Clamped to (0,<wbr/> exposure time - flash
10642 duration).<wbr/></p>
10643             </td>
10644           </tr>
10645
10646
10647           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10648            <!-- end of entry -->
10649         
10650                 
10651           <tr class="entry" id="dynamic_android.flash.mode">
10652             <td class="entry_name
10653              " rowspan="3">
10654               android.<wbr/>flash.<wbr/>mode
10655             </td>
10656             <td class="entry_type">
10657                 <span class="entry_type_name entry_type_name_enum">byte</span>
10658
10659               <span class="entry_type_visibility"> [public]</span>
10660
10661
10662               <span class="entry_type_hwlevel">[legacy] </span>
10663
10664
10665
10666                 <ul class="entry_type_enum">
10667                   <li>
10668                     <span class="entry_type_enum_name">OFF (v3.2)</span>
10669                     <span class="entry_type_enum_notes"><p>Do not fire the flash for this capture.<wbr/></p></span>
10670                   </li>
10671                   <li>
10672                     <span class="entry_type_enum_name">SINGLE (v3.2)</span>
10673                     <span class="entry_type_enum_notes"><p>If the flash is available and charged,<wbr/> fire flash
10674 for this capture.<wbr/></p></span>
10675                   </li>
10676                   <li>
10677                     <span class="entry_type_enum_name">TORCH (v3.2)</span>
10678                     <span class="entry_type_enum_notes"><p>Transition flash to continuously on.<wbr/></p></span>
10679                   </li>
10680                 </ul>
10681
10682             </td> <!-- entry_type -->
10683
10684             <td class="entry_description">
10685               <p>The desired mode for for the camera device's flash control.<wbr/></p>
10686             </td>
10687
10688             <td class="entry_units">
10689             </td>
10690
10691             <td class="entry_range">
10692             </td>
10693
10694             <td class="entry_hal_version">
10695               <p>3.<wbr/>2</p>
10696             </td>
10697
10698             <td class="entry_tags">
10699               <ul class="entry_tags">
10700                   <li><a href="#tag_BC">BC</a></li>
10701               </ul>
10702             </td>
10703
10704           </tr>
10705           <tr class="entries_header">
10706             <th class="th_details" colspan="6">Details</th>
10707           </tr>
10708           <tr class="entry_cont">
10709             <td class="entry_details" colspan="6">
10710               <p>This control is only effective when flash unit is available
10711 (<code><a href="#static_android.flash.info.available">android.<wbr/>flash.<wbr/>info.<wbr/>available</a> == true</code>).<wbr/></p>
10712 <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/>
10713 Otherwise,<wbr/> the camera device auto-exposure related flash control (ON_<wbr/>AUTO_<wbr/>FLASH,<wbr/>
10714 ON_<wbr/>ALWAYS_<wbr/>FLASH,<wbr/> or ON_<wbr/>AUTO_<wbr/>FLASH_<wbr/>REDEYE) will override this control.<wbr/></p>
10715 <p>When set to OFF,<wbr/> the camera device will not fire flash for this capture.<wbr/></p>
10716 <p>When set to SINGLE,<wbr/> the camera device will fire flash regardless of the camera
10717 device's auto-exposure routine's result.<wbr/> When used in still capture case,<wbr/> this
10718 control should be used along with auto-exposure (AE) precapture metering sequence
10719 (<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>
10720 <p>When set to TORCH,<wbr/> the flash will be on continuously.<wbr/> This mode can be used
10721 for use cases such as preview,<wbr/> auto-focus assist,<wbr/> still capture,<wbr/> or video recording.<wbr/></p>
10722 <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>
10723             </td>
10724           </tr>
10725
10726
10727           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10728            <!-- end of entry -->
10729         
10730                 
10731           <tr class="entry" id="dynamic_android.flash.state">
10732             <td class="entry_name
10733              " rowspan="3">
10734               android.<wbr/>flash.<wbr/>state
10735             </td>
10736             <td class="entry_type">
10737                 <span class="entry_type_name entry_type_name_enum">byte</span>
10738
10739               <span class="entry_type_visibility"> [public]</span>
10740
10741
10742               <span class="entry_type_hwlevel">[limited] </span>
10743
10744
10745
10746                 <ul class="entry_type_enum">
10747                   <li>
10748                     <span class="entry_type_enum_name">UNAVAILABLE (v3.2)</span>
10749                     <span class="entry_type_enum_notes"><p>No flash on camera.<wbr/></p></span>
10750                   </li>
10751                   <li>
10752                     <span class="entry_type_enum_name">CHARGING (v3.2)</span>
10753                     <span class="entry_type_enum_notes"><p>Flash is charging and cannot be fired.<wbr/></p></span>
10754                   </li>
10755                   <li>
10756                     <span class="entry_type_enum_name">READY (v3.2)</span>
10757                     <span class="entry_type_enum_notes"><p>Flash is ready to fire.<wbr/></p></span>
10758                   </li>
10759                   <li>
10760                     <span class="entry_type_enum_name">FIRED (v3.2)</span>
10761                     <span class="entry_type_enum_notes"><p>Flash fired for this capture.<wbr/></p></span>
10762                   </li>
10763                   <li>
10764                     <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
10765                     <span class="entry_type_enum_notes"><p>Flash partially illuminated this frame.<wbr/></p>
10766 <p>This is usually due to the next or previous frame having
10767 the flash fire,<wbr/> and the flash spilling into this capture
10768 due to hardware limitations.<wbr/></p></span>
10769                   </li>
10770                 </ul>
10771
10772             </td> <!-- entry_type -->
10773
10774             <td class="entry_description">
10775               <p>Current state of the flash
10776 unit.<wbr/></p>
10777             </td>
10778
10779             <td class="entry_units">
10780             </td>
10781
10782             <td class="entry_range">
10783             </td>
10784
10785             <td class="entry_hal_version">
10786               <p>3.<wbr/>2</p>
10787             </td>
10788
10789             <td class="entry_tags">
10790             </td>
10791
10792           </tr>
10793           <tr class="entries_header">
10794             <th class="th_details" colspan="6">Details</th>
10795           </tr>
10796           <tr class="entry_cont">
10797             <td class="entry_details" colspan="6">
10798               <p>When the camera device doesn't have flash unit
10799 (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/>
10800 Other states indicate the current flash status.<wbr/></p>
10801 <p>In certain conditions,<wbr/> this will be available on LEGACY devices:</p>
10802 <ul>
10803 <li>Flash-less cameras always return UNAVAILABLE.<wbr/></li>
10804 <li>Using <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> <code>==</code> ON_<wbr/>ALWAYS_<wbr/>FLASH
10805    will always return FIRED.<wbr/></li>
10806 <li>Using <a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> <code>==</code> TORCH
10807    will always return FIRED.<wbr/></li>
10808 </ul>
10809 <p>In all other conditions the state will not be available on
10810 LEGACY devices (i.<wbr/>e.<wbr/> it will be <code>null</code>).<wbr/></p>
10811             </td>
10812           </tr>
10813
10814
10815           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10816            <!-- end of entry -->
10817         
10818         
10819
10820       <!-- end of kind -->
10821       </tbody>
10822
10823   <!-- end of section -->
10824   <tr><td colspan="7" id="section_hotPixel" class="section">hotPixel</td></tr>
10825
10826
10827       <tr><td colspan="7" class="kind">controls</td></tr>
10828
10829       <thead class="entries_header">
10830         <tr>
10831           <th class="th_name">Property Name</th>
10832           <th class="th_type">Type</th>
10833           <th class="th_description">Description</th>
10834           <th class="th_units">Units</th>
10835           <th class="th_range">Range</th>
10836           <th class="th_hal_version">Initial HIDL HAL version</th>
10837           <th class="th_tags">Tags</th>
10838         </tr>
10839       </thead>
10840
10841       <tbody>
10842
10843         
10844
10845         
10846
10847         
10848
10849         
10850
10851                 
10852           <tr class="entry" id="controls_android.hotPixel.mode">
10853             <td class="entry_name
10854              " rowspan="3">
10855               android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
10856             </td>
10857             <td class="entry_type">
10858                 <span class="entry_type_name entry_type_name_enum">byte</span>
10859
10860               <span class="entry_type_visibility"> [public]</span>
10861
10862
10863
10864
10865
10866                 <ul class="entry_type_enum">
10867                   <li>
10868                     <span class="entry_type_enum_name">OFF (v3.2)</span>
10869                     <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
10870 <p>The frame rate must not be reduced relative to sensor raw output
10871 for this option.<wbr/></p>
10872 <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>
10873                   </li>
10874                   <li>
10875                     <span class="entry_type_enum_name">FAST (v3.2)</span>
10876                     <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
10877 rate relative to sensor raw output.<wbr/></p>
10878 <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>
10879                   </li>
10880                   <li>
10881                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
10882                     <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
10883 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
10884 <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>
10885                   </li>
10886                 </ul>
10887
10888             </td> <!-- entry_type -->
10889
10890             <td class="entry_description">
10891               <p>Operational mode for hot pixel correction.<wbr/></p>
10892             </td>
10893
10894             <td class="entry_units">
10895             </td>
10896
10897             <td class="entry_range">
10898               <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
10899             </td>
10900
10901             <td class="entry_hal_version">
10902               <p>3.<wbr/>2</p>
10903             </td>
10904
10905             <td class="entry_tags">
10906               <ul class="entry_tags">
10907                   <li><a href="#tag_V1">V1</a></li>
10908                   <li><a href="#tag_RAW">RAW</a></li>
10909               </ul>
10910             </td>
10911
10912           </tr>
10913           <tr class="entries_header">
10914             <th class="th_details" colspan="6">Details</th>
10915           </tr>
10916           <tr class="entry_cont">
10917             <td class="entry_details" colspan="6">
10918               <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
10919 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
10920 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
10921             </td>
10922           </tr>
10923
10924
10925           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
10926            <!-- end of entry -->
10927         
10928         
10929
10930       <!-- end of kind -->
10931       </tbody>
10932       <tr><td colspan="7" class="kind">static</td></tr>
10933
10934       <thead class="entries_header">
10935         <tr>
10936           <th class="th_name">Property Name</th>
10937           <th class="th_type">Type</th>
10938           <th class="th_description">Description</th>
10939           <th class="th_units">Units</th>
10940           <th class="th_range">Range</th>
10941           <th class="th_hal_version">Initial HIDL HAL version</th>
10942           <th class="th_tags">Tags</th>
10943         </tr>
10944       </thead>
10945
10946       <tbody>
10947
10948         
10949
10950         
10951
10952         
10953
10954         
10955
10956                 
10957           <tr class="entry" id="static_android.hotPixel.availableHotPixelModes">
10958             <td class="entry_name
10959              " rowspan="5">
10960               android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes
10961             </td>
10962             <td class="entry_type">
10963                 <span class="entry_type_name">byte</span>
10964                 <span class="entry_type_container">x</span>
10965
10966                 <span class="entry_type_array">
10967                   n
10968                 </span>
10969               <span class="entry_type_visibility"> [public as enumList]</span>
10970
10971
10972
10973
10974                 <div class="entry_type_notes">list of enums</div>
10975
10976
10977             </td> <!-- entry_type -->
10978
10979             <td class="entry_description">
10980               <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
10981 camera device.<wbr/></p>
10982             </td>
10983
10984             <td class="entry_units">
10985             </td>
10986
10987             <td class="entry_range">
10988               <p>Any value listed in <a href="#controls_android.hotPixel.mode">android.<wbr/>hot<wbr/>Pixel.<wbr/>mode</a></p>
10989             </td>
10990
10991             <td class="entry_hal_version">
10992               <p>3.<wbr/>2</p>
10993             </td>
10994
10995             <td class="entry_tags">
10996               <ul class="entry_tags">
10997                   <li><a href="#tag_V1">V1</a></li>
10998                   <li><a href="#tag_RAW">RAW</a></li>
10999               </ul>
11000             </td>
11001
11002           </tr>
11003           <tr class="entries_header">
11004             <th class="th_details" colspan="6">Details</th>
11005           </tr>
11006           <tr class="entry_cont">
11007             <td class="entry_details" colspan="6">
11008               <p>FULL mode camera devices will always support FAST.<wbr/></p>
11009             </td>
11010           </tr>
11011
11012           <tr class="entries_header">
11013             <th class="th_details" colspan="6">HAL Implementation Details</th>
11014           </tr>
11015           <tr class="entry_cont">
11016             <td class="entry_details" colspan="6">
11017               <p>To avoid performance issues,<wbr/> there will be significantly fewer hot
11018 pixels than actual pixels on the camera sensor.<wbr/>
11019 HAL must support both FAST and HIGH_<wbr/>QUALITY if hot pixel correction control is available
11020 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
11021 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
11022 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
11023             </td>
11024           </tr>
11025
11026           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11027            <!-- end of entry -->
11028         
11029         
11030
11031       <!-- end of kind -->
11032       </tbody>
11033       <tr><td colspan="7" class="kind">dynamic</td></tr>
11034
11035       <thead class="entries_header">
11036         <tr>
11037           <th class="th_name">Property Name</th>
11038           <th class="th_type">Type</th>
11039           <th class="th_description">Description</th>
11040           <th class="th_units">Units</th>
11041           <th class="th_range">Range</th>
11042           <th class="th_hal_version">Initial HIDL HAL version</th>
11043           <th class="th_tags">Tags</th>
11044         </tr>
11045       </thead>
11046
11047       <tbody>
11048
11049         
11050
11051         
11052
11053         
11054
11055         
11056
11057                 
11058           <tr class="entry" id="dynamic_android.hotPixel.mode">
11059             <td class="entry_name
11060              " rowspan="3">
11061               android.<wbr/>hot<wbr/>Pixel.<wbr/>mode
11062             </td>
11063             <td class="entry_type">
11064                 <span class="entry_type_name entry_type_name_enum">byte</span>
11065
11066               <span class="entry_type_visibility"> [public]</span>
11067
11068
11069
11070
11071
11072                 <ul class="entry_type_enum">
11073                   <li>
11074                     <span class="entry_type_enum_name">OFF (v3.2)</span>
11075                     <span class="entry_type_enum_notes"><p>No hot pixel correction is applied.<wbr/></p>
11076 <p>The frame rate must not be reduced relative to sensor raw output
11077 for this option.<wbr/></p>
11078 <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>
11079                   </li>
11080                   <li>
11081                     <span class="entry_type_enum_name">FAST (v3.2)</span>
11082                     <span class="entry_type_enum_notes"><p>Hot pixel correction is applied,<wbr/> without reducing frame
11083 rate relative to sensor raw output.<wbr/></p>
11084 <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>
11085                   </li>
11086                   <li>
11087                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
11088                     <span class="entry_type_enum_notes"><p>High-quality hot pixel correction is applied,<wbr/> at a cost
11089 of possibly reduced frame rate relative to sensor raw output.<wbr/></p>
11090 <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>
11091                   </li>
11092                 </ul>
11093
11094             </td> <!-- entry_type -->
11095
11096             <td class="entry_description">
11097               <p>Operational mode for hot pixel correction.<wbr/></p>
11098             </td>
11099
11100             <td class="entry_units">
11101             </td>
11102
11103             <td class="entry_range">
11104               <p><a href="#static_android.hotPixel.availableHotPixelModes">android.<wbr/>hot<wbr/>Pixel.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Modes</a></p>
11105             </td>
11106
11107             <td class="entry_hal_version">
11108               <p>3.<wbr/>2</p>
11109             </td>
11110
11111             <td class="entry_tags">
11112               <ul class="entry_tags">
11113                   <li><a href="#tag_V1">V1</a></li>
11114                   <li><a href="#tag_RAW">RAW</a></li>
11115               </ul>
11116             </td>
11117
11118           </tr>
11119           <tr class="entries_header">
11120             <th class="th_details" colspan="6">Details</th>
11121           </tr>
11122           <tr class="entry_cont">
11123             <td class="entry_details" colspan="6">
11124               <p>Hotpixel correction interpolates out,<wbr/> or otherwise removes,<wbr/> pixels
11125 that do not accurately measure the incoming light (i.<wbr/>e.<wbr/> pixels that
11126 are stuck at an arbitrary value or are oversensitive).<wbr/></p>
11127             </td>
11128           </tr>
11129
11130
11131           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11132            <!-- end of entry -->
11133         
11134         
11135
11136       <!-- end of kind -->
11137       </tbody>
11138
11139   <!-- end of section -->
11140   <tr><td colspan="7" id="section_jpeg" class="section">jpeg</td></tr>
11141
11142
11143       <tr><td colspan="7" class="kind">controls</td></tr>
11144
11145       <thead class="entries_header">
11146         <tr>
11147           <th class="th_name">Property Name</th>
11148           <th class="th_type">Type</th>
11149           <th class="th_description">Description</th>
11150           <th class="th_units">Units</th>
11151           <th class="th_range">Range</th>
11152           <th class="th_hal_version">Initial HIDL HAL version</th>
11153           <th class="th_tags">Tags</th>
11154         </tr>
11155       </thead>
11156
11157       <tbody>
11158
11159         
11160
11161         
11162
11163         
11164
11165         
11166
11167                 
11168           <tr class="entry" id="controls_android.jpeg.gpsLocation">
11169             <td class="entry_name
11170              " rowspan="3">
11171               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11172             </td>
11173             <td class="entry_type">
11174                 <span class="entry_type_name">byte</span>
11175
11176               <span class="entry_type_visibility"> [java_public as location]</span>
11177
11178               <span class="entry_type_synthetic">[synthetic] </span>
11179
11180               <span class="entry_type_hwlevel">[legacy] </span>
11181
11182
11183
11184
11185             </td> <!-- entry_type -->
11186
11187             <td class="entry_description">
11188               <p>A location object to use when generating image GPS metadata.<wbr/></p>
11189             </td>
11190
11191             <td class="entry_units">
11192             </td>
11193
11194             <td class="entry_range">
11195             </td>
11196
11197             <td class="entry_hal_version">
11198               <p>3.<wbr/>2</p>
11199             </td>
11200
11201             <td class="entry_tags">
11202             </td>
11203
11204           </tr>
11205           <tr class="entries_header">
11206             <th class="th_details" colspan="6">Details</th>
11207           </tr>
11208           <tr class="entry_cont">
11209             <td class="entry_details" colspan="6">
11210               <p>Setting a location object in a request will include the GPS coordinates of the location
11211 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11212 viewed by anyone who receives the JPEG image.<wbr/></p>
11213             </td>
11214           </tr>
11215
11216
11217           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11218            <!-- end of entry -->
11219         
11220                 
11221           <tr class="entry" id="controls_android.jpeg.gpsCoordinates">
11222             <td class="entry_name
11223              " rowspan="1">
11224               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11225             </td>
11226             <td class="entry_type">
11227                 <span class="entry_type_name">double</span>
11228                 <span class="entry_type_container">x</span>
11229
11230                 <span class="entry_type_array">
11231                   3
11232                 </span>
11233               <span class="entry_type_visibility"> [ndk_public]</span>
11234
11235
11236               <span class="entry_type_hwlevel">[legacy] </span>
11237
11238
11239                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11240
11241
11242             </td> <!-- entry_type -->
11243
11244             <td class="entry_description">
11245               <p>GPS coordinates to include in output JPEG
11246 EXIF.<wbr/></p>
11247             </td>
11248
11249             <td class="entry_units">
11250             </td>
11251
11252             <td class="entry_range">
11253               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11254             </td>
11255
11256             <td class="entry_hal_version">
11257               <p>3.<wbr/>2</p>
11258             </td>
11259
11260             <td class="entry_tags">
11261               <ul class="entry_tags">
11262                   <li><a href="#tag_BC">BC</a></li>
11263               </ul>
11264             </td>
11265
11266           </tr>
11267
11268
11269           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11270            <!-- end of entry -->
11271         
11272                 
11273           <tr class="entry" id="controls_android.jpeg.gpsProcessingMethod">
11274             <td class="entry_name
11275              " rowspan="1">
11276               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11277             </td>
11278             <td class="entry_type">
11279                 <span class="entry_type_name">byte</span>
11280
11281               <span class="entry_type_visibility"> [ndk_public as string]</span>
11282
11283
11284               <span class="entry_type_hwlevel">[legacy] </span>
11285
11286
11287
11288
11289             </td> <!-- entry_type -->
11290
11291             <td class="entry_description">
11292               <p>32 characters describing GPS algorithm to
11293 include in EXIF.<wbr/></p>
11294             </td>
11295
11296             <td class="entry_units">
11297               UTF-8 null-terminated string
11298             </td>
11299
11300             <td class="entry_range">
11301             </td>
11302
11303             <td class="entry_hal_version">
11304               <p>3.<wbr/>2</p>
11305             </td>
11306
11307             <td class="entry_tags">
11308               <ul class="entry_tags">
11309                   <li><a href="#tag_BC">BC</a></li>
11310               </ul>
11311             </td>
11312
11313           </tr>
11314
11315
11316           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11317            <!-- end of entry -->
11318         
11319                 
11320           <tr class="entry" id="controls_android.jpeg.gpsTimestamp">
11321             <td class="entry_name
11322              " rowspan="1">
11323               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11324             </td>
11325             <td class="entry_type">
11326                 <span class="entry_type_name">int64</span>
11327
11328               <span class="entry_type_visibility"> [ndk_public]</span>
11329
11330
11331               <span class="entry_type_hwlevel">[legacy] </span>
11332
11333
11334
11335
11336             </td> <!-- entry_type -->
11337
11338             <td class="entry_description">
11339               <p>Time GPS fix was made to include in
11340 EXIF.<wbr/></p>
11341             </td>
11342
11343             <td class="entry_units">
11344               UTC in seconds since January 1,<wbr/> 1970
11345             </td>
11346
11347             <td class="entry_range">
11348             </td>
11349
11350             <td class="entry_hal_version">
11351               <p>3.<wbr/>2</p>
11352             </td>
11353
11354             <td class="entry_tags">
11355               <ul class="entry_tags">
11356                   <li><a href="#tag_BC">BC</a></li>
11357               </ul>
11358             </td>
11359
11360           </tr>
11361
11362
11363           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11364            <!-- end of entry -->
11365         
11366                 
11367           <tr class="entry" id="controls_android.jpeg.orientation">
11368             <td class="entry_name
11369              " rowspan="3">
11370               android.<wbr/>jpeg.<wbr/>orientation
11371             </td>
11372             <td class="entry_type">
11373                 <span class="entry_type_name">int32</span>
11374
11375               <span class="entry_type_visibility"> [public]</span>
11376
11377
11378               <span class="entry_type_hwlevel">[legacy] </span>
11379
11380
11381
11382
11383             </td> <!-- entry_type -->
11384
11385             <td class="entry_description">
11386               <p>The orientation for a JPEG image.<wbr/></p>
11387             </td>
11388
11389             <td class="entry_units">
11390               Degrees in multiples of 90
11391             </td>
11392
11393             <td class="entry_range">
11394               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
11395             </td>
11396
11397             <td class="entry_hal_version">
11398               <p>3.<wbr/>2</p>
11399             </td>
11400
11401             <td class="entry_tags">
11402               <ul class="entry_tags">
11403                   <li><a href="#tag_BC">BC</a></li>
11404               </ul>
11405             </td>
11406
11407           </tr>
11408           <tr class="entries_header">
11409             <th class="th_details" colspan="6">Details</th>
11410           </tr>
11411           <tr class="entry_cont">
11412             <td class="entry_details" colspan="6">
11413               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
11414 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
11415 upright.<wbr/></p>
11416 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
11417 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
11418 the thumbnail data will also be rotated.<wbr/></p>
11419 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
11420 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
11421 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
11422 sample code may be used:</p>
11423 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
11424     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
11425     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
11426
11427     //<wbr/> Round device orientation to a multiple of 90
11428     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
11429
11430     //<wbr/> Reverse device orientation for front-facing cameras
11431     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
11432     if (facingFront) deviceOrientation = -deviceOrientation;
11433
11434     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
11435     //<wbr/> the image upright relative to the device orientation
11436     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
11437
11438     return jpegOrientation;
11439 }
11440 </code></pre>
11441             </td>
11442           </tr>
11443
11444
11445           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11446            <!-- end of entry -->
11447         
11448                 
11449           <tr class="entry" id="controls_android.jpeg.quality">
11450             <td class="entry_name
11451              " rowspan="3">
11452               android.<wbr/>jpeg.<wbr/>quality
11453             </td>
11454             <td class="entry_type">
11455                 <span class="entry_type_name">byte</span>
11456
11457               <span class="entry_type_visibility"> [public]</span>
11458
11459
11460               <span class="entry_type_hwlevel">[legacy] </span>
11461
11462
11463
11464
11465             </td> <!-- entry_type -->
11466
11467             <td class="entry_description">
11468               <p>Compression quality of the final JPEG
11469 image.<wbr/></p>
11470             </td>
11471
11472             <td class="entry_units">
11473             </td>
11474
11475             <td class="entry_range">
11476               <p>1-100; larger is higher quality</p>
11477             </td>
11478
11479             <td class="entry_hal_version">
11480               <p>3.<wbr/>2</p>
11481             </td>
11482
11483             <td class="entry_tags">
11484               <ul class="entry_tags">
11485                   <li><a href="#tag_BC">BC</a></li>
11486               </ul>
11487             </td>
11488
11489           </tr>
11490           <tr class="entries_header">
11491             <th class="th_details" colspan="6">Details</th>
11492           </tr>
11493           <tr class="entry_cont">
11494             <td class="entry_details" colspan="6">
11495               <p>85-95 is typical usage range.<wbr/></p>
11496             </td>
11497           </tr>
11498
11499
11500           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11501            <!-- end of entry -->
11502         
11503                 
11504           <tr class="entry" id="controls_android.jpeg.thumbnailQuality">
11505             <td class="entry_name
11506              " rowspan="1">
11507               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
11508             </td>
11509             <td class="entry_type">
11510                 <span class="entry_type_name">byte</span>
11511
11512               <span class="entry_type_visibility"> [public]</span>
11513
11514
11515               <span class="entry_type_hwlevel">[legacy] </span>
11516
11517
11518
11519
11520             </td> <!-- entry_type -->
11521
11522             <td class="entry_description">
11523               <p>Compression quality of JPEG
11524 thumbnail.<wbr/></p>
11525             </td>
11526
11527             <td class="entry_units">
11528             </td>
11529
11530             <td class="entry_range">
11531               <p>1-100; larger is higher quality</p>
11532             </td>
11533
11534             <td class="entry_hal_version">
11535               <p>3.<wbr/>2</p>
11536             </td>
11537
11538             <td class="entry_tags">
11539               <ul class="entry_tags">
11540                   <li><a href="#tag_BC">BC</a></li>
11541               </ul>
11542             </td>
11543
11544           </tr>
11545
11546
11547           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11548            <!-- end of entry -->
11549         
11550                 
11551           <tr class="entry" id="controls_android.jpeg.thumbnailSize">
11552             <td class="entry_name
11553              " rowspan="5">
11554               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
11555             </td>
11556             <td class="entry_type">
11557                 <span class="entry_type_name">int32</span>
11558                 <span class="entry_type_container">x</span>
11559
11560                 <span class="entry_type_array">
11561                   2
11562                 </span>
11563               <span class="entry_type_visibility"> [public as size]</span>
11564
11565
11566               <span class="entry_type_hwlevel">[legacy] </span>
11567
11568
11569
11570
11571             </td> <!-- entry_type -->
11572
11573             <td class="entry_description">
11574               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
11575             </td>
11576
11577             <td class="entry_units">
11578             </td>
11579
11580             <td class="entry_range">
11581               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
11582             </td>
11583
11584             <td class="entry_hal_version">
11585               <p>3.<wbr/>2</p>
11586             </td>
11587
11588             <td class="entry_tags">
11589               <ul class="entry_tags">
11590                   <li><a href="#tag_BC">BC</a></li>
11591               </ul>
11592             </td>
11593
11594           </tr>
11595           <tr class="entries_header">
11596             <th class="th_details" colspan="6">Details</th>
11597           </tr>
11598           <tr class="entry_cont">
11599             <td class="entry_details" colspan="6">
11600               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
11601 but the captured JPEG will still be a valid image.<wbr/></p>
11602 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
11603 should have the same aspect ratio as the main JPEG output.<wbr/></p>
11604 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
11605 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
11606 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
11607 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
11608 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
11609 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
11610 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
11611 the camera device will handle thumbnail rotation in one of the following ways:</p>
11612 <ul>
11613 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
11614   and keep jpeg and thumbnail image data unrotated.<wbr/></li>
11615 <li>Rotate the jpeg and thumbnail image data and not set
11616   <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
11617   case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
11618   capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
11619   orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
11620   size.<wbr/></li>
11621 </ul>
11622             </td>
11623           </tr>
11624
11625           <tr class="entries_header">
11626             <th class="th_details" colspan="6">HAL Implementation Details</th>
11627           </tr>
11628           <tr class="entry_cont">
11629             <td class="entry_details" colspan="6">
11630               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
11631 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
11632 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
11633 thumbnail image cropping.<wbr/></p>
11634             </td>
11635           </tr>
11636
11637           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11638            <!-- end of entry -->
11639         
11640         
11641
11642       <!-- end of kind -->
11643       </tbody>
11644       <tr><td colspan="7" class="kind">static</td></tr>
11645
11646       <thead class="entries_header">
11647         <tr>
11648           <th class="th_name">Property Name</th>
11649           <th class="th_type">Type</th>
11650           <th class="th_description">Description</th>
11651           <th class="th_units">Units</th>
11652           <th class="th_range">Range</th>
11653           <th class="th_hal_version">Initial HIDL HAL version</th>
11654           <th class="th_tags">Tags</th>
11655         </tr>
11656       </thead>
11657
11658       <tbody>
11659
11660         
11661
11662         
11663
11664         
11665
11666         
11667
11668                 
11669           <tr class="entry" id="static_android.jpeg.availableThumbnailSizes">
11670             <td class="entry_name
11671              " rowspan="3">
11672               android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes
11673             </td>
11674             <td class="entry_type">
11675                 <span class="entry_type_name">int32</span>
11676                 <span class="entry_type_container">x</span>
11677
11678                 <span class="entry_type_array">
11679                   2 x n
11680                 </span>
11681               <span class="entry_type_visibility"> [public as size]</span>
11682
11683
11684               <span class="entry_type_hwlevel">[legacy] </span>
11685
11686
11687
11688
11689             </td> <!-- entry_type -->
11690
11691             <td class="entry_description">
11692               <p>List of JPEG thumbnail sizes for <a href="#controls_android.jpeg.thumbnailSize">android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size</a> supported by this
11693 camera device.<wbr/></p>
11694             </td>
11695
11696             <td class="entry_units">
11697             </td>
11698
11699             <td class="entry_range">
11700             </td>
11701
11702             <td class="entry_hal_version">
11703               <p>3.<wbr/>2</p>
11704             </td>
11705
11706             <td class="entry_tags">
11707               <ul class="entry_tags">
11708                   <li><a href="#tag_BC">BC</a></li>
11709               </ul>
11710             </td>
11711
11712           </tr>
11713           <tr class="entries_header">
11714             <th class="th_details" colspan="6">Details</th>
11715           </tr>
11716           <tr class="entry_cont">
11717             <td class="entry_details" colspan="6">
11718               <p>This list will include at least one non-zero resolution,<wbr/> plus <code>(0,<wbr/>0)</code> for indicating no
11719 thumbnail should be generated.<wbr/></p>
11720 <p>Below condiditions will be satisfied for this size list:</p>
11721 <ul>
11722 <li>The sizes will be sorted by increasing pixel area (width x height).<wbr/>
11723 If several resolutions have the same area,<wbr/> they will be sorted by increasing width.<wbr/></li>
11724 <li>The aspect ratio of the largest thumbnail size will be same as the
11725 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/>
11726 The largest size is defined as the size that has the largest pixel area
11727 in a given size list.<wbr/></li>
11728 <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
11729 one corresponding size that has the same aspect ratio in availableThumbnailSizes,<wbr/>
11730 and vice versa.<wbr/></li>
11731 <li>All non-<code>(0,<wbr/> 0)</code> sizes will have non-zero widths and heights.<wbr/></li>
11732 </ul>
11733             </td>
11734           </tr>
11735
11736
11737           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11738            <!-- end of entry -->
11739         
11740                 
11741           <tr class="entry" id="static_android.jpeg.maxSize">
11742             <td class="entry_name
11743              " rowspan="3">
11744               android.<wbr/>jpeg.<wbr/>max<wbr/>Size
11745             </td>
11746             <td class="entry_type">
11747                 <span class="entry_type_name">int32</span>
11748
11749               <span class="entry_type_visibility"> [system]</span>
11750
11751
11752
11753
11754
11755
11756             </td> <!-- entry_type -->
11757
11758             <td class="entry_description">
11759               <p>Maximum size in bytes for the compressed
11760 JPEG buffer</p>
11761             </td>
11762
11763             <td class="entry_units">
11764             </td>
11765
11766             <td class="entry_range">
11767               <p>Must be large enough to fit any JPEG produced by
11768 the camera</p>
11769             </td>
11770
11771             <td class="entry_hal_version">
11772               <p>3.<wbr/>2</p>
11773             </td>
11774
11775             <td class="entry_tags">
11776             </td>
11777
11778           </tr>
11779           <tr class="entries_header">
11780             <th class="th_details" colspan="6">Details</th>
11781           </tr>
11782           <tr class="entry_cont">
11783             <td class="entry_details" colspan="6">
11784               <p>This is used for sizing the gralloc buffers for
11785 JPEG</p>
11786             </td>
11787           </tr>
11788
11789
11790           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11791            <!-- end of entry -->
11792         
11793         
11794
11795       <!-- end of kind -->
11796       </tbody>
11797       <tr><td colspan="7" class="kind">dynamic</td></tr>
11798
11799       <thead class="entries_header">
11800         <tr>
11801           <th class="th_name">Property Name</th>
11802           <th class="th_type">Type</th>
11803           <th class="th_description">Description</th>
11804           <th class="th_units">Units</th>
11805           <th class="th_range">Range</th>
11806           <th class="th_hal_version">Initial HIDL HAL version</th>
11807           <th class="th_tags">Tags</th>
11808         </tr>
11809       </thead>
11810
11811       <tbody>
11812
11813         
11814
11815         
11816
11817         
11818
11819         
11820
11821                 
11822           <tr class="entry" id="dynamic_android.jpeg.gpsLocation">
11823             <td class="entry_name
11824              " rowspan="3">
11825               android.<wbr/>jpeg.<wbr/>gps<wbr/>Location
11826             </td>
11827             <td class="entry_type">
11828                 <span class="entry_type_name">byte</span>
11829
11830               <span class="entry_type_visibility"> [java_public as location]</span>
11831
11832               <span class="entry_type_synthetic">[synthetic] </span>
11833
11834               <span class="entry_type_hwlevel">[legacy] </span>
11835
11836
11837
11838
11839             </td> <!-- entry_type -->
11840
11841             <td class="entry_description">
11842               <p>A location object to use when generating image GPS metadata.<wbr/></p>
11843             </td>
11844
11845             <td class="entry_units">
11846             </td>
11847
11848             <td class="entry_range">
11849             </td>
11850
11851             <td class="entry_hal_version">
11852               <p>3.<wbr/>2</p>
11853             </td>
11854
11855             <td class="entry_tags">
11856             </td>
11857
11858           </tr>
11859           <tr class="entries_header">
11860             <th class="th_details" colspan="6">Details</th>
11861           </tr>
11862           <tr class="entry_cont">
11863             <td class="entry_details" colspan="6">
11864               <p>Setting a location object in a request will include the GPS coordinates of the location
11865 into any JPEG images captured based on the request.<wbr/> These coordinates can then be
11866 viewed by anyone who receives the JPEG image.<wbr/></p>
11867             </td>
11868           </tr>
11869
11870
11871           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11872            <!-- end of entry -->
11873         
11874                 
11875           <tr class="entry" id="dynamic_android.jpeg.gpsCoordinates">
11876             <td class="entry_name
11877              " rowspan="1">
11878               android.<wbr/>jpeg.<wbr/>gps<wbr/>Coordinates
11879             </td>
11880             <td class="entry_type">
11881                 <span class="entry_type_name">double</span>
11882                 <span class="entry_type_container">x</span>
11883
11884                 <span class="entry_type_array">
11885                   3
11886                 </span>
11887               <span class="entry_type_visibility"> [ndk_public]</span>
11888
11889
11890               <span class="entry_type_hwlevel">[legacy] </span>
11891
11892
11893                 <div class="entry_type_notes">latitude,<wbr/> longitude,<wbr/> altitude.<wbr/> First two in degrees,<wbr/> the third in meters</div>
11894
11895
11896             </td> <!-- entry_type -->
11897
11898             <td class="entry_description">
11899               <p>GPS coordinates to include in output JPEG
11900 EXIF.<wbr/></p>
11901             </td>
11902
11903             <td class="entry_units">
11904             </td>
11905
11906             <td class="entry_range">
11907               <p>(-180 - 180],<wbr/> [-90,<wbr/>90],<wbr/> [-inf,<wbr/> inf]</p>
11908             </td>
11909
11910             <td class="entry_hal_version">
11911               <p>3.<wbr/>2</p>
11912             </td>
11913
11914             <td class="entry_tags">
11915               <ul class="entry_tags">
11916                   <li><a href="#tag_BC">BC</a></li>
11917               </ul>
11918             </td>
11919
11920           </tr>
11921
11922
11923           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11924            <!-- end of entry -->
11925         
11926                 
11927           <tr class="entry" id="dynamic_android.jpeg.gpsProcessingMethod">
11928             <td class="entry_name
11929              " rowspan="1">
11930               android.<wbr/>jpeg.<wbr/>gps<wbr/>Processing<wbr/>Method
11931             </td>
11932             <td class="entry_type">
11933                 <span class="entry_type_name">byte</span>
11934
11935               <span class="entry_type_visibility"> [ndk_public as string]</span>
11936
11937
11938               <span class="entry_type_hwlevel">[legacy] </span>
11939
11940
11941
11942
11943             </td> <!-- entry_type -->
11944
11945             <td class="entry_description">
11946               <p>32 characters describing GPS algorithm to
11947 include in EXIF.<wbr/></p>
11948             </td>
11949
11950             <td class="entry_units">
11951               UTF-8 null-terminated string
11952             </td>
11953
11954             <td class="entry_range">
11955             </td>
11956
11957             <td class="entry_hal_version">
11958               <p>3.<wbr/>2</p>
11959             </td>
11960
11961             <td class="entry_tags">
11962               <ul class="entry_tags">
11963                   <li><a href="#tag_BC">BC</a></li>
11964               </ul>
11965             </td>
11966
11967           </tr>
11968
11969
11970           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
11971            <!-- end of entry -->
11972         
11973                 
11974           <tr class="entry" id="dynamic_android.jpeg.gpsTimestamp">
11975             <td class="entry_name
11976              " rowspan="1">
11977               android.<wbr/>jpeg.<wbr/>gps<wbr/>Timestamp
11978             </td>
11979             <td class="entry_type">
11980                 <span class="entry_type_name">int64</span>
11981
11982               <span class="entry_type_visibility"> [ndk_public]</span>
11983
11984
11985               <span class="entry_type_hwlevel">[legacy] </span>
11986
11987
11988
11989
11990             </td> <!-- entry_type -->
11991
11992             <td class="entry_description">
11993               <p>Time GPS fix was made to include in
11994 EXIF.<wbr/></p>
11995             </td>
11996
11997             <td class="entry_units">
11998               UTC in seconds since January 1,<wbr/> 1970
11999             </td>
12000
12001             <td class="entry_range">
12002             </td>
12003
12004             <td class="entry_hal_version">
12005               <p>3.<wbr/>2</p>
12006             </td>
12007
12008             <td class="entry_tags">
12009               <ul class="entry_tags">
12010                   <li><a href="#tag_BC">BC</a></li>
12011               </ul>
12012             </td>
12013
12014           </tr>
12015
12016
12017           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12018            <!-- end of entry -->
12019         
12020                 
12021           <tr class="entry" id="dynamic_android.jpeg.orientation">
12022             <td class="entry_name
12023              " rowspan="3">
12024               android.<wbr/>jpeg.<wbr/>orientation
12025             </td>
12026             <td class="entry_type">
12027                 <span class="entry_type_name">int32</span>
12028
12029               <span class="entry_type_visibility"> [public]</span>
12030
12031
12032               <span class="entry_type_hwlevel">[legacy] </span>
12033
12034
12035
12036
12037             </td> <!-- entry_type -->
12038
12039             <td class="entry_description">
12040               <p>The orientation for a JPEG image.<wbr/></p>
12041             </td>
12042
12043             <td class="entry_units">
12044               Degrees in multiples of 90
12045             </td>
12046
12047             <td class="entry_range">
12048               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
12049             </td>
12050
12051             <td class="entry_hal_version">
12052               <p>3.<wbr/>2</p>
12053             </td>
12054
12055             <td class="entry_tags">
12056               <ul class="entry_tags">
12057                   <li><a href="#tag_BC">BC</a></li>
12058               </ul>
12059             </td>
12060
12061           </tr>
12062           <tr class="entries_header">
12063             <th class="th_details" colspan="6">Details</th>
12064           </tr>
12065           <tr class="entry_cont">
12066             <td class="entry_details" colspan="6">
12067               <p>The clockwise rotation angle in degrees,<wbr/> relative to the orientation
12068 to the camera,<wbr/> that the JPEG picture needs to be rotated by,<wbr/> to be viewed
12069 upright.<wbr/></p>
12070 <p>Camera devices may either encode this value into the JPEG EXIF header,<wbr/> or
12071 rotate the image data to match this orientation.<wbr/> When the image data is rotated,<wbr/>
12072 the thumbnail data will also be rotated.<wbr/></p>
12073 <p>Note that this orientation is relative to the orientation of the camera sensor,<wbr/> given
12074 by <a href="#static_android.sensor.orientation">android.<wbr/>sensor.<wbr/>orientation</a>.<wbr/></p>
12075 <p>To translate from the device orientation given by the Android sensor APIs,<wbr/> the following
12076 sample code may be used:</p>
12077 <pre><code>private int getJpegOrientation(CameraCharacteristics c,<wbr/> int deviceOrientation) {
12078     if (deviceOrientation == android.<wbr/>view.<wbr/>Orientation<wbr/>Event<wbr/>Listener.<wbr/>ORIENTATION_<wbr/>UNKNOWN) return 0;
12079     int sensorOrientation = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>SENSOR_<wbr/>ORIENTATION);
12080
12081     //<wbr/> Round device orientation to a multiple of 90
12082     deviceOrientation = (deviceOrientation + 45) /<wbr/> 90 * 90;
12083
12084     //<wbr/> Reverse device orientation for front-facing cameras
12085     boolean facingFront = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING) == Camera<wbr/>Characteristics.<wbr/>LENS_<wbr/>FACING_<wbr/>FRONT;
12086     if (facingFront) deviceOrientation = -deviceOrientation;
12087
12088     //<wbr/> Calculate desired JPEG orientation relative to camera orientation to make
12089     //<wbr/> the image upright relative to the device orientation
12090     int jpegOrientation = (sensorOrientation + deviceOrientation + 360) % 360;
12091
12092     return jpegOrientation;
12093 }
12094 </code></pre>
12095             </td>
12096           </tr>
12097
12098
12099           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12100            <!-- end of entry -->
12101         
12102                 
12103           <tr class="entry" id="dynamic_android.jpeg.quality">
12104             <td class="entry_name
12105              " rowspan="3">
12106               android.<wbr/>jpeg.<wbr/>quality
12107             </td>
12108             <td class="entry_type">
12109                 <span class="entry_type_name">byte</span>
12110
12111               <span class="entry_type_visibility"> [public]</span>
12112
12113
12114               <span class="entry_type_hwlevel">[legacy] </span>
12115
12116
12117
12118
12119             </td> <!-- entry_type -->
12120
12121             <td class="entry_description">
12122               <p>Compression quality of the final JPEG
12123 image.<wbr/></p>
12124             </td>
12125
12126             <td class="entry_units">
12127             </td>
12128
12129             <td class="entry_range">
12130               <p>1-100; larger is higher quality</p>
12131             </td>
12132
12133             <td class="entry_hal_version">
12134               <p>3.<wbr/>2</p>
12135             </td>
12136
12137             <td class="entry_tags">
12138               <ul class="entry_tags">
12139                   <li><a href="#tag_BC">BC</a></li>
12140               </ul>
12141             </td>
12142
12143           </tr>
12144           <tr class="entries_header">
12145             <th class="th_details" colspan="6">Details</th>
12146           </tr>
12147           <tr class="entry_cont">
12148             <td class="entry_details" colspan="6">
12149               <p>85-95 is typical usage range.<wbr/></p>
12150             </td>
12151           </tr>
12152
12153
12154           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12155            <!-- end of entry -->
12156         
12157                 
12158           <tr class="entry" id="dynamic_android.jpeg.size">
12159             <td class="entry_name
12160              " rowspan="3">
12161               android.<wbr/>jpeg.<wbr/>size
12162             </td>
12163             <td class="entry_type">
12164                 <span class="entry_type_name">int32</span>
12165
12166               <span class="entry_type_visibility"> [system]</span>
12167
12168
12169
12170
12171
12172
12173             </td> <!-- entry_type -->
12174
12175             <td class="entry_description">
12176               <p>The size of the compressed JPEG image,<wbr/> in
12177 bytes</p>
12178             </td>
12179
12180             <td class="entry_units">
12181             </td>
12182
12183             <td class="entry_range">
12184               <p>&gt;= 0</p>
12185             </td>
12186
12187             <td class="entry_hal_version">
12188               <p>3.<wbr/>2</p>
12189             </td>
12190
12191             <td class="entry_tags">
12192               <ul class="entry_tags">
12193                   <li><a href="#tag_FUTURE">FUTURE</a></li>
12194               </ul>
12195             </td>
12196
12197           </tr>
12198           <tr class="entries_header">
12199             <th class="th_details" colspan="6">Details</th>
12200           </tr>
12201           <tr class="entry_cont">
12202             <td class="entry_details" colspan="6">
12203               <p>If no JPEG output is produced for the request,<wbr/>
12204 this must be 0.<wbr/></p>
12205 <p>Otherwise,<wbr/> this describes the real size of the compressed
12206 JPEG image placed in the output stream.<wbr/>  More specifically,<wbr/>
12207 if <a href="#static_android.jpeg.maxSize">android.<wbr/>jpeg.<wbr/>max<wbr/>Size</a> = 1000000,<wbr/> and a specific capture
12208 has <a href="#dynamic_android.jpeg.size">android.<wbr/>jpeg.<wbr/>size</a> = 500000,<wbr/> then the output buffer from
12209 the JPEG stream will be 1000000 bytes,<wbr/> of which the first
12210 500000 make up the real data.<wbr/></p>
12211             </td>
12212           </tr>
12213
12214
12215           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12216            <!-- end of entry -->
12217         
12218                 
12219           <tr class="entry" id="dynamic_android.jpeg.thumbnailQuality">
12220             <td class="entry_name
12221              " rowspan="1">
12222               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Quality
12223             </td>
12224             <td class="entry_type">
12225                 <span class="entry_type_name">byte</span>
12226
12227               <span class="entry_type_visibility"> [public]</span>
12228
12229
12230               <span class="entry_type_hwlevel">[legacy] </span>
12231
12232
12233
12234
12235             </td> <!-- entry_type -->
12236
12237             <td class="entry_description">
12238               <p>Compression quality of JPEG
12239 thumbnail.<wbr/></p>
12240             </td>
12241
12242             <td class="entry_units">
12243             </td>
12244
12245             <td class="entry_range">
12246               <p>1-100; larger is higher quality</p>
12247             </td>
12248
12249             <td class="entry_hal_version">
12250               <p>3.<wbr/>2</p>
12251             </td>
12252
12253             <td class="entry_tags">
12254               <ul class="entry_tags">
12255                   <li><a href="#tag_BC">BC</a></li>
12256               </ul>
12257             </td>
12258
12259           </tr>
12260
12261
12262           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12263            <!-- end of entry -->
12264         
12265                 
12266           <tr class="entry" id="dynamic_android.jpeg.thumbnailSize">
12267             <td class="entry_name
12268              " rowspan="5">
12269               android.<wbr/>jpeg.<wbr/>thumbnail<wbr/>Size
12270             </td>
12271             <td class="entry_type">
12272                 <span class="entry_type_name">int32</span>
12273                 <span class="entry_type_container">x</span>
12274
12275                 <span class="entry_type_array">
12276                   2
12277                 </span>
12278               <span class="entry_type_visibility"> [public as size]</span>
12279
12280
12281               <span class="entry_type_hwlevel">[legacy] </span>
12282
12283
12284
12285
12286             </td> <!-- entry_type -->
12287
12288             <td class="entry_description">
12289               <p>Resolution of embedded JPEG thumbnail.<wbr/></p>
12290             </td>
12291
12292             <td class="entry_units">
12293             </td>
12294
12295             <td class="entry_range">
12296               <p><a href="#static_android.jpeg.availableThumbnailSizes">android.<wbr/>jpeg.<wbr/>available<wbr/>Thumbnail<wbr/>Sizes</a></p>
12297             </td>
12298
12299             <td class="entry_hal_version">
12300               <p>3.<wbr/>2</p>
12301             </td>
12302
12303             <td class="entry_tags">
12304               <ul class="entry_tags">
12305                   <li><a href="#tag_BC">BC</a></li>
12306               </ul>
12307             </td>
12308
12309           </tr>
12310           <tr class="entries_header">
12311             <th class="th_details" colspan="6">Details</th>
12312           </tr>
12313           <tr class="entry_cont">
12314             <td class="entry_details" colspan="6">
12315               <p>When set to (0,<wbr/> 0) value,<wbr/> the JPEG EXIF will not contain thumbnail,<wbr/>
12316 but the captured JPEG will still be a valid image.<wbr/></p>
12317 <p>For best results,<wbr/> when issuing a request for a JPEG image,<wbr/> the thumbnail size selected
12318 should have the same aspect ratio as the main JPEG output.<wbr/></p>
12319 <p>If the thumbnail image aspect ratio differs from the JPEG primary image aspect
12320 ratio,<wbr/> the camera device creates the thumbnail by cropping it from the primary image.<wbr/>
12321 For example,<wbr/> if the primary image has 4:3 aspect ratio,<wbr/> the thumbnail image has
12322 16:9 aspect ratio,<wbr/> the primary image will be cropped vertically (letterbox) to
12323 generate the thumbnail image.<wbr/> The thumbnail image will always have a smaller Field
12324 Of View (FOV) than the primary image when aspect ratios differ.<wbr/></p>
12325 <p>When an <a href="#controls_android.jpeg.orientation">android.<wbr/>jpeg.<wbr/>orientation</a> of non-zero degree is requested,<wbr/>
12326 the camera device will handle thumbnail rotation in one of the following ways:</p>
12327 <ul>
12328 <li>Set the <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>
12329   and keep jpeg and thumbnail image data unrotated.<wbr/></li>
12330 <li>Rotate the jpeg and thumbnail image data and not set
12331   <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_ORIENTATION">EXIF orientation flag</a>.<wbr/> In this
12332   case,<wbr/> LIMITED or FULL hardware level devices will report rotated thumnail size in
12333   capture result,<wbr/> so the width and height will be interchanged if 90 or 270 degree
12334   orientation is requested.<wbr/> LEGACY device will always report unrotated thumbnail
12335   size.<wbr/></li>
12336 </ul>
12337             </td>
12338           </tr>
12339
12340           <tr class="entries_header">
12341             <th class="th_details" colspan="6">HAL Implementation Details</th>
12342           </tr>
12343           <tr class="entry_cont">
12344             <td class="entry_details" colspan="6">
12345               <p>The HAL must not squeeze or stretch the downscaled primary image to generate thumbnail.<wbr/>
12346 The cropping must be done on the primary jpeg image rather than the sensor active array.<wbr/>
12347 The stream cropping rule specified by "S5.<wbr/> Cropping" in camera3.<wbr/>h doesn't apply to the
12348 thumbnail image cropping.<wbr/></p>
12349             </td>
12350           </tr>
12351
12352           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12353            <!-- end of entry -->
12354         
12355         
12356
12357       <!-- end of kind -->
12358       </tbody>
12359
12360   <!-- end of section -->
12361   <tr><td colspan="7" id="section_lens" class="section">lens</td></tr>
12362
12363
12364       <tr><td colspan="7" class="kind">controls</td></tr>
12365
12366       <thead class="entries_header">
12367         <tr>
12368           <th class="th_name">Property Name</th>
12369           <th class="th_type">Type</th>
12370           <th class="th_description">Description</th>
12371           <th class="th_units">Units</th>
12372           <th class="th_range">Range</th>
12373           <th class="th_hal_version">Initial HIDL HAL version</th>
12374           <th class="th_tags">Tags</th>
12375         </tr>
12376       </thead>
12377
12378       <tbody>
12379
12380         
12381
12382         
12383
12384         
12385
12386         
12387
12388                 
12389           <tr class="entry" id="controls_android.lens.aperture">
12390             <td class="entry_name
12391              " rowspan="3">
12392               android.<wbr/>lens.<wbr/>aperture
12393             </td>
12394             <td class="entry_type">
12395                 <span class="entry_type_name">float</span>
12396
12397               <span class="entry_type_visibility"> [public]</span>
12398
12399
12400               <span class="entry_type_hwlevel">[full] </span>
12401
12402
12403
12404
12405             </td> <!-- entry_type -->
12406
12407             <td class="entry_description">
12408               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
12409 effective aperture diameter.<wbr/></p>
12410             </td>
12411
12412             <td class="entry_units">
12413               The f-number (f/<wbr/>N)
12414             </td>
12415
12416             <td class="entry_range">
12417               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
12418             </td>
12419
12420             <td class="entry_hal_version">
12421               <p>3.<wbr/>2</p>
12422             </td>
12423
12424             <td class="entry_tags">
12425               <ul class="entry_tags">
12426                   <li><a href="#tag_V1">V1</a></li>
12427               </ul>
12428             </td>
12429
12430           </tr>
12431           <tr class="entries_header">
12432             <th class="th_details" colspan="6">Details</th>
12433           </tr>
12434           <tr class="entry_cont">
12435             <td class="entry_details" colspan="6">
12436               <p>Setting this value is only supported on the camera devices that have a variable
12437 aperture lens.<wbr/></p>
12438 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
12439 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
12440 <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>
12441 to achieve manual exposure control.<wbr/></p>
12442 <p>The requested aperture value may take several frames to reach the
12443 requested value; the camera device will report the current (intermediate)
12444 aperture size in capture result metadata while the aperture is changing.<wbr/>
12445 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>
12446 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
12447 the ON modes,<wbr/> this will be overridden by the camera device
12448 auto-exposure algorithm,<wbr/> the overridden values are then provided
12449 back to the user in the corresponding result.<wbr/></p>
12450             </td>
12451           </tr>
12452
12453
12454           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12455            <!-- end of entry -->
12456         
12457                 
12458           <tr class="entry" id="controls_android.lens.filterDensity">
12459             <td class="entry_name
12460              " rowspan="3">
12461               android.<wbr/>lens.<wbr/>filter<wbr/>Density
12462             </td>
12463             <td class="entry_type">
12464                 <span class="entry_type_name">float</span>
12465
12466               <span class="entry_type_visibility"> [public]</span>
12467
12468
12469               <span class="entry_type_hwlevel">[full] </span>
12470
12471
12472
12473
12474             </td> <!-- entry_type -->
12475
12476             <td class="entry_description">
12477               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
12478             </td>
12479
12480             <td class="entry_units">
12481               Exposure Value (EV)
12482             </td>
12483
12484             <td class="entry_range">
12485               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
12486             </td>
12487
12488             <td class="entry_hal_version">
12489               <p>3.<wbr/>2</p>
12490             </td>
12491
12492             <td class="entry_tags">
12493               <ul class="entry_tags">
12494                   <li><a href="#tag_V1">V1</a></li>
12495               </ul>
12496             </td>
12497
12498           </tr>
12499           <tr class="entries_header">
12500             <th class="th_details" colspan="6">Details</th>
12501           </tr>
12502           <tr class="entry_cont">
12503             <td class="entry_details" colspan="6">
12504               <p>This control will not be supported on most camera devices.<wbr/></p>
12505 <p>Lens filters are typically used to lower the amount of light the
12506 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
12507 step is the standard logarithmic representation,<wbr/> which are
12508 non-negative,<wbr/> and inversely proportional to the amount of light
12509 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
12510 in no reduction of the incoming light,<wbr/> and setting this to 2 would
12511 mean that the filter is set to reduce incoming light by two stops
12512 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
12513 <p>It may take several frames before the lens filter density changes
12514 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
12515 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12516             </td>
12517           </tr>
12518
12519
12520           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12521            <!-- end of entry -->
12522         
12523                 
12524           <tr class="entry" id="controls_android.lens.focalLength">
12525             <td class="entry_name
12526              " rowspan="3">
12527               android.<wbr/>lens.<wbr/>focal<wbr/>Length
12528             </td>
12529             <td class="entry_type">
12530                 <span class="entry_type_name">float</span>
12531
12532               <span class="entry_type_visibility"> [public]</span>
12533
12534
12535               <span class="entry_type_hwlevel">[legacy] </span>
12536
12537
12538
12539
12540             </td> <!-- entry_type -->
12541
12542             <td class="entry_description">
12543               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
12544             </td>
12545
12546             <td class="entry_units">
12547               Millimeters
12548             </td>
12549
12550             <td class="entry_range">
12551               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
12552             </td>
12553
12554             <td class="entry_hal_version">
12555               <p>3.<wbr/>2</p>
12556             </td>
12557
12558             <td class="entry_tags">
12559               <ul class="entry_tags">
12560                   <li><a href="#tag_V1">V1</a></li>
12561               </ul>
12562             </td>
12563
12564           </tr>
12565           <tr class="entries_header">
12566             <th class="th_details" colspan="6">Details</th>
12567           </tr>
12568           <tr class="entry_cont">
12569             <td class="entry_details" colspan="6">
12570               <p>This setting controls the physical focal length of the camera
12571 device's lens.<wbr/> Changing the focal length changes the field of
12572 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
12573 <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
12574 setting won't be applied instantaneously,<wbr/> and it may take several
12575 frames before the lens can change to the requested focal length.<wbr/>
12576 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
12577 be set to MOVING.<wbr/></p>
12578 <p>Optical zoom will not be supported on most devices.<wbr/></p>
12579             </td>
12580           </tr>
12581
12582
12583           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12584            <!-- end of entry -->
12585         
12586                 
12587           <tr class="entry" id="controls_android.lens.focusDistance">
12588             <td class="entry_name
12589              " rowspan="3">
12590               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
12591             </td>
12592             <td class="entry_type">
12593                 <span class="entry_type_name">float</span>
12594
12595               <span class="entry_type_visibility"> [public]</span>
12596
12597
12598               <span class="entry_type_hwlevel">[full] </span>
12599
12600
12601
12602
12603             </td> <!-- entry_type -->
12604
12605             <td class="entry_description">
12606               <p>Desired distance to plane of sharpest focus,<wbr/>
12607 measured from frontmost surface of the lens.<wbr/></p>
12608             </td>
12609
12610             <td class="entry_units">
12611               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
12612             </td>
12613
12614             <td class="entry_range">
12615               <p>&gt;= 0</p>
12616             </td>
12617
12618             <td class="entry_hal_version">
12619               <p>3.<wbr/>2</p>
12620             </td>
12621
12622             <td class="entry_tags">
12623               <ul class="entry_tags">
12624                   <li><a href="#tag_BC">BC</a></li>
12625                   <li><a href="#tag_V1">V1</a></li>
12626               </ul>
12627             </td>
12628
12629           </tr>
12630           <tr class="entries_header">
12631             <th class="th_details" colspan="6">Details</th>
12632           </tr>
12633           <tr class="entry_cont">
12634             <td class="entry_details" colspan="6">
12635               <p>This control can be used for setting manual focus,<wbr/> on devices that support
12636 the MANUAL_<wbr/>SENSOR capability and have a variable-focus lens (see
12637 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>).<wbr/></p>
12638 <p>A value of <code>0.<wbr/>0f</code> means infinity focus.<wbr/> The value set will be clamped to
12639 <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>
12640 <p>Like <a href="#controls_android.lens.focalLength">android.<wbr/>lens.<wbr/>focal<wbr/>Length</a>,<wbr/> this setting won't be applied
12641 instantaneously,<wbr/> and it may take several frames before the lens
12642 can move to the requested focus distance.<wbr/> While the lens is still moving,<wbr/>
12643 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
12644 <p>LEGACY devices support at most setting this to <code>0.<wbr/>0f</code>
12645 for infinity focus.<wbr/></p>
12646             </td>
12647           </tr>
12648
12649
12650           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12651            <!-- end of entry -->
12652         
12653                 
12654           <tr class="entry" id="controls_android.lens.opticalStabilizationMode">
12655             <td class="entry_name
12656              " rowspan="3">
12657               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
12658             </td>
12659             <td class="entry_type">
12660                 <span class="entry_type_name entry_type_name_enum">byte</span>
12661
12662               <span class="entry_type_visibility"> [public]</span>
12663
12664
12665               <span class="entry_type_hwlevel">[limited] </span>
12666
12667
12668
12669                 <ul class="entry_type_enum">
12670                   <li>
12671                     <span class="entry_type_enum_name">OFF (v3.2)</span>
12672                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
12673                   </li>
12674                   <li>
12675                     <span class="entry_type_enum_name">ON (v3.2)</span>
12676                     <span class="entry_type_enum_optional">[optional]</span>
12677                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
12678                   </li>
12679                 </ul>
12680
12681             </td> <!-- entry_type -->
12682
12683             <td class="entry_description">
12684               <p>Sets whether the camera device uses optical image stabilization (OIS)
12685 when capturing images.<wbr/></p>
12686             </td>
12687
12688             <td class="entry_units">
12689             </td>
12690
12691             <td class="entry_range">
12692               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
12693             </td>
12694
12695             <td class="entry_hal_version">
12696               <p>3.<wbr/>2</p>
12697             </td>
12698
12699             <td class="entry_tags">
12700               <ul class="entry_tags">
12701                   <li><a href="#tag_V1">V1</a></li>
12702               </ul>
12703             </td>
12704
12705           </tr>
12706           <tr class="entries_header">
12707             <th class="th_details" colspan="6">Details</th>
12708           </tr>
12709           <tr class="entry_cont">
12710             <td class="entry_details" colspan="6">
12711               <p>OIS is used to compensate for motion blur due to small
12712 movements of the camera during capture.<wbr/> Unlike digital image
12713 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
12714 makes use of mechanical elements to stabilize the camera
12715 sensor,<wbr/> and thus allows for longer exposure times before
12716 camera shake becomes apparent.<wbr/></p>
12717 <p>Switching between different optical stabilization modes may take several
12718 frames to initialize,<wbr/> the camera device will report the current mode in
12719 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
12720 optical stabilization modes in the first several capture results may still
12721 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
12722 <p>If a camera device supports both OIS and digital image stabilization
12723 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
12724 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
12725 <p>Not all devices will support OIS; see
12726 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
12727 available controls.<wbr/></p>
12728             </td>
12729           </tr>
12730
12731
12732           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12733            <!-- end of entry -->
12734         
12735         
12736
12737       <!-- end of kind -->
12738       </tbody>
12739       <tr><td colspan="7" class="kind">static</td></tr>
12740
12741       <thead class="entries_header">
12742         <tr>
12743           <th class="th_name">Property Name</th>
12744           <th class="th_type">Type</th>
12745           <th class="th_description">Description</th>
12746           <th class="th_units">Units</th>
12747           <th class="th_range">Range</th>
12748           <th class="th_hal_version">Initial HIDL HAL version</th>
12749           <th class="th_tags">Tags</th>
12750         </tr>
12751       </thead>
12752
12753       <tbody>
12754
12755         
12756
12757         
12758
12759         
12760
12761         
12762                 
12763             
12764
12765                 
12766           <tr class="entry" id="static_android.lens.info.availableApertures">
12767             <td class="entry_name
12768              " rowspan="3">
12769               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures
12770             </td>
12771             <td class="entry_type">
12772                 <span class="entry_type_name">float</span>
12773                 <span class="entry_type_container">x</span>
12774
12775                 <span class="entry_type_array">
12776                   n
12777                 </span>
12778               <span class="entry_type_visibility"> [public]</span>
12779
12780
12781               <span class="entry_type_hwlevel">[full] </span>
12782
12783
12784
12785
12786             </td> <!-- entry_type -->
12787
12788             <td class="entry_description">
12789               <p>List of aperture size values for <a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a> that are
12790 supported by this camera device.<wbr/></p>
12791             </td>
12792
12793             <td class="entry_units">
12794               The aperture f-number
12795             </td>
12796
12797             <td class="entry_range">
12798             </td>
12799
12800             <td class="entry_hal_version">
12801               <p>3.<wbr/>2</p>
12802             </td>
12803
12804             <td class="entry_tags">
12805               <ul class="entry_tags">
12806                   <li><a href="#tag_V1">V1</a></li>
12807               </ul>
12808             </td>
12809
12810           </tr>
12811           <tr class="entries_header">
12812             <th class="th_details" colspan="6">Details</th>
12813           </tr>
12814           <tr class="entry_cont">
12815             <td class="entry_details" colspan="6">
12816               <p>If the camera device doesn't support a variable lens aperture,<wbr/>
12817 this list will contain only one value,<wbr/> which is the fixed aperture size.<wbr/></p>
12818 <p>If the camera device supports a variable aperture,<wbr/> the aperture values
12819 in this list will be sorted in ascending order.<wbr/></p>
12820             </td>
12821           </tr>
12822
12823
12824           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12825            <!-- end of entry -->
12826         
12827                 
12828           <tr class="entry" id="static_android.lens.info.availableFilterDensities">
12829             <td class="entry_name
12830              " rowspan="3">
12831               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities
12832             </td>
12833             <td class="entry_type">
12834                 <span class="entry_type_name">float</span>
12835                 <span class="entry_type_container">x</span>
12836
12837                 <span class="entry_type_array">
12838                   n
12839                 </span>
12840               <span class="entry_type_visibility"> [public]</span>
12841
12842
12843               <span class="entry_type_hwlevel">[full] </span>
12844
12845
12846
12847
12848             </td> <!-- entry_type -->
12849
12850             <td class="entry_description">
12851               <p>List of neutral density filter values for
12852 <a href="#controls_android.lens.filterDensity">android.<wbr/>lens.<wbr/>filter<wbr/>Density</a> that are supported by this camera device.<wbr/></p>
12853             </td>
12854
12855             <td class="entry_units">
12856               Exposure value (EV)
12857             </td>
12858
12859             <td class="entry_range">
12860               <p>Values are &gt;= 0</p>
12861             </td>
12862
12863             <td class="entry_hal_version">
12864               <p>3.<wbr/>2</p>
12865             </td>
12866
12867             <td class="entry_tags">
12868               <ul class="entry_tags">
12869                   <li><a href="#tag_V1">V1</a></li>
12870               </ul>
12871             </td>
12872
12873           </tr>
12874           <tr class="entries_header">
12875             <th class="th_details" colspan="6">Details</th>
12876           </tr>
12877           <tr class="entry_cont">
12878             <td class="entry_details" colspan="6">
12879               <p>If a neutral density filter is not supported by this camera device,<wbr/>
12880 this list will contain only 0.<wbr/> Otherwise,<wbr/> this list will include every
12881 filter density supported by the camera device,<wbr/> in ascending order.<wbr/></p>
12882             </td>
12883           </tr>
12884
12885
12886           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12887            <!-- end of entry -->
12888         
12889                 
12890           <tr class="entry" id="static_android.lens.info.availableFocalLengths">
12891             <td class="entry_name
12892              " rowspan="3">
12893               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths
12894             </td>
12895             <td class="entry_type">
12896                 <span class="entry_type_name">float</span>
12897                 <span class="entry_type_container">x</span>
12898
12899                 <span class="entry_type_array">
12900                   n
12901                 </span>
12902               <span class="entry_type_visibility"> [public]</span>
12903
12904
12905               <span class="entry_type_hwlevel">[legacy] </span>
12906
12907
12908                 <div class="entry_type_notes">The list of available focal lengths</div>
12909
12910
12911             </td> <!-- entry_type -->
12912
12913             <td class="entry_description">
12914               <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
12915 device.<wbr/></p>
12916             </td>
12917
12918             <td class="entry_units">
12919               Millimeters
12920             </td>
12921
12922             <td class="entry_range">
12923               <p>Values are &gt; 0</p>
12924             </td>
12925
12926             <td class="entry_hal_version">
12927               <p>3.<wbr/>2</p>
12928             </td>
12929
12930             <td class="entry_tags">
12931               <ul class="entry_tags">
12932                   <li><a href="#tag_BC">BC</a></li>
12933                   <li><a href="#tag_V1">V1</a></li>
12934               </ul>
12935             </td>
12936
12937           </tr>
12938           <tr class="entries_header">
12939             <th class="th_details" colspan="6">Details</th>
12940           </tr>
12941           <tr class="entry_cont">
12942             <td class="entry_details" colspan="6">
12943               <p>If optical zoom is not supported,<wbr/> this list will only contain
12944 a single value corresponding to the fixed focal length of the
12945 device.<wbr/> Otherwise,<wbr/> this list will include every focal length supported
12946 by the camera device,<wbr/> in ascending order.<wbr/></p>
12947             </td>
12948           </tr>
12949
12950
12951           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
12952            <!-- end of entry -->
12953         
12954                 
12955           <tr class="entry" id="static_android.lens.info.availableOpticalStabilization">
12956             <td class="entry_name
12957              " rowspan="3">
12958               android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization
12959             </td>
12960             <td class="entry_type">
12961                 <span class="entry_type_name">byte</span>
12962                 <span class="entry_type_container">x</span>
12963
12964                 <span class="entry_type_array">
12965                   n
12966                 </span>
12967               <span class="entry_type_visibility"> [public as enumList]</span>
12968
12969
12970               <span class="entry_type_hwlevel">[limited] </span>
12971
12972
12973                 <div class="entry_type_notes">list of enums</div>
12974
12975
12976             </td> <!-- entry_type -->
12977
12978             <td class="entry_description">
12979               <p>List of optical image stabilization (OIS) modes for
12980 <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>
12981             </td>
12982
12983             <td class="entry_units">
12984             </td>
12985
12986             <td class="entry_range">
12987               <p>Any value listed in <a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a></p>
12988             </td>
12989
12990             <td class="entry_hal_version">
12991               <p>3.<wbr/>2</p>
12992             </td>
12993
12994             <td class="entry_tags">
12995               <ul class="entry_tags">
12996                   <li><a href="#tag_V1">V1</a></li>
12997               </ul>
12998             </td>
12999
13000           </tr>
13001           <tr class="entries_header">
13002             <th class="th_details" colspan="6">Details</th>
13003           </tr>
13004           <tr class="entry_cont">
13005             <td class="entry_details" colspan="6">
13006               <p>If OIS is not supported by a given camera device,<wbr/> this list will
13007 contain only OFF.<wbr/></p>
13008             </td>
13009           </tr>
13010
13011
13012           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13013            <!-- end of entry -->
13014         
13015                 
13016           <tr class="entry" id="static_android.lens.info.hyperfocalDistance">
13017             <td class="entry_name
13018              " rowspan="3">
13019               android.<wbr/>lens.<wbr/>info.<wbr/>hyperfocal<wbr/>Distance
13020             </td>
13021             <td class="entry_type">
13022                 <span class="entry_type_name">float</span>
13023
13024               <span class="entry_type_visibility"> [public]</span>
13025
13026
13027               <span class="entry_type_hwlevel">[limited] </span>
13028
13029
13030
13031
13032             </td> <!-- entry_type -->
13033
13034             <td class="entry_description">
13035               <p>Hyperfocal distance for this lens.<wbr/></p>
13036             </td>
13037
13038             <td class="entry_units">
13039               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13040             </td>
13041
13042             <td class="entry_range">
13043               <p>If lens is fixed focus,<wbr/> &gt;= 0.<wbr/> If lens has focuser unit,<wbr/> the value is
13044 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>
13045             </td>
13046
13047             <td class="entry_hal_version">
13048               <p>3.<wbr/>2</p>
13049             </td>
13050
13051             <td class="entry_tags">
13052             </td>
13053
13054           </tr>
13055           <tr class="entries_header">
13056             <th class="th_details" colspan="6">Details</th>
13057           </tr>
13058           <tr class="entry_cont">
13059             <td class="entry_details" colspan="6">
13060               <p>If the lens is not fixed focus,<wbr/> the camera device will report this
13061 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>
13062             </td>
13063           </tr>
13064
13065
13066           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13067            <!-- end of entry -->
13068         
13069                 
13070           <tr class="entry" id="static_android.lens.info.minimumFocusDistance">
13071             <td class="entry_name
13072              " rowspan="5">
13073               android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance
13074             </td>
13075             <td class="entry_type">
13076                 <span class="entry_type_name">float</span>
13077
13078               <span class="entry_type_visibility"> [public]</span>
13079
13080
13081               <span class="entry_type_hwlevel">[limited] </span>
13082
13083
13084
13085
13086             </td> <!-- entry_type -->
13087
13088             <td class="entry_description">
13089               <p>Shortest distance from frontmost surface
13090 of the lens that can be brought into sharp focus.<wbr/></p>
13091             </td>
13092
13093             <td class="entry_units">
13094               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
13095             </td>
13096
13097             <td class="entry_range">
13098               <p>&gt;= 0</p>
13099             </td>
13100
13101             <td class="entry_hal_version">
13102               <p>3.<wbr/>2</p>
13103             </td>
13104
13105             <td class="entry_tags">
13106               <ul class="entry_tags">
13107                   <li><a href="#tag_V1">V1</a></li>
13108               </ul>
13109             </td>
13110
13111           </tr>
13112           <tr class="entries_header">
13113             <th class="th_details" colspan="6">Details</th>
13114           </tr>
13115           <tr class="entry_cont">
13116             <td class="entry_details" colspan="6">
13117               <p>If the lens is fixed-focus,<wbr/> this will be
13118 0.<wbr/></p>
13119             </td>
13120           </tr>
13121
13122           <tr class="entries_header">
13123             <th class="th_details" colspan="6">HAL Implementation Details</th>
13124           </tr>
13125           <tr class="entry_cont">
13126             <td class="entry_details" colspan="6">
13127               <p>Mandatory for FULL devices; LIMITED devices
13128 must always set this value to 0 for fixed-focus; and may omit
13129 the minimum focus distance otherwise.<wbr/></p>
13130 <p>This field is also mandatory for all devices advertising
13131 the MANUAL_<wbr/>SENSOR capability.<wbr/></p>
13132             </td>
13133           </tr>
13134
13135           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13136            <!-- end of entry -->
13137         
13138                 
13139           <tr class="entry" id="static_android.lens.info.shadingMapSize">
13140             <td class="entry_name
13141              " rowspan="3">
13142               android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size
13143             </td>
13144             <td class="entry_type">
13145                 <span class="entry_type_name">int32</span>
13146                 <span class="entry_type_container">x</span>
13147
13148                 <span class="entry_type_array">
13149                   2
13150                 </span>
13151               <span class="entry_type_visibility"> [ndk_public as size]</span>
13152
13153
13154               <span class="entry_type_hwlevel">[full] </span>
13155
13156
13157                 <div class="entry_type_notes">width and height (N,<wbr/> M) of lens shading map provided by the camera device.<wbr/></div>
13158
13159
13160             </td> <!-- entry_type -->
13161
13162             <td class="entry_description">
13163               <p>Dimensions of lens shading map.<wbr/></p>
13164             </td>
13165
13166             <td class="entry_units">
13167             </td>
13168
13169             <td class="entry_range">
13170               <p>Both values &gt;= 1</p>
13171             </td>
13172
13173             <td class="entry_hal_version">
13174               <p>3.<wbr/>2</p>
13175             </td>
13176
13177             <td class="entry_tags">
13178               <ul class="entry_tags">
13179                   <li><a href="#tag_V1">V1</a></li>
13180               </ul>
13181             </td>
13182
13183           </tr>
13184           <tr class="entries_header">
13185             <th class="th_details" colspan="6">Details</th>
13186           </tr>
13187           <tr class="entry_cont">
13188             <td class="entry_details" colspan="6">
13189               <p>The map should be on the order of 30-40 rows and columns,<wbr/> and
13190 must be smaller than 64x64.<wbr/></p>
13191             </td>
13192           </tr>
13193
13194
13195           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13196            <!-- end of entry -->
13197         
13198                 
13199           <tr class="entry" id="static_android.lens.info.focusDistanceCalibration">
13200             <td class="entry_name
13201              " rowspan="5">
13202               android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration
13203             </td>
13204             <td class="entry_type">
13205                 <span class="entry_type_name entry_type_name_enum">byte</span>
13206
13207               <span class="entry_type_visibility"> [public]</span>
13208
13209
13210               <span class="entry_type_hwlevel">[limited] </span>
13211
13212
13213
13214                 <ul class="entry_type_enum">
13215                   <li>
13216                     <span class="entry_type_enum_name">UNCALIBRATED (v3.2)</span>
13217                     <span class="entry_type_enum_notes"><p>The lens focus distance is not accurate,<wbr/> and the units used for
13218 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> do not correspond to any physical units.<wbr/></p>
13219 <p>Setting the lens to the same focus distance on separate occasions may
13220 result in a different real focus distance,<wbr/> depending on factors such
13221 as the orientation of the device,<wbr/> the age of the focusing mechanism,<wbr/>
13222 and the device temperature.<wbr/> The focus distance value will still be
13223 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
13224 represents the farthest focus.<wbr/></p></span>
13225                   </li>
13226                   <li>
13227                     <span class="entry_type_enum_name">APPROXIMATE (v3.2)</span>
13228                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters.<wbr/></p>
13229 <p>However,<wbr/> setting the lens to the same focus distance
13230 on separate occasions may result in a different real
13231 focus distance,<wbr/> depending on factors such as the
13232 orientation of the device,<wbr/> the age of the focusing
13233 mechanism,<wbr/> and the device temperature.<wbr/></p></span>
13234                   </li>
13235                   <li>
13236                     <span class="entry_type_enum_name">CALIBRATED (v3.2)</span>
13237                     <span class="entry_type_enum_notes"><p>The lens focus distance is measured in diopters,<wbr/> and
13238 is calibrated.<wbr/></p>
13239 <p>The lens mechanism is calibrated so that setting the
13240 same focus distance is repeatable on multiple
13241 occasions with good accuracy,<wbr/> and the focus distance
13242 corresponds to the real physical distance to the plane
13243 of best focus.<wbr/></p></span>
13244                   </li>
13245                 </ul>
13246
13247             </td> <!-- entry_type -->
13248
13249             <td class="entry_description">
13250               <p>The lens focus distance calibration quality.<wbr/></p>
13251             </td>
13252
13253             <td class="entry_units">
13254             </td>
13255
13256             <td class="entry_range">
13257             </td>
13258
13259             <td class="entry_hal_version">
13260               <p>3.<wbr/>2</p>
13261             </td>
13262
13263             <td class="entry_tags">
13264               <ul class="entry_tags">
13265                   <li><a href="#tag_V1">V1</a></li>
13266               </ul>
13267             </td>
13268
13269           </tr>
13270           <tr class="entries_header">
13271             <th class="th_details" colspan="6">Details</th>
13272           </tr>
13273           <tr class="entry_cont">
13274             <td class="entry_details" colspan="6">
13275               <p>The lens focus distance calibration quality determines the reliability of
13276 focus related metadata entries,<wbr/> i.<wbr/>e.<wbr/> <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a>,<wbr/>
13277 <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
13278 <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a>.<wbr/></p>
13279 <p>APPROXIMATE and CALIBRATED devices report the focus metadata in
13280 units of diopters (1/<wbr/>meter),<wbr/> so <code>0.<wbr/>0f</code> represents focusing at infinity,<wbr/>
13281 and increasing positive numbers represent focusing closer and closer
13282 to the camera device.<wbr/> The focus distance control also uses diopters
13283 on these devices.<wbr/></p>
13284 <p>UNCALIBRATED devices do not use units that are directly comparable
13285 to any real physical measurement,<wbr/> but <code>0.<wbr/>0f</code> still represents farthest
13286 focus,<wbr/> and <a href="#static_android.lens.info.minimumFocusDistance">android.<wbr/>lens.<wbr/>info.<wbr/>minimum<wbr/>Focus<wbr/>Distance</a> represents the
13287 nearest focus the device can achieve.<wbr/></p>
13288             </td>
13289           </tr>
13290
13291           <tr class="entries_header">
13292             <th class="th_details" colspan="6">HAL Implementation Details</th>
13293           </tr>
13294           <tr class="entry_cont">
13295             <td class="entry_details" colspan="6">
13296               <p>For devices advertise APPROXIMATE quality or higher,<wbr/> diopters 0 (infinity
13297 focus) must work.<wbr/> When autofocus is disabled (<a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a> == OFF)
13298 and the lens focus distance is set to 0 diopters
13299 (<a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> == 0),<wbr/> the lens will move to focus at infinity
13300 and is stably focused at infinity even if the device tilts.<wbr/> It may take the
13301 lens some time to move; during the move the lens state should be MOVING and
13302 the output diopter value should be changing toward 0.<wbr/></p>
13303             </td>
13304           </tr>
13305
13306           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13307            <!-- end of entry -->
13308         
13309         
13310         
13311
13312                 
13313           <tr class="entry" id="static_android.lens.facing">
13314             <td class="entry_name
13315              " rowspan="1">
13316               android.<wbr/>lens.<wbr/>facing
13317             </td>
13318             <td class="entry_type">
13319                 <span class="entry_type_name entry_type_name_enum">byte</span>
13320
13321               <span class="entry_type_visibility"> [public]</span>
13322
13323
13324               <span class="entry_type_hwlevel">[legacy] </span>
13325
13326
13327
13328                 <ul class="entry_type_enum">
13329                   <li>
13330                     <span class="entry_type_enum_name">FRONT (v3.2)</span>
13331                     <span class="entry_type_enum_notes"><p>The camera device faces the same direction as the device's screen.<wbr/></p></span>
13332                   </li>
13333                   <li>
13334                     <span class="entry_type_enum_name">BACK (v3.2)</span>
13335                     <span class="entry_type_enum_notes"><p>The camera device faces the opposite direction as the device's screen.<wbr/></p></span>
13336                   </li>
13337                   <li>
13338                     <span class="entry_type_enum_name">EXTERNAL (v3.2)</span>
13339                     <span class="entry_type_enum_notes"><p>The camera device is an external camera,<wbr/> and has no fixed facing relative to the
13340 device's screen.<wbr/></p></span>
13341                   </li>
13342                 </ul>
13343
13344             </td> <!-- entry_type -->
13345
13346             <td class="entry_description">
13347               <p>Direction the camera faces relative to
13348 device screen.<wbr/></p>
13349             </td>
13350
13351             <td class="entry_units">
13352             </td>
13353
13354             <td class="entry_range">
13355             </td>
13356
13357             <td class="entry_hal_version">
13358               <p>3.<wbr/>2</p>
13359             </td>
13360
13361             <td class="entry_tags">
13362             </td>
13363
13364           </tr>
13365
13366
13367           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13368            <!-- end of entry -->
13369         
13370                 
13371           <tr class="entry" id="static_android.lens.poseRotation">
13372             <td class="entry_name
13373              " rowspan="3">
13374               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
13375             </td>
13376             <td class="entry_type">
13377                 <span class="entry_type_name">float</span>
13378                 <span class="entry_type_container">x</span>
13379
13380                 <span class="entry_type_array">
13381                   4
13382                 </span>
13383               <span class="entry_type_visibility"> [public]</span>
13384
13385
13386
13387
13388
13389
13390             </td> <!-- entry_type -->
13391
13392             <td class="entry_description">
13393               <p>The orientation of the camera relative to the sensor
13394 coordinate system.<wbr/></p>
13395             </td>
13396
13397             <td class="entry_units">
13398               
13399             Quaternion coefficients
13400           
13401             </td>
13402
13403             <td class="entry_range">
13404             </td>
13405
13406             <td class="entry_hal_version">
13407               <p>3.<wbr/>2</p>
13408             </td>
13409
13410             <td class="entry_tags">
13411               <ul class="entry_tags">
13412                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13413               </ul>
13414             </td>
13415
13416           </tr>
13417           <tr class="entries_header">
13418             <th class="th_details" colspan="6">Details</th>
13419           </tr>
13420           <tr class="entry_cont">
13421             <td class="entry_details" colspan="6">
13422               <p>The four coefficients that describe the quaternion
13423 rotation from the Android sensor coordinate system to a
13424 camera-aligned coordinate system where the X-axis is
13425 aligned with the long side of the image sensor,<wbr/> the Y-axis
13426 is aligned with the short side of the image sensor,<wbr/> and
13427 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
13428 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
13429 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
13430 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
13431 <pre><code> theta = 2 * acos(w)
13432 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
13433 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
13434 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
13435 </code></pre>
13436 <p>To create a 3x3 rotation matrix that applies the rotation
13437 defined by this quaternion,<wbr/> the following matrix can be
13438 used:</p>
13439 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
13440            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
13441            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
13442 </code></pre>
13443 <p>This matrix can then be used to apply the rotation to a
13444  column vector point with</p>
13445 <p><code>p' = Rp</code></p>
13446 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
13447  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
13448             </td>
13449           </tr>
13450
13451
13452           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13453            <!-- end of entry -->
13454         
13455                 
13456           <tr class="entry" id="static_android.lens.poseTranslation">
13457             <td class="entry_name
13458              " rowspan="3">
13459               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
13460             </td>
13461             <td class="entry_type">
13462                 <span class="entry_type_name">float</span>
13463                 <span class="entry_type_container">x</span>
13464
13465                 <span class="entry_type_array">
13466                   3
13467                 </span>
13468               <span class="entry_type_visibility"> [public]</span>
13469
13470
13471
13472
13473
13474
13475             </td> <!-- entry_type -->
13476
13477             <td class="entry_description">
13478               <p>Position of the camera optical center.<wbr/></p>
13479             </td>
13480
13481             <td class="entry_units">
13482               Meters
13483             </td>
13484
13485             <td class="entry_range">
13486             </td>
13487
13488             <td class="entry_hal_version">
13489               <p>3.<wbr/>2</p>
13490             </td>
13491
13492             <td class="entry_tags">
13493               <ul class="entry_tags">
13494                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13495               </ul>
13496             </td>
13497
13498           </tr>
13499           <tr class="entries_header">
13500             <th class="th_details" colspan="6">Details</th>
13501           </tr>
13502           <tr class="entry_cont">
13503             <td class="entry_details" colspan="6">
13504               <p>The position of the camera device's lens optical center,<wbr/>
13505 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
13506 <p>Prior to Android P,<wbr/> or when <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is PRIMARY_<wbr/>CAMERA,<wbr/> this position
13507 is relative to the optical center of the largest camera device facing in the same
13508 direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
13509 coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
13510 coordinate system,<wbr/> but not the origin.<wbr/></p>
13511 <p>If this device is the largest or only camera device with a given facing,<wbr/> then this
13512 position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
13513 from the main sensor along the +X axis (to the right from the user's perspective) will
13514 report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
13515 <p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
13516 the source camera <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then the source
13517 camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
13518 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the source camera,<wbr/> the translation of the source camera
13519 relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
13520 camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
13521 camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
13522 coordinates.<wbr/></p>
13523 <p>To compare this against a real image from the destination camera,<wbr/> the destination camera
13524 image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
13525 <p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is GYROSCOPE,<wbr/> then this position is relative to
13526 the center of the primary gyroscope on the device.<wbr/></p>
13527             </td>
13528           </tr>
13529
13530
13531           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13532            <!-- end of entry -->
13533         
13534                 
13535           <tr class="entry" id="static_android.lens.intrinsicCalibration">
13536             <td class="entry_name
13537              " rowspan="3">
13538               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
13539             </td>
13540             <td class="entry_type">
13541                 <span class="entry_type_name">float</span>
13542                 <span class="entry_type_container">x</span>
13543
13544                 <span class="entry_type_array">
13545                   5
13546                 </span>
13547               <span class="entry_type_visibility"> [public]</span>
13548
13549
13550
13551
13552
13553
13554             </td> <!-- entry_type -->
13555
13556             <td class="entry_description">
13557               <p>The parameters for this camera device's intrinsic
13558 calibration.<wbr/></p>
13559             </td>
13560
13561             <td class="entry_units">
13562               
13563             Pixels in the
13564             android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
13565             coordinate system.<wbr/>
13566           
13567             </td>
13568
13569             <td class="entry_range">
13570             </td>
13571
13572             <td class="entry_hal_version">
13573               <p>3.<wbr/>2</p>
13574             </td>
13575
13576             <td class="entry_tags">
13577               <ul class="entry_tags">
13578                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13579               </ul>
13580             </td>
13581
13582           </tr>
13583           <tr class="entries_header">
13584             <th class="th_details" colspan="6">Details</th>
13585           </tr>
13586           <tr class="entry_cont">
13587             <td class="entry_details" colspan="6">
13588               <p>The five calibration parameters that describe the
13589 transform from camera-centric 3D coordinates to sensor
13590 pixel coordinates:</p>
13591 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
13592 </code></pre>
13593 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
13594 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
13595 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
13596 being aligned with the lens plane.<wbr/></p>
13597 <p>These are typically used within a transformation matrix K:</p>
13598 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
13599        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
13600        0    0,<wbr/>   1 ]
13601 </code></pre>
13602 <p>which can then be combined with the camera pose rotation
13603 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
13604 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
13605 complete transform from world coordinates to pixel
13606 coordinates:</p>
13607 <pre><code>P = [ K 0   * [ R t
13608      0 1 ]     0 1 ]
13609 </code></pre>
13610 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
13611 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
13612 coordinate system,<wbr/> and with the mapping including the
13613 homogeneous division by z:</p>
13614 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
13615 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
13616 </code></pre>
13617 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
13618 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
13619 (depth) in pixel coordinates.<wbr/></p>
13620 <p>Note that the coordinate system for this transform is the
13621 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> system,<wbr/>
13622 where <code>(0,<wbr/>0)</code> is the top-left of the
13623 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
13624 intrinsic calibration transforms have been applied to a
13625 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
13626 transform needs to be applied,<wbr/> and the result adjusted to
13627 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
13628 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
13629 activeArraySize rectangle),<wbr/> to determine the final pixel
13630 coordinate of the world point for processed (non-RAW)
13631 output buffers.<wbr/></p>
13632             </td>
13633           </tr>
13634
13635
13636           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13637            <!-- end of entry -->
13638         
13639                 
13640           <tr class="entry" id="static_android.lens.radialDistortion">
13641             <td class="entry_name
13642              " rowspan="3">
13643               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
13644             </td>
13645             <td class="entry_type">
13646                 <span class="entry_type_name">float</span>
13647                 <span class="entry_type_container">x</span>
13648
13649                 <span class="entry_type_array">
13650                   6
13651                 </span>
13652               <span class="entry_type_visibility"> [public]</span>
13653
13654
13655
13656
13657
13658
13659             </td> <!-- entry_type -->
13660
13661             <td class="entry_description">
13662               <p>The correction coefficients to correct for this camera device's
13663 radial and tangential lens distortion.<wbr/></p>
13664             </td>
13665
13666             <td class="entry_units">
13667               
13668             Unitless coefficients.<wbr/>
13669           
13670             </td>
13671
13672             <td class="entry_range">
13673             </td>
13674
13675             <td class="entry_hal_version">
13676               <p>3.<wbr/>2</p>
13677             </td>
13678
13679             <td class="entry_tags">
13680               <ul class="entry_tags">
13681                   <li><a href="#tag_DEPTH">DEPTH</a></li>
13682               </ul>
13683             </td>
13684
13685           </tr>
13686           <tr class="entries_header">
13687             <th class="th_details" colspan="6">Details</th>
13688           </tr>
13689           <tr class="entry_cont">
13690             <td class="entry_details" colspan="6">
13691               <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
13692 kappa_<wbr/>3]</code> and two tangential distortion coefficients
13693 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
13694 lens's geometric distortion with the mapping equations:</p>
13695 <pre><code> x_<wbr/>c = x_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13696        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
13697  y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
13698        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
13699 </code></pre>
13700 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
13701 input image that correspond to the pixel values in the
13702 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
13703 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
13704 </code></pre>
13705 <p>The pixel coordinates are defined in a normalized
13706 coordinate system related to the
13707 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
13708 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> have <code>(0,<wbr/>0)</code> at the
13709 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
13710 of both x and y coordinates are normalized to be 1 at the
13711 edge further from the optical center,<wbr/> so the range
13712 for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
13713 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
13714 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
13715 is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
13716 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
13717             </td>
13718           </tr>
13719
13720
13721           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13722            <!-- end of entry -->
13723         
13724                 
13725           <tr class="entry" id="static_android.lens.poseReference">
13726             <td class="entry_name
13727              " rowspan="3">
13728               android.<wbr/>lens.<wbr/>pose<wbr/>Reference
13729             </td>
13730             <td class="entry_type">
13731                 <span class="entry_type_name entry_type_name_enum">byte</span>
13732
13733               <span class="entry_type_visibility"> [public]</span>
13734
13735
13736
13737
13738
13739                 <ul class="entry_type_enum">
13740                   <li>
13741                     <span class="entry_type_enum_name">PRIMARY_CAMERA (v3.3)</span>
13742                     <span class="entry_type_enum_notes"><p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> is relative to the optical center of
13743 the largest camera device facing the same direction as this camera.<wbr/></p>
13744 <p>This default value for API levels before Android P.<wbr/></p></span>
13745                   </li>
13746                   <li>
13747                     <span class="entry_type_enum_name">GYROSCOPE (v3.3)</span>
13748                     <span class="entry_type_enum_notes"><p>The value of <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a> is relative to the position of the
13749 primary gyroscope of this Android device.<wbr/></p>
13750 <p>This is the value reported by all devices that support the MOTION_<wbr/>TRACKING capability.<wbr/></p></span>
13751                   </li>
13752                 </ul>
13753
13754             </td> <!-- entry_type -->
13755
13756             <td class="entry_description">
13757               <p>The origin for <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>.<wbr/></p>
13758             </td>
13759
13760             <td class="entry_units">
13761             </td>
13762
13763             <td class="entry_range">
13764             </td>
13765
13766             <td class="entry_hal_version">
13767               <p>3.<wbr/>3</p>
13768             </td>
13769
13770             <td class="entry_tags">
13771             </td>
13772
13773           </tr>
13774           <tr class="entries_header">
13775             <th class="th_details" colspan="6">Details</th>
13776           </tr>
13777           <tr class="entry_cont">
13778             <td class="entry_details" colspan="6">
13779               <p>Different calibration methods and use cases can produce better or worse results
13780 depending on the selected coordinate origin.<wbr/></p>
13781 <p>For devices designed to support the MOTION_<wbr/>TRACKING capability,<wbr/> the GYROSCOPE origin
13782 makes device calibration and later usage by applications combining camera and gyroscope
13783 information together simpler.<wbr/></p>
13784             </td>
13785           </tr>
13786
13787
13788           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13789            <!-- end of entry -->
13790         
13791         
13792
13793       <!-- end of kind -->
13794       </tbody>
13795       <tr><td colspan="7" class="kind">dynamic</td></tr>
13796
13797       <thead class="entries_header">
13798         <tr>
13799           <th class="th_name">Property Name</th>
13800           <th class="th_type">Type</th>
13801           <th class="th_description">Description</th>
13802           <th class="th_units">Units</th>
13803           <th class="th_range">Range</th>
13804           <th class="th_hal_version">Initial HIDL HAL version</th>
13805           <th class="th_tags">Tags</th>
13806         </tr>
13807       </thead>
13808
13809       <tbody>
13810
13811         
13812
13813         
13814
13815         
13816
13817         
13818
13819                 
13820           <tr class="entry" id="dynamic_android.lens.aperture">
13821             <td class="entry_name
13822              " rowspan="3">
13823               android.<wbr/>lens.<wbr/>aperture
13824             </td>
13825             <td class="entry_type">
13826                 <span class="entry_type_name">float</span>
13827
13828               <span class="entry_type_visibility"> [public]</span>
13829
13830
13831               <span class="entry_type_hwlevel">[full] </span>
13832
13833
13834
13835
13836             </td> <!-- entry_type -->
13837
13838             <td class="entry_description">
13839               <p>The desired lens aperture size,<wbr/> as a ratio of lens focal length to the
13840 effective aperture diameter.<wbr/></p>
13841             </td>
13842
13843             <td class="entry_units">
13844               The f-number (f/<wbr/>N)
13845             </td>
13846
13847             <td class="entry_range">
13848               <p><a href="#static_android.lens.info.availableApertures">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Apertures</a></p>
13849             </td>
13850
13851             <td class="entry_hal_version">
13852               <p>3.<wbr/>2</p>
13853             </td>
13854
13855             <td class="entry_tags">
13856               <ul class="entry_tags">
13857                   <li><a href="#tag_V1">V1</a></li>
13858               </ul>
13859             </td>
13860
13861           </tr>
13862           <tr class="entries_header">
13863             <th class="th_details" colspan="6">Details</th>
13864           </tr>
13865           <tr class="entry_cont">
13866             <td class="entry_details" colspan="6">
13867               <p>Setting this value is only supported on the camera devices that have a variable
13868 aperture lens.<wbr/></p>
13869 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is OFF,<wbr/>
13870 this can be set along with <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>,<wbr/>
13871 <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>
13872 to achieve manual exposure control.<wbr/></p>
13873 <p>The requested aperture value may take several frames to reach the
13874 requested value; the camera device will report the current (intermediate)
13875 aperture size in capture result metadata while the aperture is changing.<wbr/>
13876 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>
13877 <p>When this is supported and <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a> is one of
13878 the ON modes,<wbr/> this will be overridden by the camera device
13879 auto-exposure algorithm,<wbr/> the overridden values are then provided
13880 back to the user in the corresponding result.<wbr/></p>
13881             </td>
13882           </tr>
13883
13884
13885           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13886            <!-- end of entry -->
13887         
13888                 
13889           <tr class="entry" id="dynamic_android.lens.filterDensity">
13890             <td class="entry_name
13891              " rowspan="3">
13892               android.<wbr/>lens.<wbr/>filter<wbr/>Density
13893             </td>
13894             <td class="entry_type">
13895                 <span class="entry_type_name">float</span>
13896
13897               <span class="entry_type_visibility"> [public]</span>
13898
13899
13900               <span class="entry_type_hwlevel">[full] </span>
13901
13902
13903
13904
13905             </td> <!-- entry_type -->
13906
13907             <td class="entry_description">
13908               <p>The desired setting for the lens neutral density filter(s).<wbr/></p>
13909             </td>
13910
13911             <td class="entry_units">
13912               Exposure Value (EV)
13913             </td>
13914
13915             <td class="entry_range">
13916               <p><a href="#static_android.lens.info.availableFilterDensities">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Filter<wbr/>Densities</a></p>
13917             </td>
13918
13919             <td class="entry_hal_version">
13920               <p>3.<wbr/>2</p>
13921             </td>
13922
13923             <td class="entry_tags">
13924               <ul class="entry_tags">
13925                   <li><a href="#tag_V1">V1</a></li>
13926               </ul>
13927             </td>
13928
13929           </tr>
13930           <tr class="entries_header">
13931             <th class="th_details" colspan="6">Details</th>
13932           </tr>
13933           <tr class="entry_cont">
13934             <td class="entry_details" colspan="6">
13935               <p>This control will not be supported on most camera devices.<wbr/></p>
13936 <p>Lens filters are typically used to lower the amount of light the
13937 sensor is exposed to (measured in steps of EV).<wbr/> As used here,<wbr/> an EV
13938 step is the standard logarithmic representation,<wbr/> which are
13939 non-negative,<wbr/> and inversely proportional to the amount of light
13940 hitting the sensor.<wbr/>  For example,<wbr/> setting this to 0 would result
13941 in no reduction of the incoming light,<wbr/> and setting this to 2 would
13942 mean that the filter is set to reduce incoming light by two stops
13943 (allowing 1/<wbr/>4 of the prior amount of light to the sensor).<wbr/></p>
13944 <p>It may take several frames before the lens filter density changes
13945 to the requested value.<wbr/> While the filter density is still changing,<wbr/>
13946 <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will be set to MOVING.<wbr/></p>
13947             </td>
13948           </tr>
13949
13950
13951           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
13952            <!-- end of entry -->
13953         
13954                 
13955           <tr class="entry" id="dynamic_android.lens.focalLength">
13956             <td class="entry_name
13957              " rowspan="3">
13958               android.<wbr/>lens.<wbr/>focal<wbr/>Length
13959             </td>
13960             <td class="entry_type">
13961                 <span class="entry_type_name">float</span>
13962
13963               <span class="entry_type_visibility"> [public]</span>
13964
13965
13966               <span class="entry_type_hwlevel">[legacy] </span>
13967
13968
13969
13970
13971             </td> <!-- entry_type -->
13972
13973             <td class="entry_description">
13974               <p>The desired lens focal length; used for optical zoom.<wbr/></p>
13975             </td>
13976
13977             <td class="entry_units">
13978               Millimeters
13979             </td>
13980
13981             <td class="entry_range">
13982               <p><a href="#static_android.lens.info.availableFocalLengths">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Focal<wbr/>Lengths</a></p>
13983             </td>
13984
13985             <td class="entry_hal_version">
13986               <p>3.<wbr/>2</p>
13987             </td>
13988
13989             <td class="entry_tags">
13990               <ul class="entry_tags">
13991                   <li><a href="#tag_BC">BC</a></li>
13992               </ul>
13993             </td>
13994
13995           </tr>
13996           <tr class="entries_header">
13997             <th class="th_details" colspan="6">Details</th>
13998           </tr>
13999           <tr class="entry_cont">
14000             <td class="entry_details" colspan="6">
14001               <p>This setting controls the physical focal length of the camera
14002 device's lens.<wbr/> Changing the focal length changes the field of
14003 view of the camera device,<wbr/> and is usually used for optical zoom.<wbr/></p>
14004 <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
14005 setting won't be applied instantaneously,<wbr/> and it may take several
14006 frames before the lens can change to the requested focal length.<wbr/>
14007 While the focal length is still changing,<wbr/> <a href="#dynamic_android.lens.state">android.<wbr/>lens.<wbr/>state</a> will
14008 be set to MOVING.<wbr/></p>
14009 <p>Optical zoom will not be supported on most devices.<wbr/></p>
14010             </td>
14011           </tr>
14012
14013
14014           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14015            <!-- end of entry -->
14016         
14017                 
14018           <tr class="entry" id="dynamic_android.lens.focusDistance">
14019             <td class="entry_name
14020              " rowspan="3">
14021               android.<wbr/>lens.<wbr/>focus<wbr/>Distance
14022             </td>
14023             <td class="entry_type">
14024                 <span class="entry_type_name">float</span>
14025
14026               <span class="entry_type_visibility"> [public]</span>
14027
14028
14029               <span class="entry_type_hwlevel">[full] </span>
14030
14031
14032
14033
14034             </td> <!-- entry_type -->
14035
14036             <td class="entry_description">
14037               <p>Desired distance to plane of sharpest focus,<wbr/>
14038 measured from frontmost surface of the lens.<wbr/></p>
14039             </td>
14040
14041             <td class="entry_units">
14042               See android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details
14043             </td>
14044
14045             <td class="entry_range">
14046               <p>&gt;= 0</p>
14047             </td>
14048
14049             <td class="entry_hal_version">
14050               <p>3.<wbr/>2</p>
14051             </td>
14052
14053             <td class="entry_tags">
14054               <ul class="entry_tags">
14055                   <li><a href="#tag_BC">BC</a></li>
14056               </ul>
14057             </td>
14058
14059           </tr>
14060           <tr class="entries_header">
14061             <th class="th_details" colspan="6">Details</th>
14062           </tr>
14063           <tr class="entry_cont">
14064             <td class="entry_details" colspan="6">
14065               <p>Should be zero for fixed-focus cameras</p>
14066             </td>
14067           </tr>
14068
14069
14070           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14071            <!-- end of entry -->
14072         
14073                 
14074           <tr class="entry" id="dynamic_android.lens.focusRange">
14075             <td class="entry_name
14076              " rowspan="3">
14077               android.<wbr/>lens.<wbr/>focus<wbr/>Range
14078             </td>
14079             <td class="entry_type">
14080                 <span class="entry_type_name">float</span>
14081                 <span class="entry_type_container">x</span>
14082
14083                 <span class="entry_type_array">
14084                   2
14085                 </span>
14086               <span class="entry_type_visibility"> [public as pairFloatFloat]</span>
14087
14088
14089               <span class="entry_type_hwlevel">[limited] </span>
14090
14091
14092                 <div class="entry_type_notes">Range of scene distances that are in focus</div>
14093
14094
14095             </td> <!-- entry_type -->
14096
14097             <td class="entry_description">
14098               <p>The range of scene distances that are in
14099 sharp focus (depth of field).<wbr/></p>
14100             </td>
14101
14102             <td class="entry_units">
14103               A pair of focus distances in diopters: (near,<wbr/>
14104           far); see android.<wbr/>lens.<wbr/>info.<wbr/>focus<wbr/>Distance<wbr/>Calibration for details.<wbr/>
14105             </td>
14106
14107             <td class="entry_range">
14108               <p>&gt;=0</p>
14109             </td>
14110
14111             <td class="entry_hal_version">
14112               <p>3.<wbr/>2</p>
14113             </td>
14114
14115             <td class="entry_tags">
14116               <ul class="entry_tags">
14117                   <li><a href="#tag_BC">BC</a></li>
14118               </ul>
14119             </td>
14120
14121           </tr>
14122           <tr class="entries_header">
14123             <th class="th_details" colspan="6">Details</th>
14124           </tr>
14125           <tr class="entry_cont">
14126             <td class="entry_details" colspan="6">
14127               <p>If variable focus not supported,<wbr/> can still report
14128 fixed depth of field range</p>
14129             </td>
14130           </tr>
14131
14132
14133           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14134            <!-- end of entry -->
14135         
14136                 
14137           <tr class="entry" id="dynamic_android.lens.opticalStabilizationMode">
14138             <td class="entry_name
14139              " rowspan="3">
14140               android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode
14141             </td>
14142             <td class="entry_type">
14143                 <span class="entry_type_name entry_type_name_enum">byte</span>
14144
14145               <span class="entry_type_visibility"> [public]</span>
14146
14147
14148               <span class="entry_type_hwlevel">[limited] </span>
14149
14150
14151
14152                 <ul class="entry_type_enum">
14153                   <li>
14154                     <span class="entry_type_enum_name">OFF (v3.2)</span>
14155                     <span class="entry_type_enum_notes"><p>Optical stabilization is unavailable.<wbr/></p></span>
14156                   </li>
14157                   <li>
14158                     <span class="entry_type_enum_name">ON (v3.2)</span>
14159                     <span class="entry_type_enum_optional">[optional]</span>
14160                     <span class="entry_type_enum_notes"><p>Optical stabilization is enabled.<wbr/></p></span>
14161                   </li>
14162                 </ul>
14163
14164             </td> <!-- entry_type -->
14165
14166             <td class="entry_description">
14167               <p>Sets whether the camera device uses optical image stabilization (OIS)
14168 when capturing images.<wbr/></p>
14169             </td>
14170
14171             <td class="entry_units">
14172             </td>
14173
14174             <td class="entry_range">
14175               <p><a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a></p>
14176             </td>
14177
14178             <td class="entry_hal_version">
14179               <p>3.<wbr/>2</p>
14180             </td>
14181
14182             <td class="entry_tags">
14183               <ul class="entry_tags">
14184                   <li><a href="#tag_V1">V1</a></li>
14185               </ul>
14186             </td>
14187
14188           </tr>
14189           <tr class="entries_header">
14190             <th class="th_details" colspan="6">Details</th>
14191           </tr>
14192           <tr class="entry_cont">
14193             <td class="entry_details" colspan="6">
14194               <p>OIS is used to compensate for motion blur due to small
14195 movements of the camera during capture.<wbr/> Unlike digital image
14196 stabilization (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> OIS
14197 makes use of mechanical elements to stabilize the camera
14198 sensor,<wbr/> and thus allows for longer exposure times before
14199 camera shake becomes apparent.<wbr/></p>
14200 <p>Switching between different optical stabilization modes may take several
14201 frames to initialize,<wbr/> the camera device will report the current mode in
14202 capture result metadata.<wbr/> For example,<wbr/> When "ON" mode is requested,<wbr/> the
14203 optical stabilization modes in the first several capture results may still
14204 be "OFF",<wbr/> and it will become "ON" when the initialization is done.<wbr/></p>
14205 <p>If a camera device supports both OIS and digital image stabilization
14206 (<a href="#controls_android.control.videoStabilizationMode">android.<wbr/>control.<wbr/>video<wbr/>Stabilization<wbr/>Mode</a>),<wbr/> turning both modes on may produce undesirable
14207 interaction,<wbr/> so it is recommended not to enable both at the same time.<wbr/></p>
14208 <p>Not all devices will support OIS; see
14209 <a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a> for
14210 available controls.<wbr/></p>
14211             </td>
14212           </tr>
14213
14214
14215           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14216            <!-- end of entry -->
14217         
14218                 
14219           <tr class="entry" id="dynamic_android.lens.state">
14220             <td class="entry_name
14221              " rowspan="3">
14222               android.<wbr/>lens.<wbr/>state
14223             </td>
14224             <td class="entry_type">
14225                 <span class="entry_type_name entry_type_name_enum">byte</span>
14226
14227               <span class="entry_type_visibility"> [public]</span>
14228
14229
14230               <span class="entry_type_hwlevel">[limited] </span>
14231
14232
14233
14234                 <ul class="entry_type_enum">
14235                   <li>
14236                     <span class="entry_type_enum_name">STATIONARY (v3.2)</span>
14237                     <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/>
14238 <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>
14239                   </li>
14240                   <li>
14241                     <span class="entry_type_enum_name">MOVING (v3.2)</span>
14242                     <span class="entry_type_enum_notes"><p>One or several of the lens parameters
14243 (<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/>
14244 <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
14245 currently changing.<wbr/></p></span>
14246                   </li>
14247                 </ul>
14248
14249             </td> <!-- entry_type -->
14250
14251             <td class="entry_description">
14252               <p>Current lens status.<wbr/></p>
14253             </td>
14254
14255             <td class="entry_units">
14256             </td>
14257
14258             <td class="entry_range">
14259             </td>
14260
14261             <td class="entry_hal_version">
14262               <p>3.<wbr/>2</p>
14263             </td>
14264
14265             <td class="entry_tags">
14266               <ul class="entry_tags">
14267                   <li><a href="#tag_V1">V1</a></li>
14268               </ul>
14269             </td>
14270
14271           </tr>
14272           <tr class="entries_header">
14273             <th class="th_details" colspan="6">Details</th>
14274           </tr>
14275           <tr class="entry_cont">
14276             <td class="entry_details" colspan="6">
14277               <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/>
14278 <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/>
14279 they may take several frames to reach the requested values.<wbr/> This state indicates
14280 the current status of the lens parameters.<wbr/></p>
14281 <p>When the state is STATIONARY,<wbr/> the lens parameters are not changing.<wbr/> This could be
14282 either because the parameters are all fixed,<wbr/> or because the lens has had enough
14283 time to reach the most recently-requested values.<wbr/>
14284 If all these lens parameters are not changable for a camera device,<wbr/> as listed below:</p>
14285 <ul>
14286 <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
14287 <a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a> parameter will always be 0.<wbr/></li>
14288 <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/>
14289 which means the optical zoom is not supported.<wbr/></li>
14290 <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>
14291 <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>
14292 </ul>
14293 <p>Then this state will always be STATIONARY.<wbr/></p>
14294 <p>When the state is MOVING,<wbr/> it indicates that at least one of the lens parameters
14295 is changing.<wbr/></p>
14296             </td>
14297           </tr>
14298
14299
14300           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14301            <!-- end of entry -->
14302         
14303                 
14304           <tr class="entry" id="dynamic_android.lens.poseRotation">
14305             <td class="entry_name
14306              " rowspan="3">
14307               android.<wbr/>lens.<wbr/>pose<wbr/>Rotation
14308             </td>
14309             <td class="entry_type">
14310                 <span class="entry_type_name">float</span>
14311                 <span class="entry_type_container">x</span>
14312
14313                 <span class="entry_type_array">
14314                   4
14315                 </span>
14316               <span class="entry_type_visibility"> [public]</span>
14317
14318
14319
14320
14321
14322
14323             </td> <!-- entry_type -->
14324
14325             <td class="entry_description">
14326               <p>The orientation of the camera relative to the sensor
14327 coordinate system.<wbr/></p>
14328             </td>
14329
14330             <td class="entry_units">
14331               
14332             Quaternion coefficients
14333           
14334             </td>
14335
14336             <td class="entry_range">
14337             </td>
14338
14339             <td class="entry_hal_version">
14340               <p>3.<wbr/>2</p>
14341             </td>
14342
14343             <td class="entry_tags">
14344               <ul class="entry_tags">
14345                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14346               </ul>
14347             </td>
14348
14349           </tr>
14350           <tr class="entries_header">
14351             <th class="th_details" colspan="6">Details</th>
14352           </tr>
14353           <tr class="entry_cont">
14354             <td class="entry_details" colspan="6">
14355               <p>The four coefficients that describe the quaternion
14356 rotation from the Android sensor coordinate system to a
14357 camera-aligned coordinate system where the X-axis is
14358 aligned with the long side of the image sensor,<wbr/> the Y-axis
14359 is aligned with the short side of the image sensor,<wbr/> and
14360 the Z-axis is aligned with the optical axis of the sensor.<wbr/></p>
14361 <p>To convert from the quaternion coefficients <code>(x,<wbr/>y,<wbr/>z,<wbr/>w)</code>
14362 to the axis of rotation <code>(a_<wbr/>x,<wbr/> a_<wbr/>y,<wbr/> a_<wbr/>z)</code> and rotation
14363 amount <code>theta</code>,<wbr/> the following formulas can be used:</p>
14364 <pre><code> theta = 2 * acos(w)
14365 a_<wbr/>x = x /<wbr/> sin(theta/<wbr/>2)
14366 a_<wbr/>y = y /<wbr/> sin(theta/<wbr/>2)
14367 a_<wbr/>z = z /<wbr/> sin(theta/<wbr/>2)
14368 </code></pre>
14369 <p>To create a 3x3 rotation matrix that applies the rotation
14370 defined by this quaternion,<wbr/> the following matrix can be
14371 used:</p>
14372 <pre><code>R = [ 1 - 2y^2 - 2z^2,<wbr/>       2xy - 2zw,<wbr/>       2xz + 2yw,<wbr/>
14373            2xy + 2zw,<wbr/> 1 - 2x^2 - 2z^2,<wbr/>       2yz - 2xw,<wbr/>
14374            2xz - 2yw,<wbr/>       2yz + 2xw,<wbr/> 1 - 2x^2 - 2y^2 ]
14375 </code></pre>
14376 <p>This matrix can then be used to apply the rotation to a
14377  column vector point with</p>
14378 <p><code>p' = Rp</code></p>
14379 <p>where <code>p</code> is in the device sensor coordinate system,<wbr/> and
14380  <code>p'</code> is in the camera-oriented coordinate system.<wbr/></p>
14381             </td>
14382           </tr>
14383
14384
14385           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14386            <!-- end of entry -->
14387         
14388                 
14389           <tr class="entry" id="dynamic_android.lens.poseTranslation">
14390             <td class="entry_name
14391              " rowspan="3">
14392               android.<wbr/>lens.<wbr/>pose<wbr/>Translation
14393             </td>
14394             <td class="entry_type">
14395                 <span class="entry_type_name">float</span>
14396                 <span class="entry_type_container">x</span>
14397
14398                 <span class="entry_type_array">
14399                   3
14400                 </span>
14401               <span class="entry_type_visibility"> [public]</span>
14402
14403
14404
14405
14406
14407
14408             </td> <!-- entry_type -->
14409
14410             <td class="entry_description">
14411               <p>Position of the camera optical center.<wbr/></p>
14412             </td>
14413
14414             <td class="entry_units">
14415               Meters
14416             </td>
14417
14418             <td class="entry_range">
14419             </td>
14420
14421             <td class="entry_hal_version">
14422               <p>3.<wbr/>2</p>
14423             </td>
14424
14425             <td class="entry_tags">
14426               <ul class="entry_tags">
14427                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14428               </ul>
14429             </td>
14430
14431           </tr>
14432           <tr class="entries_header">
14433             <th class="th_details" colspan="6">Details</th>
14434           </tr>
14435           <tr class="entry_cont">
14436             <td class="entry_details" colspan="6">
14437               <p>The position of the camera device's lens optical center,<wbr/>
14438 as a three-dimensional vector <code>(x,<wbr/>y,<wbr/>z)</code>.<wbr/></p>
14439 <p>Prior to Android P,<wbr/> or when <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is PRIMARY_<wbr/>CAMERA,<wbr/> this position
14440 is relative to the optical center of the largest camera device facing in the same
14441 direction as this camera,<wbr/> in the <a href="https://developer.android.com/reference/android/hardware/SensorEvent.html">Android sensor
14442 coordinate axes</a>.<wbr/> Note that only the axis definitions are shared with the sensor
14443 coordinate system,<wbr/> but not the origin.<wbr/></p>
14444 <p>If this device is the largest or only camera device with a given facing,<wbr/> then this
14445 position will be <code>(0,<wbr/> 0,<wbr/> 0)</code>; a camera device with a lens optical center located 3 cm
14446 from the main sensor along the +X axis (to the right from the user's perspective) will
14447 report <code>(0.<wbr/>03,<wbr/> 0,<wbr/> 0)</code>.<wbr/></p>
14448 <p>To transform a pixel coordinates between two cameras facing the same direction,<wbr/> first
14449 the source camera <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a> must be corrected for.<wbr/>  Then the source
14450 camera <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> needs to be applied,<wbr/> followed by the
14451 <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the source camera,<wbr/> the translation of the source camera
14452 relative to the destination camera,<wbr/> the <a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> of the destination
14453 camera,<wbr/> and finally the inverse of <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> of the destination
14454 camera.<wbr/> This obtains a radial-distortion-free coordinate in the destination camera pixel
14455 coordinates.<wbr/></p>
14456 <p>To compare this against a real image from the destination camera,<wbr/> the destination camera
14457 image then needs to be corrected for radial distortion before comparison or sampling.<wbr/></p>
14458 <p>When <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> is GYROSCOPE,<wbr/> then this position is relative to
14459 the center of the primary gyroscope on the device.<wbr/></p>
14460             </td>
14461           </tr>
14462
14463
14464           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14465            <!-- end of entry -->
14466         
14467                 
14468           <tr class="entry" id="dynamic_android.lens.intrinsicCalibration">
14469             <td class="entry_name
14470              " rowspan="3">
14471               android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration
14472             </td>
14473             <td class="entry_type">
14474                 <span class="entry_type_name">float</span>
14475                 <span class="entry_type_container">x</span>
14476
14477                 <span class="entry_type_array">
14478                   5
14479                 </span>
14480               <span class="entry_type_visibility"> [public]</span>
14481
14482
14483
14484
14485
14486
14487             </td> <!-- entry_type -->
14488
14489             <td class="entry_description">
14490               <p>The parameters for this camera device's intrinsic
14491 calibration.<wbr/></p>
14492             </td>
14493
14494             <td class="entry_units">
14495               
14496             Pixels in the
14497             android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
14498             coordinate system.<wbr/>
14499           
14500             </td>
14501
14502             <td class="entry_range">
14503             </td>
14504
14505             <td class="entry_hal_version">
14506               <p>3.<wbr/>2</p>
14507             </td>
14508
14509             <td class="entry_tags">
14510               <ul class="entry_tags">
14511                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14512               </ul>
14513             </td>
14514
14515           </tr>
14516           <tr class="entries_header">
14517             <th class="th_details" colspan="6">Details</th>
14518           </tr>
14519           <tr class="entry_cont">
14520             <td class="entry_details" colspan="6">
14521               <p>The five calibration parameters that describe the
14522 transform from camera-centric 3D coordinates to sensor
14523 pixel coordinates:</p>
14524 <pre><code>[f_<wbr/>x,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>x,<wbr/> c_<wbr/>y,<wbr/> s]
14525 </code></pre>
14526 <p>Where <code>f_<wbr/>x</code> and <code>f_<wbr/>y</code> are the horizontal and vertical
14527 focal lengths,<wbr/> <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code> is the position of the optical
14528 axis,<wbr/> and <code>s</code> is a skew parameter for the sensor plane not
14529 being aligned with the lens plane.<wbr/></p>
14530 <p>These are typically used within a transformation matrix K:</p>
14531 <pre><code>K = [ f_<wbr/>x,<wbr/>   s,<wbr/> c_<wbr/>x,<wbr/>
14532        0,<wbr/> f_<wbr/>y,<wbr/> c_<wbr/>y,<wbr/>
14533        0    0,<wbr/>   1 ]
14534 </code></pre>
14535 <p>which can then be combined with the camera pose rotation
14536 <code>R</code> and translation <code>t</code> (<a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a> and
14537 <a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a>,<wbr/> respective) to calculate the
14538 complete transform from world coordinates to pixel
14539 coordinates:</p>
14540 <pre><code>P = [ K 0   * [ R t
14541      0 1 ]     0 1 ]
14542 </code></pre>
14543 <p>and with <code>p_<wbr/>w</code> being a point in the world coordinate system
14544 and <code>p_<wbr/>s</code> being a point in the camera active pixel array
14545 coordinate system,<wbr/> and with the mapping including the
14546 homogeneous division by z:</p>
14547 <pre><code> p_<wbr/>h = (x_<wbr/>h,<wbr/> y_<wbr/>h,<wbr/> z_<wbr/>h) = P p_<wbr/>w
14548 p_<wbr/>s = p_<wbr/>h /<wbr/> z_<wbr/>h
14549 </code></pre>
14550 <p>so <code>[x_<wbr/>s,<wbr/> y_<wbr/>s]</code> is the pixel coordinates of the world
14551 point,<wbr/> <code>z_<wbr/>s = 1</code>,<wbr/> and <code>w_<wbr/>s</code> is a measurement of disparity
14552 (depth) in pixel coordinates.<wbr/></p>
14553 <p>Note that the coordinate system for this transform is the
14554 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> system,<wbr/>
14555 where <code>(0,<wbr/>0)</code> is the top-left of the
14556 preCorrectionActiveArraySize rectangle.<wbr/> Once the pose and
14557 intrinsic calibration transforms have been applied to a
14558 world point,<wbr/> then the <a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>
14559 transform needs to be applied,<wbr/> and the result adjusted to
14560 be in the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> coordinate
14561 system (where <code>(0,<wbr/> 0)</code> is the top-left of the
14562 activeArraySize rectangle),<wbr/> to determine the final pixel
14563 coordinate of the world point for processed (non-RAW)
14564 output buffers.<wbr/></p>
14565             </td>
14566           </tr>
14567
14568
14569           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14570            <!-- end of entry -->
14571         
14572                 
14573           <tr class="entry" id="dynamic_android.lens.radialDistortion">
14574             <td class="entry_name
14575              " rowspan="3">
14576               android.<wbr/>lens.<wbr/>radial<wbr/>Distortion
14577             </td>
14578             <td class="entry_type">
14579                 <span class="entry_type_name">float</span>
14580                 <span class="entry_type_container">x</span>
14581
14582                 <span class="entry_type_array">
14583                   6
14584                 </span>
14585               <span class="entry_type_visibility"> [public]</span>
14586
14587
14588
14589
14590
14591
14592             </td> <!-- entry_type -->
14593
14594             <td class="entry_description">
14595               <p>The correction coefficients to correct for this camera device's
14596 radial and tangential lens distortion.<wbr/></p>
14597             </td>
14598
14599             <td class="entry_units">
14600               
14601             Unitless coefficients.<wbr/>
14602           
14603             </td>
14604
14605             <td class="entry_range">
14606             </td>
14607
14608             <td class="entry_hal_version">
14609               <p>3.<wbr/>2</p>
14610             </td>
14611
14612             <td class="entry_tags">
14613               <ul class="entry_tags">
14614                   <li><a href="#tag_DEPTH">DEPTH</a></li>
14615               </ul>
14616             </td>
14617
14618           </tr>
14619           <tr class="entries_header">
14620             <th class="th_details" colspan="6">Details</th>
14621           </tr>
14622           <tr class="entry_cont">
14623             <td class="entry_details" colspan="6">
14624               <p>Four radial distortion coefficients <code>[kappa_<wbr/>0,<wbr/> kappa_<wbr/>1,<wbr/> kappa_<wbr/>2,<wbr/>
14625 kappa_<wbr/>3]</code> and two tangential distortion coefficients
14626 <code>[kappa_<wbr/>4,<wbr/> kappa_<wbr/>5]</code> that can be used to correct the
14627 lens's geometric distortion with the mapping equations:</p>
14628 <pre><code> x_<wbr/>c = x_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14629        kappa_<wbr/>4 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>5 * ( r^2 + 2 * x_<wbr/>i^2 )
14630  y_<wbr/>c = y_<wbr/>i * ( kappa_<wbr/>0 + kappa_<wbr/>1 * r^2 + kappa_<wbr/>2 * r^4 + kappa_<wbr/>3 * r^6 ) +
14631        kappa_<wbr/>5 * (2 * x_<wbr/>i * y_<wbr/>i) + kappa_<wbr/>4 * ( r^2 + 2 * y_<wbr/>i^2 )
14632 </code></pre>
14633 <p>Here,<wbr/> <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> are the coordinates to sample in the
14634 input image that correspond to the pixel values in the
14635 corrected image at the coordinate <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code>:</p>
14636 <pre><code> correctedImage(x_<wbr/>i,<wbr/> y_<wbr/>i) = sample_<wbr/>at(x_<wbr/>c,<wbr/> y_<wbr/>c,<wbr/> inputImage)
14637 </code></pre>
14638 <p>The pixel coordinates are defined in a normalized
14639 coordinate system related to the
14640 <a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a> calibration fields.<wbr/>
14641 Both <code>[x_<wbr/>i,<wbr/> y_<wbr/>i]</code> and <code>[x_<wbr/>c,<wbr/> y_<wbr/>c]</code> have <code>(0,<wbr/>0)</code> at the
14642 lens optical center <code>[c_<wbr/>x,<wbr/> c_<wbr/>y]</code>.<wbr/> The maximum magnitudes
14643 of both x and y coordinates are normalized to be 1 at the
14644 edge further from the optical center,<wbr/> so the range
14645 for both dimensions is <code>-1 &lt;= x &lt;= 1</code>.<wbr/></p>
14646 <p>Finally,<wbr/> <code>r</code> represents the radial distance from the
14647 optical center,<wbr/> <code>r^2 = x_<wbr/>i^2 + y_<wbr/>i^2</code>,<wbr/> and its magnitude
14648 is therefore no larger than <code>|<wbr/>r|<wbr/> &lt;= sqrt(2)</code>.<wbr/></p>
14649 <p>The distortion model used is the Brown-Conrady model.<wbr/></p>
14650             </td>
14651           </tr>
14652
14653
14654           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14655            <!-- end of entry -->
14656         
14657         
14658
14659       <!-- end of kind -->
14660       </tbody>
14661
14662   <!-- end of section -->
14663   <tr><td colspan="7" id="section_noiseReduction" class="section">noiseReduction</td></tr>
14664
14665
14666       <tr><td colspan="7" class="kind">controls</td></tr>
14667
14668       <thead class="entries_header">
14669         <tr>
14670           <th class="th_name">Property Name</th>
14671           <th class="th_type">Type</th>
14672           <th class="th_description">Description</th>
14673           <th class="th_units">Units</th>
14674           <th class="th_range">Range</th>
14675           <th class="th_hal_version">Initial HIDL HAL version</th>
14676           <th class="th_tags">Tags</th>
14677         </tr>
14678       </thead>
14679
14680       <tbody>
14681
14682         
14683
14684         
14685
14686         
14687
14688         
14689
14690                 
14691           <tr class="entry" id="controls_android.noiseReduction.mode">
14692             <td class="entry_name
14693              " rowspan="5">
14694               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
14695             </td>
14696             <td class="entry_type">
14697                 <span class="entry_type_name entry_type_name_enum">byte</span>
14698
14699               <span class="entry_type_visibility"> [public]</span>
14700
14701
14702               <span class="entry_type_hwlevel">[full] </span>
14703
14704
14705
14706                 <ul class="entry_type_enum">
14707                   <li>
14708                     <span class="entry_type_enum_name">OFF (v3.2)</span>
14709                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
14710                   </li>
14711                   <li>
14712                     <span class="entry_type_enum_name">FAST (v3.2)</span>
14713                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
14714 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
14715 relative to sensor.<wbr/></p></span>
14716                   </li>
14717                   <li>
14718                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
14719                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
14720 rate relative to sensor output.<wbr/></p></span>
14721                   </li>
14722                   <li>
14723                     <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
14724                     <span class="entry_type_enum_optional">[optional]</span>
14725                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
14726 sensor output.<wbr/> </p></span>
14727                   </li>
14728                   <li>
14729                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
14730                     <span class="entry_type_enum_optional">[optional]</span>
14731                     <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
14732 based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
14733 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
14734 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
14735 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
14736 and the quality is equal to or better than FAST (since it is only applied to
14737 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
14738 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
14739 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
14740 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
14741 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
14742 high-resolution buffers must not have noise reduction applied to maximize efficiency of
14743 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
14744 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
14745 applied for reasonable preview quality.<wbr/></p>
14746 <p>This mode is guaranteed to be supported by devices that support either the
14747 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
14748 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
14749 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
14750                   </li>
14751                 </ul>
14752
14753             </td> <!-- entry_type -->
14754
14755             <td class="entry_description">
14756               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
14757             </td>
14758
14759             <td class="entry_units">
14760             </td>
14761
14762             <td class="entry_range">
14763               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
14764             </td>
14765
14766             <td class="entry_hal_version">
14767               <p>3.<wbr/>2</p>
14768             </td>
14769
14770             <td class="entry_tags">
14771               <ul class="entry_tags">
14772                   <li><a href="#tag_V1">V1</a></li>
14773                   <li><a href="#tag_REPROC">REPROC</a></li>
14774               </ul>
14775             </td>
14776
14777           </tr>
14778           <tr class="entries_header">
14779             <th class="th_details" colspan="6">Details</th>
14780           </tr>
14781           <tr class="entry_cont">
14782             <td class="entry_details" colspan="6">
14783               <p>The noise reduction algorithm attempts to improve image quality by removing
14784 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
14785 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
14786 YUV domain.<wbr/></p>
14787 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
14788 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
14789 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
14790 <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>
14791 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
14792 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
14793 will use the highest-quality noise filtering algorithms,<wbr/>
14794 even if it slows down capture rate.<wbr/> FAST means the camera device will not
14795 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
14796 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
14797 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
14798 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
14799 buffer of high-resolution images during preview and reprocess image(s) from that buffer
14800 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
14801 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
14802 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
14803 those will be reprocessed later if necessary.<wbr/></p>
14804 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
14805 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
14806 may adjust the noise reduction parameters for best image quality based on the
14807 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
14808             </td>
14809           </tr>
14810
14811           <tr class="entries_header">
14812             <th class="th_details" colspan="6">HAL Implementation Details</th>
14813           </tr>
14814           <tr class="entry_cont">
14815             <td class="entry_details" colspan="6">
14816               <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
14817 adjust the internal noise reduction parameters appropriately to get the best quality
14818 images.<wbr/></p>
14819             </td>
14820           </tr>
14821
14822           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14823            <!-- end of entry -->
14824         
14825                 
14826           <tr class="entry" id="controls_android.noiseReduction.strength">
14827             <td class="entry_name
14828              " rowspan="1">
14829               android.<wbr/>noise<wbr/>Reduction.<wbr/>strength
14830             </td>
14831             <td class="entry_type">
14832                 <span class="entry_type_name">byte</span>
14833
14834               <span class="entry_type_visibility"> [system]</span>
14835
14836
14837
14838
14839
14840
14841             </td> <!-- entry_type -->
14842
14843             <td class="entry_description">
14844               <p>Control the amount of noise reduction
14845 applied to the images</p>
14846             </td>
14847
14848             <td class="entry_units">
14849               1-10; 10 is max noise reduction
14850             </td>
14851
14852             <td class="entry_range">
14853               <p>1 - 10</p>
14854             </td>
14855
14856             <td class="entry_hal_version">
14857               <p>3.<wbr/>2</p>
14858             </td>
14859
14860             <td class="entry_tags">
14861               <ul class="entry_tags">
14862                   <li><a href="#tag_FUTURE">FUTURE</a></li>
14863               </ul>
14864             </td>
14865
14866           </tr>
14867
14868
14869           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14870            <!-- end of entry -->
14871         
14872         
14873
14874       <!-- end of kind -->
14875       </tbody>
14876       <tr><td colspan="7" class="kind">static</td></tr>
14877
14878       <thead class="entries_header">
14879         <tr>
14880           <th class="th_name">Property Name</th>
14881           <th class="th_type">Type</th>
14882           <th class="th_description">Description</th>
14883           <th class="th_units">Units</th>
14884           <th class="th_range">Range</th>
14885           <th class="th_hal_version">Initial HIDL HAL version</th>
14886           <th class="th_tags">Tags</th>
14887         </tr>
14888       </thead>
14889
14890       <tbody>
14891
14892         
14893
14894         
14895
14896         
14897
14898         
14899
14900                 
14901           <tr class="entry" id="static_android.noiseReduction.availableNoiseReductionModes">
14902             <td class="entry_name
14903              " rowspan="5">
14904               android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes
14905             </td>
14906             <td class="entry_type">
14907                 <span class="entry_type_name">byte</span>
14908                 <span class="entry_type_container">x</span>
14909
14910                 <span class="entry_type_array">
14911                   n
14912                 </span>
14913               <span class="entry_type_visibility"> [public as enumList]</span>
14914
14915
14916               <span class="entry_type_hwlevel">[limited] </span>
14917
14918
14919                 <div class="entry_type_notes">list of enums</div>
14920
14921
14922             </td> <!-- entry_type -->
14923
14924             <td class="entry_description">
14925               <p>List of noise reduction modes for <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a> that are supported
14926 by this camera device.<wbr/></p>
14927             </td>
14928
14929             <td class="entry_units">
14930             </td>
14931
14932             <td class="entry_range">
14933               <p>Any value listed in <a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></p>
14934             </td>
14935
14936             <td class="entry_hal_version">
14937               <p>3.<wbr/>2</p>
14938             </td>
14939
14940             <td class="entry_tags">
14941               <ul class="entry_tags">
14942                   <li><a href="#tag_V1">V1</a></li>
14943                   <li><a href="#tag_REPROC">REPROC</a></li>
14944               </ul>
14945             </td>
14946
14947           </tr>
14948           <tr class="entries_header">
14949             <th class="th_details" colspan="6">Details</th>
14950           </tr>
14951           <tr class="entry_cont">
14952             <td class="entry_details" colspan="6">
14953               <p>Full-capability camera devices will always support OFF and FAST.<wbr/></p>
14954 <p>Camera devices that support YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING will support
14955 ZERO_<wbr/>SHUTTER_<wbr/>LAG.<wbr/></p>
14956 <p>Legacy-capability camera devices will only support FAST mode.<wbr/></p>
14957             </td>
14958           </tr>
14959
14960           <tr class="entries_header">
14961             <th class="th_details" colspan="6">HAL Implementation Details</th>
14962           </tr>
14963           <tr class="entry_cont">
14964             <td class="entry_details" colspan="6">
14965               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if noise reduction control is available
14966 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
14967 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
14968 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
14969             </td>
14970           </tr>
14971
14972           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
14973            <!-- end of entry -->
14974         
14975         
14976
14977       <!-- end of kind -->
14978       </tbody>
14979       <tr><td colspan="7" class="kind">dynamic</td></tr>
14980
14981       <thead class="entries_header">
14982         <tr>
14983           <th class="th_name">Property Name</th>
14984           <th class="th_type">Type</th>
14985           <th class="th_description">Description</th>
14986           <th class="th_units">Units</th>
14987           <th class="th_range">Range</th>
14988           <th class="th_hal_version">Initial HIDL HAL version</th>
14989           <th class="th_tags">Tags</th>
14990         </tr>
14991       </thead>
14992
14993       <tbody>
14994
14995         
14996
14997         
14998
14999         
15000
15001         
15002
15003                 
15004           <tr class="entry" id="dynamic_android.noiseReduction.mode">
15005             <td class="entry_name
15006              " rowspan="5">
15007               android.<wbr/>noise<wbr/>Reduction.<wbr/>mode
15008             </td>
15009             <td class="entry_type">
15010                 <span class="entry_type_name entry_type_name_enum">byte</span>
15011
15012               <span class="entry_type_visibility"> [public]</span>
15013
15014
15015               <span class="entry_type_hwlevel">[full] </span>
15016
15017
15018
15019                 <ul class="entry_type_enum">
15020                   <li>
15021                     <span class="entry_type_enum_name">OFF (v3.2)</span>
15022                     <span class="entry_type_enum_notes"><p>No noise reduction is applied.<wbr/></p></span>
15023                   </li>
15024                   <li>
15025                     <span class="entry_type_enum_name">FAST (v3.2)</span>
15026                     <span class="entry_type_enum_notes"><p>Noise reduction is applied without reducing frame rate relative to sensor
15027 output.<wbr/> It may be the same as OFF if noise reduction will reduce frame rate
15028 relative to sensor.<wbr/></p></span>
15029                   </li>
15030                   <li>
15031                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
15032                     <span class="entry_type_enum_notes"><p>High-quality noise reduction is applied,<wbr/> at the cost of possibly reduced frame
15033 rate relative to sensor output.<wbr/></p></span>
15034                   </li>
15035                   <li>
15036                     <span class="entry_type_enum_name">MINIMAL (v3.2)</span>
15037                     <span class="entry_type_enum_optional">[optional]</span>
15038                     <span class="entry_type_enum_notes"><p>MINIMAL noise reduction is applied without reducing frame rate relative to
15039 sensor output.<wbr/> </p></span>
15040                   </li>
15041                   <li>
15042                     <span class="entry_type_enum_name">ZERO_SHUTTER_LAG (v3.2)</span>
15043                     <span class="entry_type_enum_optional">[optional]</span>
15044                     <span class="entry_type_enum_notes"><p>Noise reduction is applied at different levels for different output streams,<wbr/>
15045 based on resolution.<wbr/> Streams at maximum recording resolution (see <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>)
15046 or below have noise reduction applied,<wbr/> while higher-resolution streams have MINIMAL (if
15047 supported) or no noise reduction applied (if MINIMAL is not supported.<wbr/>) The degree of
15048 noise reduction for low-resolution streams is tuned so that frame rate is not impacted,<wbr/>
15049 and the quality is equal to or better than FAST (since it is only applied to
15050 lower-resolution outputs,<wbr/> quality may improve from FAST).<wbr/></p>
15051 <p>This mode is intended to be used by applications operating in a zero-shutter-lag mode
15052 with YUV or PRIVATE reprocessing,<wbr/> where the application continuously captures
15053 high-resolution intermediate buffers into a circular buffer,<wbr/> from which a final image is
15054 produced via reprocessing when a user takes a picture.<wbr/>  For such a use case,<wbr/> the
15055 high-resolution buffers must not have noise reduction applied to maximize efficiency of
15056 preview and to avoid over-applying noise filtering when reprocessing,<wbr/> while
15057 low-resolution buffers (used for recording or preview,<wbr/> generally) need noise reduction
15058 applied for reasonable preview quality.<wbr/></p>
15059 <p>This mode is guaranteed to be supported by devices that support either the
15060 YUV_<wbr/>REPROCESSING or PRIVATE_<wbr/>REPROCESSING capabilities
15061 (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> lists either of those capabilities) and it will
15062 be the default mode for CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template.<wbr/></p></span>
15063                   </li>
15064                 </ul>
15065
15066             </td> <!-- entry_type -->
15067
15068             <td class="entry_description">
15069               <p>Mode of operation for the noise reduction algorithm.<wbr/></p>
15070             </td>
15071
15072             <td class="entry_units">
15073             </td>
15074
15075             <td class="entry_range">
15076               <p><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a></p>
15077             </td>
15078
15079             <td class="entry_hal_version">
15080               <p>3.<wbr/>2</p>
15081             </td>
15082
15083             <td class="entry_tags">
15084               <ul class="entry_tags">
15085                   <li><a href="#tag_V1">V1</a></li>
15086                   <li><a href="#tag_REPROC">REPROC</a></li>
15087               </ul>
15088             </td>
15089
15090           </tr>
15091           <tr class="entries_header">
15092             <th class="th_details" colspan="6">Details</th>
15093           </tr>
15094           <tr class="entry_cont">
15095             <td class="entry_details" colspan="6">
15096               <p>The noise reduction algorithm attempts to improve image quality by removing
15097 excessive noise added by the capture process,<wbr/> especially in dark conditions.<wbr/></p>
15098 <p>OFF means no noise reduction will be applied by the camera device,<wbr/> for both raw and
15099 YUV domain.<wbr/></p>
15100 <p>MINIMAL means that only sensor raw domain basic noise reduction is enabled ,<wbr/>to remove
15101 demosaicing or other processing artifacts.<wbr/> For YUV_<wbr/>REPROCESSING,<wbr/> MINIMAL is same as OFF.<wbr/>
15102 This mode is optional,<wbr/> may not be support by all devices.<wbr/> The application should check
15103 <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>
15104 <p>FAST/<wbr/>HIGH_<wbr/>QUALITY both mean camera device determined noise filtering
15105 will be applied.<wbr/> HIGH_<wbr/>QUALITY mode indicates that the camera device
15106 will use the highest-quality noise filtering algorithms,<wbr/>
15107 even if it slows down capture rate.<wbr/> FAST means the camera device will not
15108 slow down capture rate when applying noise filtering.<wbr/> FAST may be the same as MINIMAL if
15109 MINIMAL is listed,<wbr/> or the same as OFF if any noise filtering will slow down capture rate.<wbr/>
15110 Every output stream will have a similar amount of enhancement applied.<wbr/></p>
15111 <p>ZERO_<wbr/>SHUTTER_<wbr/>LAG is meant to be used by applications that maintain a continuous circular
15112 buffer of high-resolution images during preview and reprocess image(s) from that buffer
15113 into a final capture when triggered by the user.<wbr/> In this mode,<wbr/> the camera device applies
15114 noise reduction to low-resolution streams (below maximum recording resolution) to maximize
15115 preview quality,<wbr/> but does not apply noise reduction to high-resolution streams,<wbr/> since
15116 those will be reprocessed later if necessary.<wbr/></p>
15117 <p>For YUV_<wbr/>REPROCESSING,<wbr/> these FAST/<wbr/>HIGH_<wbr/>QUALITY modes both mean that the camera device
15118 will apply FAST/<wbr/>HIGH_<wbr/>QUALITY YUV domain noise reduction,<wbr/> respectively.<wbr/> The camera device
15119 may adjust the noise reduction parameters for best image quality based on the
15120 <a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a> if it is set.<wbr/></p>
15121             </td>
15122           </tr>
15123
15124           <tr class="entries_header">
15125             <th class="th_details" colspan="6">HAL Implementation Details</th>
15126           </tr>
15127           <tr class="entry_cont">
15128             <td class="entry_details" colspan="6">
15129               <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
15130 adjust the internal noise reduction parameters appropriately to get the best quality
15131 images.<wbr/></p>
15132             </td>
15133           </tr>
15134
15135           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15136            <!-- end of entry -->
15137         
15138         
15139
15140       <!-- end of kind -->
15141       </tbody>
15142
15143   <!-- end of section -->
15144   <tr><td colspan="7" id="section_quirks" class="section">quirks</td></tr>
15145
15146
15147       <tr><td colspan="7" class="kind">static</td></tr>
15148
15149       <thead class="entries_header">
15150         <tr>
15151           <th class="th_name">Property Name</th>
15152           <th class="th_type">Type</th>
15153           <th class="th_description">Description</th>
15154           <th class="th_units">Units</th>
15155           <th class="th_range">Range</th>
15156           <th class="th_hal_version">Initial HIDL HAL version</th>
15157           <th class="th_tags">Tags</th>
15158         </tr>
15159       </thead>
15160
15161       <tbody>
15162
15163         
15164
15165         
15166
15167         
15168
15169         
15170
15171                 
15172           <tr class="entry" id="static_android.quirks.meteringCropRegion">
15173             <td class="entry_name
15174                 entry_name_deprecated
15175              " rowspan="3">
15176               android.<wbr/>quirks.<wbr/>metering<wbr/>Crop<wbr/>Region
15177             </td>
15178             <td class="entry_type">
15179                 <span class="entry_type_name">byte</span>
15180
15181               <span class="entry_type_visibility"> [system]</span>
15182
15183
15184
15185               <span class="entry_type_deprecated">[deprecated] </span>
15186
15187
15188
15189             </td> <!-- entry_type -->
15190
15191             <td class="entry_description">
15192               <p>If set to 1,<wbr/> the camera service does not
15193 scale 'normalized' coordinates with respect to the crop
15194 region.<wbr/> This applies to metering input (a{e,<wbr/>f,<wbr/>wb}Region
15195 and output (face rectangles).<wbr/></p>
15196             </td>
15197
15198             <td class="entry_units">
15199             </td>
15200
15201             <td class="entry_range">
15202               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15203             </td>
15204
15205             <td class="entry_hal_version">
15206               <p>3.<wbr/>2</p>
15207             </td>
15208
15209             <td class="entry_tags">
15210             </td>
15211
15212           </tr>
15213           <tr class="entries_header">
15214             <th class="th_details" colspan="6">Details</th>
15215           </tr>
15216           <tr class="entry_cont">
15217             <td class="entry_details" colspan="6">
15218               <p>Normalized coordinates refer to those in the
15219 (-1000,<wbr/>1000) range mentioned in the
15220 android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
15221 <p>HAL implementations should instead always use and emit
15222 sensor array-relative coordinates for all region data.<wbr/> Does
15223 not need to be listed in static metadata.<wbr/> Support will be
15224 removed in future versions of camera service.<wbr/></p>
15225             </td>
15226           </tr>
15227
15228
15229           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15230            <!-- end of entry -->
15231         
15232                 
15233           <tr class="entry" id="static_android.quirks.triggerAfWithAuto">
15234             <td class="entry_name
15235                 entry_name_deprecated
15236              " rowspan="3">
15237               android.<wbr/>quirks.<wbr/>trigger<wbr/>Af<wbr/>With<wbr/>Auto
15238             </td>
15239             <td class="entry_type">
15240                 <span class="entry_type_name">byte</span>
15241
15242               <span class="entry_type_visibility"> [system]</span>
15243
15244
15245
15246               <span class="entry_type_deprecated">[deprecated] </span>
15247
15248
15249
15250             </td> <!-- entry_type -->
15251
15252             <td class="entry_description">
15253               <p>If set to 1,<wbr/> then the camera service always
15254 switches to FOCUS_<wbr/>MODE_<wbr/>AUTO before issuing a AF
15255 trigger.<wbr/></p>
15256             </td>
15257
15258             <td class="entry_units">
15259             </td>
15260
15261             <td class="entry_range">
15262               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15263             </td>
15264
15265             <td class="entry_hal_version">
15266               <p>3.<wbr/>2</p>
15267             </td>
15268
15269             <td class="entry_tags">
15270             </td>
15271
15272           </tr>
15273           <tr class="entries_header">
15274             <th class="th_details" colspan="6">Details</th>
15275           </tr>
15276           <tr class="entry_cont">
15277             <td class="entry_details" colspan="6">
15278               <p>HAL implementations should implement AF trigger
15279 modes for AUTO,<wbr/> MACRO,<wbr/> CONTINUOUS_<wbr/>FOCUS,<wbr/> and
15280 CONTINUOUS_<wbr/>PICTURE modes instead of using this flag.<wbr/> Does
15281 not need to be listed in static metadata.<wbr/> Support will be
15282 removed in future versions of camera service</p>
15283             </td>
15284           </tr>
15285
15286
15287           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15288            <!-- end of entry -->
15289         
15290                 
15291           <tr class="entry" id="static_android.quirks.useZslFormat">
15292             <td class="entry_name
15293                 entry_name_deprecated
15294              " rowspan="3">
15295               android.<wbr/>quirks.<wbr/>use<wbr/>Zsl<wbr/>Format
15296             </td>
15297             <td class="entry_type">
15298                 <span class="entry_type_name">byte</span>
15299
15300               <span class="entry_type_visibility"> [system]</span>
15301
15302
15303
15304               <span class="entry_type_deprecated">[deprecated] </span>
15305
15306
15307
15308             </td> <!-- entry_type -->
15309
15310             <td class="entry_description">
15311               <p>If set to 1,<wbr/> the camera service uses
15312 CAMERA2_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>ZSL instead of
15313 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED for the zero
15314 shutter lag stream</p>
15315             </td>
15316
15317             <td class="entry_units">
15318             </td>
15319
15320             <td class="entry_range">
15321               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15322             </td>
15323
15324             <td class="entry_hal_version">
15325               <p>3.<wbr/>2</p>
15326             </td>
15327
15328             <td class="entry_tags">
15329             </td>
15330
15331           </tr>
15332           <tr class="entries_header">
15333             <th class="th_details" colspan="6">Details</th>
15334           </tr>
15335           <tr class="entry_cont">
15336             <td class="entry_details" colspan="6">
15337               <p>HAL implementations should use gralloc usage flags
15338 to determine that a stream will be used for
15339 zero-shutter-lag,<wbr/> instead of relying on an explicit
15340 format setting.<wbr/> Does not need to be listed in static
15341 metadata.<wbr/> Support will be removed in future versions of
15342 camera service.<wbr/></p>
15343             </td>
15344           </tr>
15345
15346
15347           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15348            <!-- end of entry -->
15349         
15350                 
15351           <tr class="entry" id="static_android.quirks.usePartialResult">
15352             <td class="entry_name
15353                 entry_name_deprecated
15354              " rowspan="5">
15355               android.<wbr/>quirks.<wbr/>use<wbr/>Partial<wbr/>Result
15356             </td>
15357             <td class="entry_type">
15358                 <span class="entry_type_name">byte</span>
15359
15360               <span class="entry_type_visibility"> [hidden]</span>
15361
15362
15363
15364               <span class="entry_type_deprecated">[deprecated] </span>
15365
15366
15367
15368             </td> <!-- entry_type -->
15369
15370             <td class="entry_description">
15371               <p>If set to 1,<wbr/> the HAL will always split result
15372 metadata for a single capture into multiple buffers,<wbr/>
15373 returned using multiple process_<wbr/>capture_<wbr/>result calls.<wbr/></p>
15374             </td>
15375
15376             <td class="entry_units">
15377             </td>
15378
15379             <td class="entry_range">
15380               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15381             </td>
15382
15383             <td class="entry_hal_version">
15384               <p>3.<wbr/>2</p>
15385             </td>
15386
15387             <td class="entry_tags">
15388             </td>
15389
15390           </tr>
15391           <tr class="entries_header">
15392             <th class="th_details" colspan="6">Details</th>
15393           </tr>
15394           <tr class="entry_cont">
15395             <td class="entry_details" colspan="6">
15396               <p>Does not need to be listed in static
15397 metadata.<wbr/> Support for partial results will be reworked in
15398 future versions of camera service.<wbr/> This quirk will stop
15399 working at that point; DO NOT USE without careful
15400 consideration of future support.<wbr/></p>
15401             </td>
15402           </tr>
15403
15404           <tr class="entries_header">
15405             <th class="th_details" colspan="6">HAL Implementation Details</th>
15406           </tr>
15407           <tr class="entry_cont">
15408             <td class="entry_details" colspan="6">
15409               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15410 for information on how to implement partial results.<wbr/></p>
15411             </td>
15412           </tr>
15413
15414           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15415            <!-- end of entry -->
15416         
15417         
15418
15419       <!-- end of kind -->
15420       </tbody>
15421       <tr><td colspan="7" class="kind">dynamic</td></tr>
15422
15423       <thead class="entries_header">
15424         <tr>
15425           <th class="th_name">Property Name</th>
15426           <th class="th_type">Type</th>
15427           <th class="th_description">Description</th>
15428           <th class="th_units">Units</th>
15429           <th class="th_range">Range</th>
15430           <th class="th_hal_version">Initial HIDL HAL version</th>
15431           <th class="th_tags">Tags</th>
15432         </tr>
15433       </thead>
15434
15435       <tbody>
15436
15437         
15438
15439         
15440
15441         
15442
15443         
15444
15445                 
15446           <tr class="entry" id="dynamic_android.quirks.partialResult">
15447             <td class="entry_name
15448                 entry_name_deprecated
15449              " rowspan="5">
15450               android.<wbr/>quirks.<wbr/>partial<wbr/>Result
15451             </td>
15452             <td class="entry_type">
15453                 <span class="entry_type_name entry_type_name_enum">byte</span>
15454
15455               <span class="entry_type_visibility"> [hidden as boolean]</span>
15456
15457
15458
15459               <span class="entry_type_deprecated">[deprecated] </span>
15460
15461
15462                 <ul class="entry_type_enum">
15463                   <li>
15464                     <span class="entry_type_enum_name">FINAL (v3.2)</span>
15465                     <span class="entry_type_enum_notes"><p>The last or only metadata result buffer
15466 for this capture.<wbr/></p></span>
15467                   </li>
15468                   <li>
15469                     <span class="entry_type_enum_name">PARTIAL (v3.2)</span>
15470                     <span class="entry_type_enum_notes"><p>A partial buffer of result metadata for this
15471 capture.<wbr/> More result buffers for this capture will be sent
15472 by the camera device,<wbr/> the last of which will be marked
15473 FINAL.<wbr/></p></span>
15474                   </li>
15475                 </ul>
15476
15477             </td> <!-- entry_type -->
15478
15479             <td class="entry_description">
15480               <p>Whether a result given to the framework is the
15481 final one for the capture,<wbr/> or only a partial that contains a
15482 subset of the full set of dynamic metadata
15483 values.<wbr/></p>
15484             </td>
15485
15486             <td class="entry_units">
15487             </td>
15488
15489             <td class="entry_range">
15490               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15491               <p>Optional.<wbr/> Default value is FINAL.<wbr/></p>
15492             </td>
15493
15494             <td class="entry_hal_version">
15495               <p>3.<wbr/>2</p>
15496             </td>
15497
15498             <td class="entry_tags">
15499             </td>
15500
15501           </tr>
15502           <tr class="entries_header">
15503             <th class="th_details" colspan="6">Details</th>
15504           </tr>
15505           <tr class="entry_cont">
15506             <td class="entry_details" colspan="6">
15507               <p>The entries in the result metadata buffers for a
15508 single capture may not overlap,<wbr/> except for this entry.<wbr/> The
15509 FINAL buffers must retain FIFO ordering relative to the
15510 requests that generate them,<wbr/> so the FINAL buffer for frame 3 must
15511 always be sent to the framework after the FINAL buffer for frame 2,<wbr/> and
15512 before the FINAL buffer for frame 4.<wbr/> PARTIAL buffers may be returned
15513 in any order relative to other frames,<wbr/> but all PARTIAL buffers for a given
15514 capture must arrive before the FINAL buffer for that capture.<wbr/> This entry may
15515 only be used by the camera device if quirks.<wbr/>usePartialResult is set to 1.<wbr/></p>
15516             </td>
15517           </tr>
15518
15519           <tr class="entries_header">
15520             <th class="th_details" colspan="6">HAL Implementation Details</th>
15521           </tr>
15522           <tr class="entry_cont">
15523             <td class="entry_details" colspan="6">
15524               <p>Refer to <code>camera3_<wbr/>capture_<wbr/>result::partial_<wbr/>result</code>
15525 for information on how to implement partial results.<wbr/></p>
15526             </td>
15527           </tr>
15528
15529           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15530            <!-- end of entry -->
15531         
15532         
15533
15534       <!-- end of kind -->
15535       </tbody>
15536
15537   <!-- end of section -->
15538   <tr><td colspan="7" id="section_request" class="section">request</td></tr>
15539
15540
15541       <tr><td colspan="7" class="kind">controls</td></tr>
15542
15543       <thead class="entries_header">
15544         <tr>
15545           <th class="th_name">Property Name</th>
15546           <th class="th_type">Type</th>
15547           <th class="th_description">Description</th>
15548           <th class="th_units">Units</th>
15549           <th class="th_range">Range</th>
15550           <th class="th_hal_version">Initial HIDL HAL version</th>
15551           <th class="th_tags">Tags</th>
15552         </tr>
15553       </thead>
15554
15555       <tbody>
15556
15557         
15558
15559         
15560
15561         
15562
15563         
15564
15565                 
15566           <tr class="entry" id="controls_android.request.frameCount">
15567             <td class="entry_name
15568                 entry_name_deprecated
15569              " rowspan="1">
15570               android.<wbr/>request.<wbr/>frame<wbr/>Count
15571             </td>
15572             <td class="entry_type">
15573                 <span class="entry_type_name">int32</span>
15574
15575               <span class="entry_type_visibility"> [system]</span>
15576
15577
15578
15579               <span class="entry_type_deprecated">[deprecated] </span>
15580
15581
15582
15583             </td> <!-- entry_type -->
15584
15585             <td class="entry_description">
15586               <p>A frame counter set by the framework.<wbr/> Must
15587 be maintained unchanged in output frame.<wbr/> This value monotonically
15588 increases with every new result (that is,<wbr/> each new result has a unique
15589 frameCount value).<wbr/></p>
15590             </td>
15591
15592             <td class="entry_units">
15593               incrementing integer
15594             </td>
15595
15596             <td class="entry_range">
15597               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15598               <p>Any int.<wbr/></p>
15599             </td>
15600
15601             <td class="entry_hal_version">
15602               <p>3.<wbr/>2</p>
15603             </td>
15604
15605             <td class="entry_tags">
15606             </td>
15607
15608           </tr>
15609
15610
15611           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15612            <!-- end of entry -->
15613         
15614                 
15615           <tr class="entry" id="controls_android.request.id">
15616             <td class="entry_name
15617              " rowspan="1">
15618               android.<wbr/>request.<wbr/>id
15619             </td>
15620             <td class="entry_type">
15621                 <span class="entry_type_name">int32</span>
15622
15623               <span class="entry_type_visibility"> [hidden]</span>
15624
15625
15626
15627
15628
15629
15630             </td> <!-- entry_type -->
15631
15632             <td class="entry_description">
15633               <p>An application-specified ID for the current
15634 request.<wbr/> Must be maintained unchanged in output
15635 frame</p>
15636             </td>
15637
15638             <td class="entry_units">
15639               arbitrary integer assigned by application
15640             </td>
15641
15642             <td class="entry_range">
15643               <p>Any int</p>
15644             </td>
15645
15646             <td class="entry_hal_version">
15647               <p>3.<wbr/>2</p>
15648             </td>
15649
15650             <td class="entry_tags">
15651               <ul class="entry_tags">
15652                   <li><a href="#tag_V1">V1</a></li>
15653               </ul>
15654             </td>
15655
15656           </tr>
15657
15658
15659           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15660            <!-- end of entry -->
15661         
15662                 
15663           <tr class="entry" id="controls_android.request.inputStreams">
15664             <td class="entry_name
15665                 entry_name_deprecated
15666              " rowspan="3">
15667               android.<wbr/>request.<wbr/>input<wbr/>Streams
15668             </td>
15669             <td class="entry_type">
15670                 <span class="entry_type_name">int32</span>
15671                 <span class="entry_type_container">x</span>
15672
15673                 <span class="entry_type_array">
15674                   n
15675                 </span>
15676               <span class="entry_type_visibility"> [system]</span>
15677
15678
15679
15680               <span class="entry_type_deprecated">[deprecated] </span>
15681
15682
15683
15684             </td> <!-- entry_type -->
15685
15686             <td class="entry_description">
15687               <p>List which camera reprocess stream is used
15688 for the source of reprocessing data.<wbr/></p>
15689             </td>
15690
15691             <td class="entry_units">
15692               List of camera reprocess stream IDs
15693             </td>
15694
15695             <td class="entry_range">
15696               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15697               <p>Typically,<wbr/> only one entry allowed,<wbr/> must be a valid reprocess stream ID.<wbr/></p>
15698             </td>
15699
15700             <td class="entry_hal_version">
15701               <p>3.<wbr/>2</p>
15702             </td>
15703
15704             <td class="entry_tags">
15705               <ul class="entry_tags">
15706                   <li><a href="#tag_HAL2">HAL2</a></li>
15707               </ul>
15708             </td>
15709
15710           </tr>
15711           <tr class="entries_header">
15712             <th class="th_details" colspan="6">Details</th>
15713           </tr>
15714           <tr class="entry_cont">
15715             <td class="entry_details" colspan="6">
15716               <p>Only meaningful when <a href="#controls_android.request.type">android.<wbr/>request.<wbr/>type</a> ==
15717 REPROCESS.<wbr/> Ignored otherwise</p>
15718             </td>
15719           </tr>
15720
15721
15722           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15723            <!-- end of entry -->
15724         
15725                 
15726           <tr class="entry" id="controls_android.request.metadataMode">
15727             <td class="entry_name
15728              " rowspan="1">
15729               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
15730             </td>
15731             <td class="entry_type">
15732                 <span class="entry_type_name entry_type_name_enum">byte</span>
15733
15734               <span class="entry_type_visibility"> [system]</span>
15735
15736
15737
15738
15739
15740                 <ul class="entry_type_enum">
15741                   <li>
15742                     <span class="entry_type_enum_name">NONE (v3.2)</span>
15743                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
15744 for application-bound buffer data.<wbr/> If no
15745 application-bound streams exist,<wbr/> no frame should be
15746 placed in the output frame queue.<wbr/> If such streams
15747 exist,<wbr/> a frame should be placed on the output queue
15748 with null metadata but with the necessary output buffer
15749 information.<wbr/> Timestamp information should still be
15750 included with any output stream buffers</p></span>
15751                   </li>
15752                   <li>
15753                     <span class="entry_type_enum_name">FULL (v3.2)</span>
15754                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
15755 only be produced if they are separately
15756 enabled</p></span>
15757                   </li>
15758                 </ul>
15759
15760             </td> <!-- entry_type -->
15761
15762             <td class="entry_description">
15763               <p>How much metadata to produce on
15764 output</p>
15765             </td>
15766
15767             <td class="entry_units">
15768             </td>
15769
15770             <td class="entry_range">
15771             </td>
15772
15773             <td class="entry_hal_version">
15774               <p>3.<wbr/>2</p>
15775             </td>
15776
15777             <td class="entry_tags">
15778               <ul class="entry_tags">
15779                   <li><a href="#tag_FUTURE">FUTURE</a></li>
15780               </ul>
15781             </td>
15782
15783           </tr>
15784
15785
15786           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15787            <!-- end of entry -->
15788         
15789                 
15790           <tr class="entry" id="controls_android.request.outputStreams">
15791             <td class="entry_name
15792                 entry_name_deprecated
15793              " rowspan="3">
15794               android.<wbr/>request.<wbr/>output<wbr/>Streams
15795             </td>
15796             <td class="entry_type">
15797                 <span class="entry_type_name">int32</span>
15798                 <span class="entry_type_container">x</span>
15799
15800                 <span class="entry_type_array">
15801                   n
15802                 </span>
15803               <span class="entry_type_visibility"> [system]</span>
15804
15805
15806
15807               <span class="entry_type_deprecated">[deprecated] </span>
15808
15809
15810
15811             </td> <!-- entry_type -->
15812
15813             <td class="entry_description">
15814               <p>Lists which camera output streams image data
15815 from this capture must be sent to</p>
15816             </td>
15817
15818             <td class="entry_units">
15819               List of camera stream IDs
15820             </td>
15821
15822             <td class="entry_range">
15823               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15824               <p>List must only include streams that have been
15825 created</p>
15826             </td>
15827
15828             <td class="entry_hal_version">
15829               <p>3.<wbr/>2</p>
15830             </td>
15831
15832             <td class="entry_tags">
15833               <ul class="entry_tags">
15834                   <li><a href="#tag_HAL2">HAL2</a></li>
15835               </ul>
15836             </td>
15837
15838           </tr>
15839           <tr class="entries_header">
15840             <th class="th_details" colspan="6">Details</th>
15841           </tr>
15842           <tr class="entry_cont">
15843             <td class="entry_details" colspan="6">
15844               <p>If no output streams are listed,<wbr/> then the image
15845 data should simply be discarded.<wbr/> The image data must
15846 still be captured for metadata and statistics production,<wbr/>
15847 and the lens and flash must operate as requested.<wbr/></p>
15848             </td>
15849           </tr>
15850
15851
15852           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15853            <!-- end of entry -->
15854         
15855                 
15856           <tr class="entry" id="controls_android.request.type">
15857             <td class="entry_name
15858                 entry_name_deprecated
15859              " rowspan="1">
15860               android.<wbr/>request.<wbr/>type
15861             </td>
15862             <td class="entry_type">
15863                 <span class="entry_type_name entry_type_name_enum">byte</span>
15864
15865               <span class="entry_type_visibility"> [system]</span>
15866
15867
15868
15869               <span class="entry_type_deprecated">[deprecated] </span>
15870
15871
15872                 <ul class="entry_type_enum">
15873                   <li>
15874                     <span class="entry_type_enum_name">CAPTURE (v3.2)</span>
15875                     <span class="entry_type_enum_notes"><p>Capture a new image from the imaging hardware,<wbr/>
15876 and process it according to the
15877 settings</p></span>
15878                   </li>
15879                   <li>
15880                     <span class="entry_type_enum_name">REPROCESS (v3.2)</span>
15881                     <span class="entry_type_enum_notes"><p>Process previously captured data; the
15882 <a href="#controls_android.request.inputStreams">android.<wbr/>request.<wbr/>input<wbr/>Streams</a> parameter determines the
15883 source reprocessing stream.<wbr/> TODO: Mark dynamic metadata
15884 needed for reprocessing with [RP]</p></span>
15885                   </li>
15886                 </ul>
15887
15888             </td> <!-- entry_type -->
15889
15890             <td class="entry_description">
15891               <p>The type of the request; either CAPTURE or
15892 REPROCESS.<wbr/> For legacy HAL3,<wbr/> this tag is redundant.<wbr/></p>
15893             </td>
15894
15895             <td class="entry_units">
15896             </td>
15897
15898             <td class="entry_range">
15899               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
15900             </td>
15901
15902             <td class="entry_hal_version">
15903               <p>3.<wbr/>2</p>
15904             </td>
15905
15906             <td class="entry_tags">
15907               <ul class="entry_tags">
15908                   <li><a href="#tag_HAL2">HAL2</a></li>
15909               </ul>
15910             </td>
15911
15912           </tr>
15913
15914
15915           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
15916            <!-- end of entry -->
15917         
15918         
15919
15920       <!-- end of kind -->
15921       </tbody>
15922       <tr><td colspan="7" class="kind">static</td></tr>
15923
15924       <thead class="entries_header">
15925         <tr>
15926           <th class="th_name">Property Name</th>
15927           <th class="th_type">Type</th>
15928           <th class="th_description">Description</th>
15929           <th class="th_units">Units</th>
15930           <th class="th_range">Range</th>
15931           <th class="th_hal_version">Initial HIDL HAL version</th>
15932           <th class="th_tags">Tags</th>
15933         </tr>
15934       </thead>
15935
15936       <tbody>
15937
15938         
15939
15940         
15941
15942         
15943
15944         
15945
15946                 
15947           <tr class="entry" id="static_android.request.maxNumOutputStreams">
15948             <td class="entry_name
15949              " rowspan="3">
15950               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Streams
15951             </td>
15952             <td class="entry_type">
15953                 <span class="entry_type_name">int32</span>
15954                 <span class="entry_type_container">x</span>
15955
15956                 <span class="entry_type_array">
15957                   3
15958                 </span>
15959               <span class="entry_type_visibility"> [ndk_public]</span>
15960
15961
15962               <span class="entry_type_hwlevel">[legacy] </span>
15963
15964
15965
15966
15967             </td> <!-- entry_type -->
15968
15969             <td class="entry_description">
15970               <p>The maximum numbers of different types of output streams
15971 that can be configured and used simultaneously by a camera device.<wbr/></p>
15972             </td>
15973
15974             <td class="entry_units">
15975             </td>
15976
15977             <td class="entry_range">
15978               <p>For processed (and stalling) format streams,<wbr/> &gt;= 1.<wbr/></p>
15979 <p>For Raw format (either stalling or non-stalling) streams,<wbr/> &gt;= 0.<wbr/></p>
15980 <p>For processed (but not stalling) format streams,<wbr/> &gt;= 3
15981 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
15982 &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>
15983             </td>
15984
15985             <td class="entry_hal_version">
15986               <p>3.<wbr/>2</p>
15987             </td>
15988
15989             <td class="entry_tags">
15990               <ul class="entry_tags">
15991                   <li><a href="#tag_BC">BC</a></li>
15992               </ul>
15993             </td>
15994
15995           </tr>
15996           <tr class="entries_header">
15997             <th class="th_details" colspan="6">Details</th>
15998           </tr>
15999           <tr class="entry_cont">
16000             <td class="entry_details" colspan="6">
16001               <p>This is a 3 element tuple that contains the max number of output simultaneous
16002 streams for raw sensor,<wbr/> processed (but not stalling),<wbr/> and processed (and stalling)
16003 formats respectively.<wbr/> For example,<wbr/> assuming that JPEG is typically a processed and
16004 stalling stream,<wbr/> if max raw sensor format output stream number is 1,<wbr/> max YUV streams
16005 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>
16006 <p>This lists the upper bound of the number of output streams supported by
16007 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16008 CPU resources that will consume more power.<wbr/> The image format for an output stream can
16009 be any supported format provided by <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a>.<wbr/>
16010 The formats defined in <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> can be catergorized
16011 into the 3 stream types as below:</p>
16012 <ul>
16013 <li>Processed (but stalling): any non-RAW format with a stallDurations &gt; 0.<wbr/>
16014   Typically <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a>.<wbr/></li>
16015 <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
16016   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a>.<wbr/></li>
16017 <li>Processed (but not-stalling): any non-RAW format without a stall duration.<wbr/>  Typically
16018   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a>,<wbr/>
16019   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a>,<wbr/> or <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a>.<wbr/></li>
16020 </ul>
16021             </td>
16022           </tr>
16023
16024
16025           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16026            <!-- end of entry -->
16027         
16028                 
16029           <tr class="entry" id="static_android.request.maxNumOutputRaw">
16030             <td class="entry_name
16031              " rowspan="3">
16032               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Raw
16033             </td>
16034             <td class="entry_type">
16035                 <span class="entry_type_name">int32</span>
16036
16037               <span class="entry_type_visibility"> [java_public]</span>
16038
16039               <span class="entry_type_synthetic">[synthetic] </span>
16040
16041               <span class="entry_type_hwlevel">[legacy] </span>
16042
16043
16044
16045
16046             </td> <!-- entry_type -->
16047
16048             <td class="entry_description">
16049               <p>The maximum numbers of different types of output streams
16050 that can be configured and used simultaneously by a camera device
16051 for any <code>RAW</code> formats.<wbr/></p>
16052             </td>
16053
16054             <td class="entry_units">
16055             </td>
16056
16057             <td class="entry_range">
16058               <p>&gt;= 0</p>
16059             </td>
16060
16061             <td class="entry_hal_version">
16062               <p>3.<wbr/>2</p>
16063             </td>
16064
16065             <td class="entry_tags">
16066             </td>
16067
16068           </tr>
16069           <tr class="entries_header">
16070             <th class="th_details" colspan="6">Details</th>
16071           </tr>
16072           <tr class="entry_cont">
16073             <td class="entry_details" colspan="6">
16074               <p>This value contains the max number of output simultaneous
16075 streams from the raw sensor.<wbr/></p>
16076 <p>This lists the upper bound of the number of output streams supported by
16077 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16078 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16079 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>
16080 <p>In particular,<wbr/> a <code>RAW</code> format is typically one of:</p>
16081 <ul>
16082 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">RAW_<wbr/>SENSOR</a></li>
16083 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">RAW10</a></li>
16084 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">RAW12</a></li>
16085 </ul>
16086 <p>LEGACY mode devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> LEGACY)
16087 never support raw streams.<wbr/></p>
16088             </td>
16089           </tr>
16090
16091
16092           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16093            <!-- end of entry -->
16094         
16095                 
16096           <tr class="entry" id="static_android.request.maxNumOutputProc">
16097             <td class="entry_name
16098              " rowspan="3">
16099               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc
16100             </td>
16101             <td class="entry_type">
16102                 <span class="entry_type_name">int32</span>
16103
16104               <span class="entry_type_visibility"> [java_public]</span>
16105
16106               <span class="entry_type_synthetic">[synthetic] </span>
16107
16108               <span class="entry_type_hwlevel">[legacy] </span>
16109
16110
16111
16112
16113             </td> <!-- entry_type -->
16114
16115             <td class="entry_description">
16116               <p>The maximum numbers of different types of output streams
16117 that can be configured and used simultaneously by a camera device
16118 for any processed (but not-stalling) formats.<wbr/></p>
16119             </td>
16120
16121             <td class="entry_units">
16122             </td>
16123
16124             <td class="entry_range">
16125               <p>&gt;= 3
16126 for FULL mode devices (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL</code>);
16127 &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>
16128             </td>
16129
16130             <td class="entry_hal_version">
16131               <p>3.<wbr/>2</p>
16132             </td>
16133
16134             <td class="entry_tags">
16135             </td>
16136
16137           </tr>
16138           <tr class="entries_header">
16139             <th class="th_details" colspan="6">Details</th>
16140           </tr>
16141           <tr class="entry_cont">
16142             <td class="entry_details" colspan="6">
16143               <p>This value contains the max number of output simultaneous
16144 streams for any processed (but not-stalling) formats.<wbr/></p>
16145 <p>This lists the upper bound of the number of output streams supported by
16146 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16147 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16148 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>
16149 <p>Processed (but not-stalling) is defined as any non-RAW format without a stall duration.<wbr/>
16150 Typically:</p>
16151 <ul>
16152 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">YUV_<wbr/>420_<wbr/>888</a></li>
16153 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#NV21">NV21</a></li>
16154 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YV12">YV12</a></li>
16155 <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>
16156 </ul>
16157 <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
16158 processed format -- it will return 0 for a non-stalling stream.<wbr/></p>
16159 <p>LEGACY devices will support at least 2 processing/<wbr/>non-stalling streams.<wbr/></p>
16160             </td>
16161           </tr>
16162
16163
16164           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16165            <!-- end of entry -->
16166         
16167                 
16168           <tr class="entry" id="static_android.request.maxNumOutputProcStalling">
16169             <td class="entry_name
16170              " rowspan="3">
16171               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Output<wbr/>Proc<wbr/>Stalling
16172             </td>
16173             <td class="entry_type">
16174                 <span class="entry_type_name">int32</span>
16175
16176               <span class="entry_type_visibility"> [java_public]</span>
16177
16178               <span class="entry_type_synthetic">[synthetic] </span>
16179
16180               <span class="entry_type_hwlevel">[legacy] </span>
16181
16182
16183
16184
16185             </td> <!-- entry_type -->
16186
16187             <td class="entry_description">
16188               <p>The maximum numbers of different types of output streams
16189 that can be configured and used simultaneously by a camera device
16190 for any processed (and stalling) formats.<wbr/></p>
16191             </td>
16192
16193             <td class="entry_units">
16194             </td>
16195
16196             <td class="entry_range">
16197               <p>&gt;= 1</p>
16198             </td>
16199
16200             <td class="entry_hal_version">
16201               <p>3.<wbr/>2</p>
16202             </td>
16203
16204             <td class="entry_tags">
16205             </td>
16206
16207           </tr>
16208           <tr class="entries_header">
16209             <th class="th_details" colspan="6">Details</th>
16210           </tr>
16211           <tr class="entry_cont">
16212             <td class="entry_details" colspan="6">
16213               <p>This value contains the max number of output simultaneous
16214 streams for any processed (but not-stalling) formats.<wbr/></p>
16215 <p>This lists the upper bound of the number of output streams supported by
16216 the camera device.<wbr/> Using more streams simultaneously may require more hardware and
16217 CPU resources that will consume more power.<wbr/> The image format for this kind of an output stream can
16218 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>
16219 <p>A processed and stalling format is defined as any non-RAW format with a stallDurations
16220 &gt; 0.<wbr/>  Typically only the <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">JPEG format</a> is a stalling format.<wbr/></p>
16221 <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
16222 processed format -- it will return a non-0 value for a stalling stream.<wbr/></p>
16223 <p>LEGACY devices will support up to 1 processing/<wbr/>stalling stream.<wbr/></p>
16224             </td>
16225           </tr>
16226
16227
16228           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16229            <!-- end of entry -->
16230         
16231                 
16232           <tr class="entry" id="static_android.request.maxNumReprocessStreams">
16233             <td class="entry_name
16234                 entry_name_deprecated
16235              " rowspan="3">
16236               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Reprocess<wbr/>Streams
16237             </td>
16238             <td class="entry_type">
16239                 <span class="entry_type_name">int32</span>
16240                 <span class="entry_type_container">x</span>
16241
16242                 <span class="entry_type_array">
16243                   1
16244                 </span>
16245               <span class="entry_type_visibility"> [system]</span>
16246
16247
16248
16249               <span class="entry_type_deprecated">[deprecated] </span>
16250
16251
16252
16253             </td> <!-- entry_type -->
16254
16255             <td class="entry_description">
16256               <p>How many reprocessing streams of any type
16257 can be allocated at the same time.<wbr/></p>
16258             </td>
16259
16260             <td class="entry_units">
16261             </td>
16262
16263             <td class="entry_range">
16264               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
16265               <p>&gt;= 0</p>
16266             </td>
16267
16268             <td class="entry_hal_version">
16269               <p>3.<wbr/>2</p>
16270             </td>
16271
16272             <td class="entry_tags">
16273               <ul class="entry_tags">
16274                   <li><a href="#tag_HAL2">HAL2</a></li>
16275               </ul>
16276             </td>
16277
16278           </tr>
16279           <tr class="entries_header">
16280             <th class="th_details" colspan="6">Details</th>
16281           </tr>
16282           <tr class="entry_cont">
16283             <td class="entry_details" colspan="6">
16284               <p>Only used by HAL2.<wbr/>x.<wbr/></p>
16285 <p>When set to 0,<wbr/> it means no reprocess stream is supported.<wbr/></p>
16286             </td>
16287           </tr>
16288
16289
16290           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16291            <!-- end of entry -->
16292         
16293                 
16294           <tr class="entry" id="static_android.request.maxNumInputStreams">
16295             <td class="entry_name
16296              " rowspan="5">
16297               android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams
16298             </td>
16299             <td class="entry_type">
16300                 <span class="entry_type_name">int32</span>
16301
16302               <span class="entry_type_visibility"> [java_public]</span>
16303
16304
16305               <span class="entry_type_hwlevel">[full] </span>
16306
16307
16308
16309
16310             </td> <!-- entry_type -->
16311
16312             <td class="entry_description">
16313               <p>The maximum numbers of any type of input streams
16314 that can be configured and used simultaneously by a camera device.<wbr/></p>
16315             </td>
16316
16317             <td class="entry_units">
16318             </td>
16319
16320             <td class="entry_range">
16321               <p>0 or 1.<wbr/></p>
16322             </td>
16323
16324             <td class="entry_hal_version">
16325               <p>3.<wbr/>2</p>
16326             </td>
16327
16328             <td class="entry_tags">
16329               <ul class="entry_tags">
16330                   <li><a href="#tag_REPROC">REPROC</a></li>
16331               </ul>
16332             </td>
16333
16334           </tr>
16335           <tr class="entries_header">
16336             <th class="th_details" colspan="6">Details</th>
16337           </tr>
16338           <tr class="entry_cont">
16339             <td class="entry_details" colspan="6">
16340               <p>When set to 0,<wbr/> it means no input stream is supported.<wbr/></p>
16341 <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
16342 input stream,<wbr/> there must be at least one output stream configured to to receive the
16343 reprocessed images.<wbr/></p>
16344 <p>When an input stream and some output streams are used in a reprocessing request,<wbr/>
16345 only the input buffer will be used to produce these output stream buffers,<wbr/> and a
16346 new sensor image will not be captured.<wbr/></p>
16347 <p>For example,<wbr/> for Zero Shutter Lag (ZSL) still capture use case,<wbr/> the input
16348 stream image format will be PRIVATE,<wbr/> the associated output stream image format
16349 should be JPEG.<wbr/></p>
16350             </td>
16351           </tr>
16352
16353           <tr class="entries_header">
16354             <th class="th_details" colspan="6">HAL Implementation Details</th>
16355           </tr>
16356           <tr class="entry_cont">
16357             <td class="entry_details" colspan="6">
16358               <p>For the reprocessing flow and controls,<wbr/> see
16359 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more details.<wbr/></p>
16360             </td>
16361           </tr>
16362
16363           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16364            <!-- end of entry -->
16365         
16366                 
16367           <tr class="entry" id="static_android.request.pipelineMaxDepth">
16368             <td class="entry_name
16369              " rowspan="5">
16370               android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth
16371             </td>
16372             <td class="entry_type">
16373                 <span class="entry_type_name">byte</span>
16374
16375               <span class="entry_type_visibility"> [public]</span>
16376
16377
16378               <span class="entry_type_hwlevel">[legacy] </span>
16379
16380
16381
16382
16383             </td> <!-- entry_type -->
16384
16385             <td class="entry_description">
16386               <p>Specifies the number of maximum pipeline stages a frame
16387 has to go through from when it's exposed to when it's available
16388 to the framework.<wbr/></p>
16389             </td>
16390
16391             <td class="entry_units">
16392             </td>
16393
16394             <td class="entry_range">
16395             </td>
16396
16397             <td class="entry_hal_version">
16398               <p>3.<wbr/>2</p>
16399             </td>
16400
16401             <td class="entry_tags">
16402             </td>
16403
16404           </tr>
16405           <tr class="entries_header">
16406             <th class="th_details" colspan="6">Details</th>
16407           </tr>
16408           <tr class="entry_cont">
16409             <td class="entry_details" colspan="6">
16410               <p>A typical minimum value for this is 2 (one stage to expose,<wbr/>
16411 one stage to readout) from the sensor.<wbr/> The ISP then usually adds
16412 its own stages to do custom HW processing.<wbr/> Further stages may be
16413 added by SW processing.<wbr/></p>
16414 <p>Depending on what settings are used (e.<wbr/>g.<wbr/> YUV,<wbr/> JPEG) and what
16415 processing is enabled (e.<wbr/>g.<wbr/> face detection),<wbr/> the actual pipeline
16416 depth (specified by <a href="#dynamic_android.request.pipelineDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Depth</a>) may be less than
16417 the max pipeline depth.<wbr/></p>
16418 <p>A pipeline depth of X stages is equivalent to a pipeline latency of
16419 X frame intervals.<wbr/></p>
16420 <p>This value will normally be 8 or less,<wbr/> however,<wbr/> for high speed capture session,<wbr/>
16421 the max pipeline depth will be up to 8 x size of high speed capture request list.<wbr/></p>
16422             </td>
16423           </tr>
16424
16425           <tr class="entries_header">
16426             <th class="th_details" colspan="6">HAL Implementation Details</th>
16427           </tr>
16428           <tr class="entry_cont">
16429             <td class="entry_details" colspan="6">
16430               <p>This value should be 4 or less,<wbr/> expect for the high speed recording session,<wbr/> where the
16431 max batch sizes may be larger than 1.<wbr/></p>
16432             </td>
16433           </tr>
16434
16435           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16436            <!-- end of entry -->
16437         
16438                 
16439           <tr class="entry" id="static_android.request.partialResultCount">
16440             <td class="entry_name
16441              " rowspan="3">
16442               android.<wbr/>request.<wbr/>partial<wbr/>Result<wbr/>Count
16443             </td>
16444             <td class="entry_type">
16445                 <span class="entry_type_name">int32</span>
16446
16447               <span class="entry_type_visibility"> [public]</span>
16448
16449
16450
16451
16452
16453
16454             </td> <!-- entry_type -->
16455
16456             <td class="entry_description">
16457               <p>Defines how many sub-components
16458 a result will be composed of.<wbr/></p>
16459             </td>
16460
16461             <td class="entry_units">
16462             </td>
16463
16464             <td class="entry_range">
16465               <p>&gt;= 1</p>
16466             </td>
16467
16468             <td class="entry_hal_version">
16469               <p>3.<wbr/>2</p>
16470             </td>
16471
16472             <td class="entry_tags">
16473             </td>
16474
16475           </tr>
16476           <tr class="entries_header">
16477             <th class="th_details" colspan="6">Details</th>
16478           </tr>
16479           <tr class="entry_cont">
16480             <td class="entry_details" colspan="6">
16481               <p>In order to combat the pipeline latency,<wbr/> partial results
16482 may be delivered to the application layer from the camera device as
16483 soon as they are available.<wbr/></p>
16484 <p>Optional; defaults to 1.<wbr/> A value of 1 means that partial
16485 results are not supported,<wbr/> and only the final TotalCaptureResult will
16486 be produced by the camera device.<wbr/></p>
16487 <p>A typical use case for this might be: after requesting an
16488 auto-focus (AF) lock the new AF state might be available 50%
16489 of the way through the pipeline.<wbr/>  The camera device could
16490 then immediately dispatch this state via a partial result to
16491 the application,<wbr/> and the rest of the metadata via later
16492 partial results.<wbr/></p>
16493             </td>
16494           </tr>
16495
16496
16497           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16498            <!-- end of entry -->
16499         
16500                 
16501           <tr class="entry" id="static_android.request.availableCapabilities">
16502             <td class="entry_name
16503              " rowspan="5">
16504               android.<wbr/>request.<wbr/>available<wbr/>Capabilities
16505             </td>
16506             <td class="entry_type">
16507                 <span class="entry_type_name entry_type_name_enum">byte</span>
16508                 <span class="entry_type_container">x</span>
16509
16510                 <span class="entry_type_array">
16511                   n
16512                 </span>
16513               <span class="entry_type_visibility"> [public]</span>
16514
16515
16516               <span class="entry_type_hwlevel">[legacy] </span>
16517
16518
16519
16520                 <ul class="entry_type_enum">
16521                   <li>
16522                     <span class="entry_type_enum_name">BACKWARD_COMPATIBLE (v3.2)</span>
16523                     <span class="entry_type_enum_notes"><p>The minimal set of capabilities that every camera
16524 device (regardless of <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>)
16525 supports.<wbr/></p>
16526 <p>This capability is listed by all normal devices,<wbr/> and
16527 indicates that the camera device has a feature set
16528 that's comparable to the baseline requirements for the
16529 older android.<wbr/>hardware.<wbr/>Camera API.<wbr/></p>
16530 <p>Devices with the DEPTH_<wbr/>OUTPUT capability might not list this
16531 capability,<wbr/> indicating that they support only depth measurement,<wbr/>
16532 not standard color output.<wbr/></p></span>
16533                   </li>
16534                   <li>
16535                     <span class="entry_type_enum_name">MANUAL_SENSOR (v3.2)</span>
16536                     <span class="entry_type_enum_optional">[optional]</span>
16537                     <span class="entry_type_enum_notes"><p>The camera device can be manually controlled (3A algorithms such
16538 as auto-exposure,<wbr/> and auto-focus can be bypassed).<wbr/>
16539 The camera device supports basic manual control of the sensor image
16540 acquisition related stages.<wbr/> This means the following controls are
16541 guaranteed to be supported:</p>
16542 <ul>
16543 <li>Manual frame duration control<ul>
16544 <li><a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a></li>
16545 <li><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a></li>
16546 </ul>
16547 </li>
16548 <li>Manual exposure control<ul>
16549 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16550 <li><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></li>
16551 </ul>
16552 </li>
16553 <li>Manual sensitivity control<ul>
16554 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16555 <li><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></li>
16556 </ul>
16557 </li>
16558 <li>Manual lens control (if the lens is adjustable)<ul>
16559 <li>android.<wbr/>lens.<wbr/>*</li>
16560 </ul>
16561 </li>
16562 <li>Manual flash control (if a flash unit is present)<ul>
16563 <li>android.<wbr/>flash.<wbr/>*</li>
16564 </ul>
16565 </li>
16566 <li>Manual black level locking<ul>
16567 <li><a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a></li>
16568 </ul>
16569 </li>
16570 <li>Auto exposure lock<ul>
16571 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16572 </ul>
16573 </li>
16574 </ul>
16575 <p>If any of the above 3A algorithms are enabled,<wbr/> then the camera
16576 device will accurately report the values applied by 3A in the
16577 result.<wbr/></p>
16578 <p>A given camera device may also support additional manual sensor controls,<wbr/>
16579 but this capability only covers the above list of controls.<wbr/></p>
16580 <p>If this is supported,<wbr/> <a href="#static_android.scaler.streamConfigurationMap">android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map</a> will
16581 additionally return a min frame duration that is greater than
16582 zero for each supported size-format combination.<wbr/></p></span>
16583                   </li>
16584                   <li>
16585                     <span class="entry_type_enum_name">MANUAL_POST_PROCESSING (v3.2)</span>
16586                     <span class="entry_type_enum_optional">[optional]</span>
16587                     <span class="entry_type_enum_notes"><p>The camera device post-processing stages can be manually controlled.<wbr/>
16588 The camera device supports basic manual control of the image post-processing
16589 stages.<wbr/> This means the following controls are guaranteed to be supported:</p>
16590 <ul>
16591 <li>
16592 <p>Manual tonemap control</p>
16593 <ul>
16594 <li><a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a></li>
16595 <li><a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></li>
16596 <li><a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></li>
16597 <li><a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a></li>
16598 <li><a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a></li>
16599 </ul>
16600 </li>
16601 <li>
16602 <p>Manual white balance control</p>
16603 <ul>
16604 <li><a href="#controls_android.colorCorrection.transform">android.<wbr/>color<wbr/>Correction.<wbr/>transform</a></li>
16605 <li><a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a></li>
16606 </ul>
16607 </li>
16608 <li>Manual lens shading map control<ul>
16609 <li><a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></li>
16610 <li><a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></li>
16611 <li><a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a></li>
16612 <li><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a></li>
16613 </ul>
16614 </li>
16615 <li>Manual aberration correction control (if aberration correction is supported)<ul>
16616 <li><a href="#controls_android.colorCorrection.aberrationMode">android.<wbr/>color<wbr/>Correction.<wbr/>aberration<wbr/>Mode</a></li>
16617 <li><a href="#static_android.colorCorrection.availableAberrationModes">android.<wbr/>color<wbr/>Correction.<wbr/>available<wbr/>Aberration<wbr/>Modes</a></li>
16618 </ul>
16619 </li>
16620 <li>Auto white balance lock<ul>
16621 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16622 </ul>
16623 </li>
16624 </ul>
16625 <p>If auto white balance is enabled,<wbr/> then the camera device
16626 will accurately report the values applied by AWB in the result.<wbr/></p>
16627 <p>A given camera device may also support additional post-processing
16628 controls,<wbr/> but this capability only covers the above list of controls.<wbr/></p></span>
16629                   </li>
16630                   <li>
16631                     <span class="entry_type_enum_name">RAW (v3.2)</span>
16632                     <span class="entry_type_enum_optional">[optional]</span>
16633                     <span class="entry_type_enum_notes"><p>The camera device supports outputting RAW buffers and
16634 metadata for interpreting them.<wbr/></p>
16635 <p>Devices supporting the RAW capability allow both for
16636 saving DNG files,<wbr/> and for direct application processing of
16637 raw sensor images.<wbr/></p>
16638 <ul>
16639 <li>RAW_<wbr/>SENSOR is supported as an output format.<wbr/></li>
16640 <li>The maximum available resolution for RAW_<wbr/>SENSOR streams
16641   will match either the value in
16642   <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
16643   <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
16644 <li>All DNG-related optional metadata entries are provided
16645   by the camera device.<wbr/></li>
16646 </ul></span>
16647                   </li>
16648                   <li>
16649                     <span class="entry_type_enum_name">PRIVATE_REPROCESSING (v3.2)</span>
16650                     <span class="entry_type_enum_optional">[optional]</span>
16651                     <span class="entry_type_enum_notes"><p>The camera device supports the Zero Shutter Lag reprocessing use case.<wbr/></p>
16652 <ul>
16653 <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>
16654 <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/>
16655   that is,<wbr/> <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> is included in the lists of
16656   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>
16657 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16658   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>
16659 <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>
16660 <li>Using <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> does not cause a frame rate drop
16661   relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16662 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> will be reprocessable into both
16663   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#YUV_420_888">Image<wbr/>Format#YUV_<wbr/>420_<wbr/>888</a> and
16664   <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> formats.<wbr/></li>
16665 <li>The maximum available resolution for PRIVATE streams
16666   (both input/<wbr/>output) will match the maximum available
16667   resolution of JPEG streams.<wbr/></li>
16668 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16669 <li>Only below controls are effective for reprocessing requests and
16670   will be present in capture results,<wbr/> other controls in reprocess
16671   requests will be ignored by the camera device.<wbr/><ul>
16672 <li>android.<wbr/>jpeg.<wbr/>*</li>
16673 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16674 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16675 </ul>
16676 </li>
16677 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16678   <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a> will both list ZERO_<wbr/>SHUTTER_<wbr/>LAG as a supported mode.<wbr/></li>
16679 </ul></span>
16680                   </li>
16681                   <li>
16682                     <span class="entry_type_enum_name">READ_SENSOR_SETTINGS (v3.2)</span>
16683                     <span class="entry_type_enum_optional">[optional]</span>
16684                     <span class="entry_type_enum_notes"><p>The camera device supports accurately reporting the sensor settings for many of
16685 the sensor controls while the built-in 3A algorithm is running.<wbr/>  This allows
16686 reporting of sensor settings even when these settings cannot be manually changed.<wbr/></p>
16687 <p>The values reported for the following controls are guaranteed to be available
16688 in the CaptureResult,<wbr/> including when 3A is enabled:</p>
16689 <ul>
16690 <li>Exposure control<ul>
16691 <li><a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a></li>
16692 </ul>
16693 </li>
16694 <li>Sensitivity control<ul>
16695 <li><a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a></li>
16696 </ul>
16697 </li>
16698 <li>Lens controls (if the lens is adjustable)<ul>
16699 <li><a href="#controls_android.lens.focusDistance">android.<wbr/>lens.<wbr/>focus<wbr/>Distance</a></li>
16700 <li><a href="#controls_android.lens.aperture">android.<wbr/>lens.<wbr/>aperture</a></li>
16701 </ul>
16702 </li>
16703 </ul>
16704 <p>This capability is a subset of the MANUAL_<wbr/>SENSOR control capability,<wbr/> and will
16705 always be included if the MANUAL_<wbr/>SENSOR capability is available.<wbr/></p></span>
16706                   </li>
16707                   <li>
16708                     <span class="entry_type_enum_name">BURST_CAPTURE (v3.2)</span>
16709                     <span class="entry_type_enum_optional">[optional]</span>
16710                     <span class="entry_type_enum_notes"><p>The camera device supports capturing high-resolution images at &gt;= 20 frames per
16711 second,<wbr/> in at least the uncompressed YUV format,<wbr/> when post-processing settings are set
16712 to FAST.<wbr/> Additionally,<wbr/> maximum-resolution images can be captured at &gt;= 10 frames
16713 per second.<wbr/>  Here,<wbr/> 'high resolution' means at least 8 megapixels,<wbr/> or the maximum
16714 resolution of the device,<wbr/> whichever is smaller.<wbr/></p></span>
16715                   </li>
16716                   <li>
16717                     <span class="entry_type_enum_name">YUV_REPROCESSING (v3.2)</span>
16718                     <span class="entry_type_enum_optional">[optional]</span>
16719                     <span class="entry_type_enum_notes"><p>The camera device supports the YUV_<wbr/>420_<wbr/>888 reprocessing use case,<wbr/> similar as
16720 PRIVATE_<wbr/>REPROCESSING,<wbr/> This capability requires the camera device to support the
16721 following:</p>
16722 <ul>
16723 <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>
16724 <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
16725   format,<wbr/> that is,<wbr/> YUV_<wbr/>420_<wbr/>888 is included in the lists of 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>
16726 <li><a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getValidOutputFormatsForInput">StreamConfigurationMap#getValidOutputFormatsForInput</a>
16727   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>
16728 <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>
16729 <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
16730   drop relative to the sensor's maximum capture rate (at that resolution).<wbr/></li>
16731 <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
16732   <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>
16733 <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
16734   maximum available resolution of <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a> streams.<wbr/></li>
16735 <li>Static metadata <a href="#static_android.reprocess.maxCaptureStall">android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall</a>.<wbr/></li>
16736 <li>Only the below controls are effective for reprocessing requests and will be present
16737   in capture results.<wbr/> The reprocess requests are from the original capture results
16738   that 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> output buffers.<wbr/>  All other controls in the
16739   reprocess requests will be ignored by the camera device.<wbr/><ul>
16740 <li>android.<wbr/>jpeg.<wbr/>*</li>
16741 <li><a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a></li>
16742 <li><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a></li>
16743 <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor</a></li>
16744 </ul>
16745 </li>
16746 <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.<wbr/>noise<wbr/>Reduction.<wbr/>available<wbr/>Noise<wbr/>Reduction<wbr/>Modes</a> and
16747   <a href="#static_android.edge.availableEdgeModes">android.<wbr/>edge.<wbr/>available<wbr/>Edge<wbr/>Modes</a> will both list ZERO_<wbr/>SHUTTER_<wbr/>LAG as a supported mode.<wbr/></li>
16748 </ul></span>
16749                   </li>
16750                   <li>
16751                     <span class="entry_type_enum_name">DEPTH_OUTPUT (v3.2)</span>
16752                     <span class="entry_type_enum_optional">[optional]</span>
16753                     <span class="entry_type_enum_notes"><p>The camera device can produce depth measurements from its field of view.<wbr/></p>
16754 <p>This capability requires the camera device to support the following:</p>
16755 <ul>
16756 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#DEPTH16">ImageFormat#DEPTH16</a> is supported as
16757   an output format.<wbr/></li>
16758 <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
16759   optionally supported as an output format.<wbr/></li>
16760 <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/> will
16761   list the following calibration metadata entries in both <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>
16762   and <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>:<ul>
16763 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
16764 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
16765 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
16766 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
16767 </ul>
16768 </li>
16769 <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>
16770 <li>As of Android P,<wbr/> the <a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> entry is listed by this device.<wbr/></li>
16771 <li>A LIMITED camera with only the DEPTH_<wbr/>OUTPUT capability does not have to support
16772   normal YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> and PRIV-format outputs.<wbr/> It only has to support the DEPTH16
16773   format.<wbr/></li>
16774 </ul>
16775 <p>Generally,<wbr/> depth output operates at a slower frame rate than standard color capture,<wbr/>
16776 so the DEPTH16 and DEPTH_<wbr/>POINT_<wbr/>CLOUD formats will commonly have a stall duration that
16777 should be accounted for (see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>).<wbr/>
16778 On a device that supports both depth and color-based output,<wbr/> to enable smooth preview,<wbr/>
16779 using a repeating burst is recommended,<wbr/> where a depth-output target is only included
16780 once every N frames,<wbr/> where N is the ratio between preview output rate and depth output
16781 rate,<wbr/> including depth stall time.<wbr/></p></span>
16782                   </li>
16783                   <li>
16784                     <span class="entry_type_enum_name">CONSTRAINED_HIGH_SPEED_VIDEO (v3.2)</span>
16785                     <span class="entry_type_enum_optional">[optional]</span>
16786                     <span class="entry_type_enum_notes"><p>The device supports constrained high speed video recording (frame rate &gt;=120fps) use
16787 case.<wbr/> The camera device will support high speed capture session created by <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>,<wbr/> which
16788 only accepts high speed request lists created by <a href="https://developer.android.com/reference/android/hardware/camera2/CameraConstrainedHighSpeedCaptureSession.html#createHighSpeedRequestList">CameraConstrainedHighSpeedCaptureSession#createHighSpeedRequestList</a>.<wbr/></p>
16789 <p>A camera device can still support high speed video streaming by advertising the high
16790 speed FPS ranges in <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a>.<wbr/> For this case,<wbr/> all
16791 normal capture request per frame control and synchronization requirements will apply
16792 to the high speed fps ranges,<wbr/> the same as all other fps ranges.<wbr/> This capability
16793 describes the capability of a specialized operating mode with many limitations (see
16794 below),<wbr/> which is only targeted at high speed video recording.<wbr/></p>
16795 <p>The supported high speed video sizes and fps ranges are specified in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/>
16796 To get desired output frame rates,<wbr/> the application is only allowed to select video
16797 size and FPS range combinations provided by <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/>  The
16798 fps range can be controlled via <a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a>.<wbr/></p>
16799 <p>In this capability,<wbr/> the camera device will override aeMode,<wbr/> awbMode,<wbr/> and afMode to
16800 ON,<wbr/> AUTO,<wbr/> and CONTINUOUS_<wbr/>VIDEO,<wbr/> respectively.<wbr/> All post-processing block mode
16801 controls will be overridden to be FAST.<wbr/> Therefore,<wbr/> no manual control of capture
16802 and post-processing parameters is possible.<wbr/> All other controls operate the
16803 same as when <a href="#controls_android.control.mode">android.<wbr/>control.<wbr/>mode</a> == AUTO.<wbr/> This means that all other
16804 android.<wbr/>control.<wbr/>* fields continue to work,<wbr/> such as</p>
16805 <ul>
16806 <li><a href="#controls_android.control.aeTargetFpsRange">android.<wbr/>control.<wbr/>ae<wbr/>Target<wbr/>Fps<wbr/>Range</a></li>
16807 <li><a href="#controls_android.control.aeExposureCompensation">android.<wbr/>control.<wbr/>ae<wbr/>Exposure<wbr/>Compensation</a></li>
16808 <li><a href="#controls_android.control.aeLock">android.<wbr/>control.<wbr/>ae<wbr/>Lock</a></li>
16809 <li><a href="#controls_android.control.awbLock">android.<wbr/>control.<wbr/>awb<wbr/>Lock</a></li>
16810 <li><a href="#controls_android.control.effectMode">android.<wbr/>control.<wbr/>effect<wbr/>Mode</a></li>
16811 <li><a href="#controls_android.control.aeRegions">android.<wbr/>control.<wbr/>ae<wbr/>Regions</a></li>
16812 <li><a href="#controls_android.control.afRegions">android.<wbr/>control.<wbr/>af<wbr/>Regions</a></li>
16813 <li><a href="#controls_android.control.awbRegions">android.<wbr/>control.<wbr/>awb<wbr/>Regions</a></li>
16814 <li><a href="#controls_android.control.afTrigger">android.<wbr/>control.<wbr/>af<wbr/>Trigger</a></li>
16815 <li><a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a></li>
16816 </ul>
16817 <p>Outside of android.<wbr/>control.<wbr/>*,<wbr/> the following controls will work:</p>
16818 <ul>
16819 <li><a href="#controls_android.flash.mode">android.<wbr/>flash.<wbr/>mode</a> (TORCH mode only,<wbr/> automatic flash for still capture will not
16820 work since aeMode is ON)</li>
16821 <li><a href="#controls_android.lens.opticalStabilizationMode">android.<wbr/>lens.<wbr/>optical<wbr/>Stabilization<wbr/>Mode</a> (if it is supported)</li>
16822 <li><a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a></li>
16823 <li><a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> (if it is supported)</li>
16824 </ul>
16825 <p>For high speed recording use case,<wbr/> the actual maximum supported frame rate may
16826 be lower than what camera can output,<wbr/> depending on the destination Surfaces for
16827 the image data.<wbr/> For example,<wbr/> if the destination surface is from video encoder,<wbr/>
16828 the application need check if the video encoder is capable of supporting the
16829 high frame rate for a given video size,<wbr/> or it will end up with lower recording
16830 frame rate.<wbr/> If the destination surface is from preview window,<wbr/> the actual preview frame
16831 rate will be bounded by the screen refresh rate.<wbr/></p>
16832 <p>The camera device will only support up to 2 high speed simultaneous output surfaces
16833 (preview and recording surfaces) in this mode.<wbr/> Above controls will be effective only
16834 if all of below conditions are true:</p>
16835 <ul>
16836 <li>The application creates a camera capture session with no more than 2 surfaces via
16837 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>.<wbr/> The
16838 targeted surfaces must be preview surface (either from <a href="https://developer.android.com/reference/android/view/SurfaceView.html">SurfaceView</a> or <a href="https://developer.android.com/reference/android/graphics/SurfaceTexture.html">SurfaceTexture</a>) or recording
16839 surface(either from <a href="https://developer.android.com/reference/android/media/MediaRecorder.html#getSurface">MediaRecorder#getSurface</a> or <a href="https://developer.android.com/reference/android/media/MediaCodec.html#createInputSurface">MediaCodec#createInputSurface</a>).<wbr/></li>
16840 <li>The stream sizes are selected from the sizes reported by
16841 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoSizes">StreamConfigurationMap#getHighSpeedVideoSizes</a>.<wbr/></li>
16842 <li>The FPS ranges are selected from <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getHighSpeedVideoFpsRanges">StreamConfigurationMap#getHighSpeedVideoFpsRanges</a>.<wbr/></li>
16843 </ul>
16844 <p>When above conditions are NOT satistied,<wbr/>
16845 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createConstrainedHighSpeedCaptureSession">CameraDevice#createConstrainedHighSpeedCaptureSession</a>
16846 will fail.<wbr/></p>
16847 <p>Switching to a FPS range that has different maximum FPS may trigger some camera device
16848 reconfigurations,<wbr/> which may introduce extra latency.<wbr/> It is recommended that
16849 the application avoids unnecessary maximum target FPS changes as much as possible
16850 during high speed streaming.<wbr/></p></span>
16851                   </li>
16852                   <li>
16853                     <span class="entry_type_enum_name">MOTION_TRACKING (v3.3)</span>
16854                     <span class="entry_type_enum_optional">[optional]</span>
16855                     <span class="entry_type_enum_notes"><p>The device supports controls and metadata required for accurate motion tracking for
16856 use cases such as augmented reality,<wbr/> electronic image stabilization,<wbr/> and so on.<wbr/></p>
16857 <p>This means this camera device has accurate optical calibration and timestamps relative
16858 to the inertial sensors.<wbr/></p>
16859 <p>This capability requires the camera device to support the following:</p>
16860 <ul>
16861 <li>Capture request templates <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#TEMPLATE_MOTION_TRACKING_PREVIEW">Camera<wbr/>Device#TEMPLATE_<wbr/>MOTION_<wbr/>TRACKING_<wbr/>PREVIEW</a> and <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#TEMPLATE_MOTION_TRACKING_BEST">Camera<wbr/>Device#TEMPLATE_<wbr/>MOTION_<wbr/>TRACKING_<wbr/>BEST</a> are defined.<wbr/></li>
16862 <li>The stream configurations listed in <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a> for MOTION_<wbr/>TRACKING are
16863   supported,<wbr/> either at 30 or 60fps maximum frame rate.<wbr/></li>
16864 <li>The following camera characteristics and capture result metadata are provided:<ul>
16865 <li><a href="#static_android.lens.intrinsicCalibration">android.<wbr/>lens.<wbr/>intrinsic<wbr/>Calibration</a></li>
16866 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a></li>
16867 <li><a href="#static_android.lens.poseRotation">android.<wbr/>lens.<wbr/>pose<wbr/>Rotation</a></li>
16868 <li><a href="#static_android.lens.poseTranslation">android.<wbr/>lens.<wbr/>pose<wbr/>Translation</a></li>
16869 <li><a href="#static_android.lens.poseReference">android.<wbr/>lens.<wbr/>pose<wbr/>Reference</a> with value GYROSCOPE</li>
16870 </ul>
16871 </li>
16872 <li>The <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> field has value <code>REALTIME</code>.<wbr/> When compared to
16873   timestamps from the device's gyroscopes,<wbr/> the clock difference for events occuring at
16874   the same actual time instant will be less than 1 ms.<wbr/></li>
16875 <li>The value of the <a href="#dynamic_android.sensor.rollingShutterSkew">android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew</a> field is accurate to within 1 ms.<wbr/></li>
16876 <li>The value of <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> is guaranteed to be available in the
16877   capture result.<wbr/></li>
16878 <li>The <a href="#controls_android.control.captureIntent">android.<wbr/>control.<wbr/>capture<wbr/>Intent</a> control supports MOTION_<wbr/>TRACKING to limit maximum
16879   exposure to 20 milliseconds.<wbr/></li>
16880 <li>The stream configurations required for MOTION_<wbr/>TRACKING (listed at <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">CameraDevice#createCaptureSession</a>) can operate at least at
16881   30fps; optionally,<wbr/> they can operate at 60fps,<wbr/> and '[60,<wbr/> 60]' is listed in
16882   <a href="#static_android.control.aeAvailableTargetFpsRanges">android.<wbr/>control.<wbr/>ae<wbr/>Available<wbr/>Target<wbr/>Fps<wbr/>Ranges</a>.<wbr/></li>
16883 </ul></span>
16884                   </li>
16885                 </ul>
16886
16887             </td> <!-- entry_type -->
16888
16889             <td class="entry_description">
16890               <p>List of capabilities that this camera device
16891 advertises as fully supporting.<wbr/></p>
16892             </td>
16893
16894             <td class="entry_units">
16895             </td>
16896
16897             <td class="entry_range">
16898             </td>
16899
16900             <td class="entry_hal_version">
16901               <p>3.<wbr/>2</p>
16902             </td>
16903
16904             <td class="entry_tags">
16905             </td>
16906
16907           </tr>
16908           <tr class="entries_header">
16909             <th class="th_details" colspan="6">Details</th>
16910           </tr>
16911           <tr class="entry_cont">
16912             <td class="entry_details" colspan="6">
16913               <p>A capability is a contract that the camera device makes in order
16914 to be able to satisfy one or more use cases.<wbr/></p>
16915 <p>Listing a capability guarantees that the whole set of features
16916 required to support a common use will all be available.<wbr/></p>
16917 <p>Using a subset of the functionality provided by an unsupported
16918 capability may be possible on a specific camera device implementation;
16919 to do this query each of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a>,<wbr/>
16920 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a>,<wbr/>
16921 <a href="#static_android.request.availableCharacteristicsKeys">android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys</a>.<wbr/></p>
16922 <p>The following capabilities are guaranteed to be available on
16923 <a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> <code>==</code> FULL devices:</p>
16924 <ul>
16925 <li>MANUAL_<wbr/>SENSOR</li>
16926 <li>MANUAL_<wbr/>POST_<wbr/>PROCESSING</li>
16927 </ul>
16928 <p>Other capabilities may be available on either FULL or LIMITED
16929 devices,<wbr/> but the application should query this key to be sure.<wbr/></p>
16930             </td>
16931           </tr>
16932
16933           <tr class="entries_header">
16934             <th class="th_details" colspan="6">HAL Implementation Details</th>
16935           </tr>
16936           <tr class="entry_cont">
16937             <td class="entry_details" colspan="6">
16938               <p>Additional constraint details per-capability will be available
16939 in the Compatibility Test Suite.<wbr/></p>
16940 <p>Minimum baseline requirements required for the
16941 BACKWARD_<wbr/>COMPATIBLE capability are not explicitly listed.<wbr/>
16942 Instead refer to "BC" tags and the camera CTS tests in the
16943 android.<wbr/>hardware.<wbr/>camera2.<wbr/>cts package.<wbr/></p>
16944 <p>Listed controls that can be either request or result (e.<wbr/>g.<wbr/>
16945 <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a>) must be available both in the
16946 request and the result in order to be considered to be
16947 capability-compliant.<wbr/></p>
16948 <p>For example,<wbr/> if the HAL claims to support MANUAL control,<wbr/>
16949 then exposure time must be configurable via the request <em>and</em>
16950 the actual exposure applied must be available via
16951 the result.<wbr/></p>
16952 <p>If MANUAL_<wbr/>SENSOR is omitted,<wbr/> the HAL may choose to omit the
16953 <a href="#static_android.scaler.availableMinFrameDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations</a> static property entirely.<wbr/></p>
16954 <p>For PRIVATE_<wbr/>REPROCESSING and YUV_<wbr/>REPROCESSING capabilities,<wbr/> see
16955 hardware/<wbr/>libhardware/<wbr/>include/<wbr/>hardware/<wbr/>camera3.<wbr/>h Section 10 for more information.<wbr/></p>
16956 <p>Devices that support the MANUAL_<wbr/>SENSOR capability must support the
16957 CAMERA3_<wbr/>TEMPLATE_<wbr/>MANUAL template defined in camera3.<wbr/>h.<wbr/></p>
16958 <p>Devices that support the PRIVATE_<wbr/>REPROCESSING capability or the
16959 YUV_<wbr/>REPROCESSING capability must support the
16960 CAMERA3_<wbr/>TEMPLATE_<wbr/>ZERO_<wbr/>SHUTTER_<wbr/>LAG template defined in camera3.<wbr/>h.<wbr/></p>
16961 <p>For DEPTH_<wbr/>OUTPUT,<wbr/> the depth-format keys
16962 <a href="#static_android.depth.availableDepthStreamConfigurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations</a>,<wbr/>
16963 <a href="#static_android.depth.availableDepthMinFrameDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations</a>,<wbr/>
16964 <a href="#static_android.depth.availableDepthStallDurations">android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations</a> must be available,<wbr/> in
16965 addition to the other keys explicitly mentioned in the DEPTH_<wbr/>OUTPUT
16966 enum notes.<wbr/> The entry <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a> must be available
16967 if the DEPTH_<wbr/>POINT_<wbr/>CLOUD format is supported (HAL pixel format BLOB,<wbr/> dataspace
16968 DEPTH).<wbr/></p>
16969             </td>
16970           </tr>
16971
16972           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
16973            <!-- end of entry -->
16974         
16975                 
16976           <tr class="entry" id="static_android.request.availableRequestKeys">
16977             <td class="entry_name
16978              " rowspan="5">
16979               android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys
16980             </td>
16981             <td class="entry_type">
16982                 <span class="entry_type_name">int32</span>
16983                 <span class="entry_type_container">x</span>
16984
16985                 <span class="entry_type_array">
16986                   n
16987                 </span>
16988               <span class="entry_type_visibility"> [ndk_public]</span>
16989
16990
16991               <span class="entry_type_hwlevel">[legacy] </span>
16992
16993
16994
16995
16996             </td> <!-- entry_type -->
16997
16998             <td class="entry_description">
16999               <p>A list of all keys that the camera device has available
17000 to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureRequest.html">CaptureRequest</a>.<wbr/></p>
17001             </td>
17002
17003             <td class="entry_units">
17004             </td>
17005
17006             <td class="entry_range">
17007             </td>
17008
17009             <td class="entry_hal_version">
17010               <p>3.<wbr/>2</p>
17011             </td>
17012
17013             <td class="entry_tags">
17014             </td>
17015
17016           </tr>
17017           <tr class="entries_header">
17018             <th class="th_details" colspan="6">Details</th>
17019           </tr>
17020           <tr class="entry_cont">
17021             <td class="entry_details" colspan="6">
17022               <p>Attempting to set a key into a CaptureRequest that is not
17023 listed here will result in an invalid request and will be rejected
17024 by the camera device.<wbr/></p>
17025 <p>This field can be used to query the feature set of a camera device
17026 at a more granular level than capabilities.<wbr/> This is especially
17027 important for optional keys that are not listed under any capability
17028 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17029             </td>
17030           </tr>
17031
17032           <tr class="entries_header">
17033             <th class="th_details" colspan="6">HAL Implementation Details</th>
17034           </tr>
17035           <tr class="entry_cont">
17036             <td class="entry_details" colspan="6">
17037               <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17038 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17039 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17040 vendor extensions API and not against this field.<wbr/></p>
17041 <p>The HAL must not consume any request tags that are not listed either
17042 here or in the vendor tag list.<wbr/></p>
17043 <p>The public camera2 API will always make the vendor tags visible
17044 via
17045 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
17046             </td>
17047           </tr>
17048
17049           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17050            <!-- end of entry -->
17051         
17052                 
17053           <tr class="entry" id="static_android.request.availableResultKeys">
17054             <td class="entry_name
17055              " rowspan="5">
17056               android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys
17057             </td>
17058             <td class="entry_type">
17059                 <span class="entry_type_name">int32</span>
17060                 <span class="entry_type_container">x</span>
17061
17062                 <span class="entry_type_array">
17063                   n
17064                 </span>
17065               <span class="entry_type_visibility"> [ndk_public]</span>
17066
17067
17068               <span class="entry_type_hwlevel">[legacy] </span>
17069
17070
17071
17072
17073             </td> <!-- entry_type -->
17074
17075             <td class="entry_description">
17076               <p>A list of all keys that the camera device has available to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html">CaptureResult</a>.<wbr/></p>
17077             </td>
17078
17079             <td class="entry_units">
17080             </td>
17081
17082             <td class="entry_range">
17083             </td>
17084
17085             <td class="entry_hal_version">
17086               <p>3.<wbr/>2</p>
17087             </td>
17088
17089             <td class="entry_tags">
17090             </td>
17091
17092           </tr>
17093           <tr class="entries_header">
17094             <th class="th_details" colspan="6">Details</th>
17095           </tr>
17096           <tr class="entry_cont">
17097             <td class="entry_details" colspan="6">
17098               <p>Attempting to get a key from a CaptureResult that is not
17099 listed here will always return a <code>null</code> value.<wbr/> Getting a key from
17100 a CaptureResult that is listed here will generally never return a <code>null</code>
17101 value.<wbr/></p>
17102 <p>The following keys may return <code>null</code> unless they are enabled:</p>
17103 <ul>
17104 <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>
17105 </ul>
17106 <p>(Those sometimes-null keys will nevertheless be listed here
17107 if they are available.<wbr/>)</p>
17108 <p>This field can be used to query the feature set of a camera device
17109 at a more granular level than capabilities.<wbr/> This is especially
17110 important for optional keys that are not listed under any capability
17111 in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
17112             </td>
17113           </tr>
17114
17115           <tr class="entries_header">
17116             <th class="th_details" colspan="6">HAL Implementation Details</th>
17117           </tr>
17118           <tr class="entry_cont">
17119             <td class="entry_details" colspan="6">
17120               <p>Tags listed here must always have an entry in the result metadata,<wbr/>
17121 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17122 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17123 <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17124 use the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17125 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17126 vendor extensions API and not against this field.<wbr/></p>
17127 <p>The HAL must not produce any result tags that are not listed either
17128 here or in the vendor tag list.<wbr/></p>
17129 <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>
17130             </td>
17131           </tr>
17132
17133           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17134            <!-- end of entry -->
17135         
17136                 
17137           <tr class="entry" id="static_android.request.availableCharacteristicsKeys">
17138             <td class="entry_name
17139              " rowspan="5">
17140               android.<wbr/>request.<wbr/>available<wbr/>Characteristics<wbr/>Keys
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                   n
17148                 </span>
17149               <span class="entry_type_visibility"> [ndk_public]</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>A list of all keys that the camera device has available to use with <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
17161             </td>
17162
17163             <td class="entry_units">
17164             </td>
17165
17166             <td class="entry_range">
17167             </td>
17168
17169             <td class="entry_hal_version">
17170               <p>3.<wbr/>2</p>
17171             </td>
17172
17173             <td class="entry_tags">
17174             </td>
17175
17176           </tr>
17177           <tr class="entries_header">
17178             <th class="th_details" colspan="6">Details</th>
17179           </tr>
17180           <tr class="entry_cont">
17181             <td class="entry_details" colspan="6">
17182               <p>This entry follows the same rules as
17183 <a href="#static_android.request.availableResultKeys">android.<wbr/>request.<wbr/>available<wbr/>Result<wbr/>Keys</a> (except that it applies for
17184 CameraCharacteristics instead of CaptureResult).<wbr/> See above for more
17185 details.<wbr/></p>
17186             </td>
17187           </tr>
17188
17189           <tr class="entries_header">
17190             <th class="th_details" colspan="6">HAL Implementation Details</th>
17191           </tr>
17192           <tr class="entry_cont">
17193             <td class="entry_details" colspan="6">
17194               <p>Keys listed here must always have an entry in the static info metadata,<wbr/>
17195 even if that size is 0 elements.<wbr/> Only array-type tags (e.<wbr/>g.<wbr/> lists,<wbr/>
17196 matrices,<wbr/> strings) are allowed to have 0 elements.<wbr/></p>
17197 <p>Vendor tags can listed here.<wbr/> Vendor tag metadata should also use
17198 the extensions C api (refer to camera3.<wbr/>h for more details).<wbr/></p>
17199 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17200 vendor extensions API and not against this field.<wbr/></p>
17201 <p>The HAL must not have any tags in its static info that are not listed
17202 either here or in the vendor tag list.<wbr/></p>
17203 <p>The public camera2 API will always make the vendor tags visible
17204 via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getKeys">CameraCharacteristics#getKeys</a>.<wbr/></p>
17205             </td>
17206           </tr>
17207
17208           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17209            <!-- end of entry -->
17210         
17211                 
17212           <tr class="entry" id="static_android.request.availableSessionKeys">
17213             <td class="entry_name
17214              " rowspan="5">
17215               android.<wbr/>request.<wbr/>available<wbr/>Session<wbr/>Keys
17216             </td>
17217             <td class="entry_type">
17218                 <span class="entry_type_name">int32</span>
17219                 <span class="entry_type_container">x</span>
17220
17221                 <span class="entry_type_array">
17222                   n
17223                 </span>
17224               <span class="entry_type_visibility"> [ndk_public]</span>
17225
17226
17227               <span class="entry_type_hwlevel">[legacy] </span>
17228
17229
17230
17231
17232             </td> <!-- entry_type -->
17233
17234             <td class="entry_description">
17235               <p>A subset of the available request keys that the camera device
17236 can pass as part of the capture session initialization.<wbr/></p>
17237             </td>
17238
17239             <td class="entry_units">
17240             </td>
17241
17242             <td class="entry_range">
17243             </td>
17244
17245             <td class="entry_hal_version">
17246               <p>3.<wbr/>3</p>
17247             </td>
17248
17249             <td class="entry_tags">
17250             </td>
17251
17252           </tr>
17253           <tr class="entries_header">
17254             <th class="th_details" colspan="6">Details</th>
17255           </tr>
17256           <tr class="entry_cont">
17257             <td class="entry_details" colspan="6">
17258               <p>This is a subset of <a href="#static_android.request.availableRequestKeys">android.<wbr/>request.<wbr/>available<wbr/>Request<wbr/>Keys</a> which
17259 contains a list of keys that are difficult to apply per-frame and
17260 can result in unexpected delays when modified during the capture session
17261 lifetime.<wbr/> Typical examples include parameters that require a
17262 time-consuming hardware re-configuration or internal camera pipeline
17263 change.<wbr/> For performance reasons we advise clients to pass their initial
17264 values as part of
17265 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17266 Once the camera capture session is enabled it is also recommended to avoid
17267 changing them from their initial values set in
17268 <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/>
17269 Control over session parameters can still be exerted in capture requests
17270 but clients should be aware and expect delays during their application.<wbr/>
17271 An example usage scenario could look like this:</p>
17272 <ul>
17273 <li>The camera client starts by quering the session parameter key list via
17274   <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></li>
17275 <li>Before triggering the capture session create sequence,<wbr/> a capture request
17276   must be built via
17277   <a href="https://developer.android.com/reference/CameraDevice.html#createCaptureRequest">CameraDevice#createCaptureRequest</a>
17278   using an appropriate template matching the particular use case.<wbr/></li>
17279 <li>The client should go over the list of session parameters and check
17280   whether some of the keys listed matches with the parameters that
17281   they intend to modify as part of the first capture request.<wbr/></li>
17282 <li>If there is no such match,<wbr/> the capture request can be  passed
17283   unmodified to
17284   <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17285 <li>If matches do exist,<wbr/> the client should update the respective values
17286   and pass the request to
17287   <a href="https://developer.android.com/reference/SessionConfiguration.html#setSessionParameters">SessionConfiguration#setSessionParameters</a>.<wbr/></li>
17288 <li>After the capture session initialization completes the session parameter
17289   key list can continue to serve as reference when posting or updating
17290   further requests.<wbr/> As mentioned above further changes to session
17291   parameters should ideally be avoided,<wbr/> if updates are necessary
17292   however clients could expect a delay/<wbr/>glitch during the
17293   parameter switch.<wbr/></li>
17294 </ul>
17295             </td>
17296           </tr>
17297
17298           <tr class="entries_header">
17299             <th class="th_details" colspan="6">HAL Implementation Details</th>
17300           </tr>
17301           <tr class="entry_cont">
17302             <td class="entry_details" colspan="6">
17303               <p>Vendor tags can be listed here.<wbr/> Vendor tag metadata should also
17304 use the extensions C api (refer to
17305 android.<wbr/>hardware.<wbr/>camera.<wbr/>device.<wbr/>V3_<wbr/>4.<wbr/>Stream<wbr/>Configuration.<wbr/>session<wbr/>Params for more details).<wbr/></p>
17306 <p>Setting/<wbr/>getting vendor tags will be checked against the metadata
17307 vendor extensions API and not against this field.<wbr/></p>
17308 <p>The HAL must not consume any request tags in the session parameters that
17309 are not listed either here or in the vendor tag list.<wbr/></p>
17310 <p>The public camera2 API will always make the vendor tags visible
17311 via
17312 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableSessionKeys">CameraCharacteristics#getAvailableSessionKeys</a>.<wbr/></p>
17313             </td>
17314           </tr>
17315
17316           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17317            <!-- end of entry -->
17318         
17319         
17320
17321       <!-- end of kind -->
17322       </tbody>
17323       <tr><td colspan="7" class="kind">dynamic</td></tr>
17324
17325       <thead class="entries_header">
17326         <tr>
17327           <th class="th_name">Property Name</th>
17328           <th class="th_type">Type</th>
17329           <th class="th_description">Description</th>
17330           <th class="th_units">Units</th>
17331           <th class="th_range">Range</th>
17332           <th class="th_hal_version">Initial HIDL HAL version</th>
17333           <th class="th_tags">Tags</th>
17334         </tr>
17335       </thead>
17336
17337       <tbody>
17338
17339         
17340
17341         
17342
17343         
17344
17345         
17346
17347                 
17348           <tr class="entry" id="dynamic_android.request.frameCount">
17349             <td class="entry_name
17350                 entry_name_deprecated
17351              " rowspan="3">
17352               android.<wbr/>request.<wbr/>frame<wbr/>Count
17353             </td>
17354             <td class="entry_type">
17355                 <span class="entry_type_name">int32</span>
17356
17357               <span class="entry_type_visibility"> [hidden]</span>
17358
17359
17360
17361               <span class="entry_type_deprecated">[deprecated] </span>
17362
17363
17364
17365             </td> <!-- entry_type -->
17366
17367             <td class="entry_description">
17368               <p>A frame counter set by the framework.<wbr/> This value monotonically
17369 increases with every new result (that is,<wbr/> each new result has a unique
17370 frameCount value).<wbr/></p>
17371             </td>
17372
17373             <td class="entry_units">
17374               count of frames
17375             </td>
17376
17377             <td class="entry_range">
17378               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17379               <p>&gt; 0</p>
17380             </td>
17381
17382             <td class="entry_hal_version">
17383               <p>3.<wbr/>2</p>
17384             </td>
17385
17386             <td class="entry_tags">
17387             </td>
17388
17389           </tr>
17390           <tr class="entries_header">
17391             <th class="th_details" colspan="6">Details</th>
17392           </tr>
17393           <tr class="entry_cont">
17394             <td class="entry_details" colspan="6">
17395               <p>Reset on release()</p>
17396             </td>
17397           </tr>
17398
17399
17400           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17401            <!-- end of entry -->
17402         
17403                 
17404           <tr class="entry" id="dynamic_android.request.id">
17405             <td class="entry_name
17406              " rowspan="1">
17407               android.<wbr/>request.<wbr/>id
17408             </td>
17409             <td class="entry_type">
17410                 <span class="entry_type_name">int32</span>
17411
17412               <span class="entry_type_visibility"> [hidden]</span>
17413
17414
17415
17416
17417
17418
17419             </td> <!-- entry_type -->
17420
17421             <td class="entry_description">
17422               <p>An application-specified ID for the current
17423 request.<wbr/> Must be maintained unchanged in output
17424 frame</p>
17425             </td>
17426
17427             <td class="entry_units">
17428               arbitrary integer assigned by application
17429             </td>
17430
17431             <td class="entry_range">
17432               <p>Any int</p>
17433             </td>
17434
17435             <td class="entry_hal_version">
17436               <p>3.<wbr/>2</p>
17437             </td>
17438
17439             <td class="entry_tags">
17440               <ul class="entry_tags">
17441                   <li><a href="#tag_V1">V1</a></li>
17442               </ul>
17443             </td>
17444
17445           </tr>
17446
17447
17448           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17449            <!-- end of entry -->
17450         
17451                 
17452           <tr class="entry" id="dynamic_android.request.metadataMode">
17453             <td class="entry_name
17454              " rowspan="1">
17455               android.<wbr/>request.<wbr/>metadata<wbr/>Mode
17456             </td>
17457             <td class="entry_type">
17458                 <span class="entry_type_name entry_type_name_enum">byte</span>
17459
17460               <span class="entry_type_visibility"> [system]</span>
17461
17462
17463
17464
17465
17466                 <ul class="entry_type_enum">
17467                   <li>
17468                     <span class="entry_type_enum_name">NONE (v3.2)</span>
17469                     <span class="entry_type_enum_notes"><p>No metadata should be produced on output,<wbr/> except
17470 for application-bound buffer data.<wbr/> If no
17471 application-bound streams exist,<wbr/> no frame should be
17472 placed in the output frame queue.<wbr/> If such streams
17473 exist,<wbr/> a frame should be placed on the output queue
17474 with null metadata but with the necessary output buffer
17475 information.<wbr/> Timestamp information should still be
17476 included with any output stream buffers</p></span>
17477                   </li>
17478                   <li>
17479                     <span class="entry_type_enum_name">FULL (v3.2)</span>
17480                     <span class="entry_type_enum_notes"><p>All metadata should be produced.<wbr/> Statistics will
17481 only be produced if they are separately
17482 enabled</p></span>
17483                   </li>
17484                 </ul>
17485
17486             </td> <!-- entry_type -->
17487
17488             <td class="entry_description">
17489               <p>How much metadata to produce on
17490 output</p>
17491             </td>
17492
17493             <td class="entry_units">
17494             </td>
17495
17496             <td class="entry_range">
17497             </td>
17498
17499             <td class="entry_hal_version">
17500               <p>3.<wbr/>2</p>
17501             </td>
17502
17503             <td class="entry_tags">
17504               <ul class="entry_tags">
17505                   <li><a href="#tag_FUTURE">FUTURE</a></li>
17506               </ul>
17507             </td>
17508
17509           </tr>
17510
17511
17512           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17513            <!-- end of entry -->
17514         
17515                 
17516           <tr class="entry" id="dynamic_android.request.outputStreams">
17517             <td class="entry_name
17518                 entry_name_deprecated
17519              " rowspan="3">
17520               android.<wbr/>request.<wbr/>output<wbr/>Streams
17521             </td>
17522             <td class="entry_type">
17523                 <span class="entry_type_name">int32</span>
17524                 <span class="entry_type_container">x</span>
17525
17526                 <span class="entry_type_array">
17527                   n
17528                 </span>
17529               <span class="entry_type_visibility"> [system]</span>
17530
17531
17532
17533               <span class="entry_type_deprecated">[deprecated] </span>
17534
17535
17536
17537             </td> <!-- entry_type -->
17538
17539             <td class="entry_description">
17540               <p>Lists which camera output streams image data
17541 from this capture must be sent to</p>
17542             </td>
17543
17544             <td class="entry_units">
17545               List of camera stream IDs
17546             </td>
17547
17548             <td class="entry_range">
17549               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17550               <p>List must only include streams that have been
17551 created</p>
17552             </td>
17553
17554             <td class="entry_hal_version">
17555               <p>3.<wbr/>2</p>
17556             </td>
17557
17558             <td class="entry_tags">
17559               <ul class="entry_tags">
17560                   <li><a href="#tag_HAL2">HAL2</a></li>
17561               </ul>
17562             </td>
17563
17564           </tr>
17565           <tr class="entries_header">
17566             <th class="th_details" colspan="6">Details</th>
17567           </tr>
17568           <tr class="entry_cont">
17569             <td class="entry_details" colspan="6">
17570               <p>If no output streams are listed,<wbr/> then the image
17571 data should simply be discarded.<wbr/> The image data must
17572 still be captured for metadata and statistics production,<wbr/>
17573 and the lens and flash must operate as requested.<wbr/></p>
17574             </td>
17575           </tr>
17576
17577
17578           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17579            <!-- end of entry -->
17580         
17581                 
17582           <tr class="entry" id="dynamic_android.request.pipelineDepth">
17583             <td class="entry_name
17584              " rowspan="5">
17585               android.<wbr/>request.<wbr/>pipeline<wbr/>Depth
17586             </td>
17587             <td class="entry_type">
17588                 <span class="entry_type_name">byte</span>
17589
17590               <span class="entry_type_visibility"> [public]</span>
17591
17592
17593               <span class="entry_type_hwlevel">[legacy] </span>
17594
17595
17596
17597
17598             </td> <!-- entry_type -->
17599
17600             <td class="entry_description">
17601               <p>Specifies the number of pipeline stages the frame went
17602 through from when it was exposed to when the final completed result
17603 was available to the framework.<wbr/></p>
17604             </td>
17605
17606             <td class="entry_units">
17607             </td>
17608
17609             <td class="entry_range">
17610               <p>&lt;= <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a></p>
17611             </td>
17612
17613             <td class="entry_hal_version">
17614               <p>3.<wbr/>2</p>
17615             </td>
17616
17617             <td class="entry_tags">
17618             </td>
17619
17620           </tr>
17621           <tr class="entries_header">
17622             <th class="th_details" colspan="6">Details</th>
17623           </tr>
17624           <tr class="entry_cont">
17625             <td class="entry_details" colspan="6">
17626               <p>Depending on what settings are used in the request,<wbr/> and
17627 what streams are configured,<wbr/> the data may undergo less processing,<wbr/>
17628 and some pipeline stages skipped.<wbr/></p>
17629 <p>See <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> for more details.<wbr/></p>
17630             </td>
17631           </tr>
17632
17633           <tr class="entries_header">
17634             <th class="th_details" colspan="6">HAL Implementation Details</th>
17635           </tr>
17636           <tr class="entry_cont">
17637             <td class="entry_details" colspan="6">
17638               <p>This value must always represent the accurate count of how many
17639 pipeline stages were actually used.<wbr/></p>
17640             </td>
17641           </tr>
17642
17643           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17644            <!-- end of entry -->
17645         
17646         
17647
17648       <!-- end of kind -->
17649       </tbody>
17650
17651   <!-- end of section -->
17652   <tr><td colspan="7" id="section_scaler" class="section">scaler</td></tr>
17653
17654
17655       <tr><td colspan="7" class="kind">controls</td></tr>
17656
17657       <thead class="entries_header">
17658         <tr>
17659           <th class="th_name">Property Name</th>
17660           <th class="th_type">Type</th>
17661           <th class="th_description">Description</th>
17662           <th class="th_units">Units</th>
17663           <th class="th_range">Range</th>
17664           <th class="th_hal_version">Initial HIDL HAL version</th>
17665           <th class="th_tags">Tags</th>
17666         </tr>
17667       </thead>
17668
17669       <tbody>
17670
17671         
17672
17673         
17674
17675         
17676
17677         
17678
17679                 
17680           <tr class="entry" id="controls_android.scaler.cropRegion">
17681             <td class="entry_name
17682              " rowspan="5">
17683               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
17684             </td>
17685             <td class="entry_type">
17686                 <span class="entry_type_name">int32</span>
17687                 <span class="entry_type_container">x</span>
17688
17689                 <span class="entry_type_array">
17690                   4
17691                 </span>
17692               <span class="entry_type_visibility"> [public as rectangle]</span>
17693
17694
17695               <span class="entry_type_hwlevel">[legacy] </span>
17696
17697
17698
17699
17700             </td> <!-- entry_type -->
17701
17702             <td class="entry_description">
17703               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
17704             </td>
17705
17706             <td class="entry_units">
17707               Pixel coordinates relative to
17708           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
17709             </td>
17710
17711             <td class="entry_range">
17712             </td>
17713
17714             <td class="entry_hal_version">
17715               <p>3.<wbr/>2</p>
17716             </td>
17717
17718             <td class="entry_tags">
17719               <ul class="entry_tags">
17720                   <li><a href="#tag_BC">BC</a></li>
17721               </ul>
17722             </td>
17723
17724           </tr>
17725           <tr class="entries_header">
17726             <th class="th_details" colspan="6">Details</th>
17727           </tr>
17728           <tr class="entry_cont">
17729             <td class="entry_details" colspan="6">
17730               <p>This control can be used to implement digital zoom.<wbr/></p>
17731 <p>The crop region coordinate system is based off
17732 <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
17733 top-left corner of the sensor active array.<wbr/></p>
17734 <p>Output streams use this rectangle to produce their output,<wbr/>
17735 cropping to a smaller region if necessary to maintain the
17736 stream's aspect ratio,<wbr/> then scaling the sensor input to
17737 match the output's configured resolution.<wbr/></p>
17738 <p>The crop region is applied after the RAW to other color
17739 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
17740 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
17741 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
17742 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
17743 be done to maximize the final pixel area of the stream.<wbr/></p>
17744 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
17745 ratio,<wbr/> then 4:3 streams will use the exact crop
17746 region.<wbr/> 16:9 streams will further crop vertically
17747 (letterbox).<wbr/></p>
17748 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
17749 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
17750 streams will match exactly.<wbr/> These additional crops will
17751 be centered within the crop region.<wbr/></p>
17752 <p>The width and height of the crop region cannot
17753 be set to be smaller than
17754 <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
17755 <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>
17756 <p>The camera device may adjust the crop region to account
17757 for rounding and other hardware requirements; the final
17758 crop region used will be included in the output capture
17759 result.<wbr/></p>
17760             </td>
17761           </tr>
17762
17763           <tr class="entries_header">
17764             <th class="th_details" colspan="6">HAL Implementation Details</th>
17765           </tr>
17766           <tr class="entry_cont">
17767             <td class="entry_details" colspan="6">
17768               <p>The output streams must maintain square pixels at all
17769 times,<wbr/> no matter what the relative aspect ratios of the
17770 crop region and the stream are.<wbr/>  Negative values for
17771 corner are allowed for raw output if full pixel array is
17772 larger than active pixel array.<wbr/> Width and height may be
17773 rounded to nearest larger supportable width,<wbr/> especially
17774 for raw output,<wbr/> where only a few fixed scales may be
17775 possible.<wbr/></p>
17776 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
17777 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
17778 <ul>
17779 <li>
17780 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
17781 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
17782 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> to the sensor cropped pixel area size in this way:</p>
17783 <ol>
17784 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
17785 cropped pixel area by (tx,<wbr/> ty),<wbr/>
17786 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
17787 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
17788 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
17789 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
17790 <li>Scale the width and height of requested cropRegion with scaling factor of
17791 sensor<wbr/>Crop.<wbr/>width/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>height
17792 respectively.<wbr/>
17793 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
17794 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
17795 follow the general cropping rule for this new cropRegion and effective active
17796 array size.<wbr/></li>
17797 </ol>
17798 </li>
17799 <li>
17800 <p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>
17801 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
17802 The reported cropRegion may be slightly different with the requested cropRegion since
17803 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
17804 hardware limitations.<wbr/></p>
17805 </li>
17806 </ul>
17807 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
17808             </td>
17809           </tr>
17810
17811           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
17812            <!-- end of entry -->
17813         
17814         
17815
17816       <!-- end of kind -->
17817       </tbody>
17818       <tr><td colspan="7" class="kind">static</td></tr>
17819
17820       <thead class="entries_header">
17821         <tr>
17822           <th class="th_name">Property Name</th>
17823           <th class="th_type">Type</th>
17824           <th class="th_description">Description</th>
17825           <th class="th_units">Units</th>
17826           <th class="th_range">Range</th>
17827           <th class="th_hal_version">Initial HIDL HAL version</th>
17828           <th class="th_tags">Tags</th>
17829         </tr>
17830       </thead>
17831
17832       <tbody>
17833
17834         
17835
17836         
17837
17838         
17839
17840         
17841
17842                 
17843           <tr class="entry" id="static_android.scaler.availableFormats">
17844             <td class="entry_name
17845                 entry_name_deprecated
17846              " rowspan="5">
17847               android.<wbr/>scaler.<wbr/>available<wbr/>Formats
17848             </td>
17849             <td class="entry_type">
17850                 <span class="entry_type_name entry_type_name_enum">int32</span>
17851                 <span class="entry_type_container">x</span>
17852
17853                 <span class="entry_type_array">
17854                   n
17855                 </span>
17856               <span class="entry_type_visibility"> [hidden as imageFormat]</span>
17857
17858
17859
17860               <span class="entry_type_deprecated">[deprecated] </span>
17861
17862
17863                 <ul class="entry_type_enum">
17864                   <li>
17865                     <span class="entry_type_enum_name">RAW16 (v3.2)</span>
17866                     <span class="entry_type_enum_optional">[optional]</span>
17867                     <span class="entry_type_enum_value">0x20</span>
17868                     <span class="entry_type_enum_notes"><p>RAW16 is a standard,<wbr/> cross-platform format for raw image
17869 buffers with 16-bit pixels.<wbr/></p>
17870 <p>Buffers of this format are typically expected to have a
17871 Bayer Color Filter Array (CFA) layout,<wbr/> which is given in
17872 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>.<wbr/> Sensors with
17873 CFAs that are not representable by a format in
17874 <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a> should not
17875 use this format.<wbr/></p>
17876 <p>Buffers of this format will also follow the constraints given for
17877 RAW_<wbr/>OPAQUE buffers,<wbr/> but with relaxed performance constraints.<wbr/></p>
17878 <p>This format is intended to give users access to the full contents
17879 of the buffers coming directly from the image sensor prior to any
17880 cropping or scaling operations,<wbr/> and all coordinate systems for
17881 metadata used for this format are relative to the size of the
17882 active region of the image sensor before any geometric distortion
17883 correction has been applied (i.<wbr/>e.<wbr/>
17884 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>).<wbr/> Supported
17885 dimensions for this format are limited to the full dimensions of
17886 the sensor (e.<wbr/>g.<wbr/> either <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a> or
17887 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> will be the
17888 only supported output size).<wbr/></p>
17889 <p>See <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a> for
17890 the full set of performance guarantees.<wbr/></p></span>
17891                   </li>
17892                   <li>
17893                     <span class="entry_type_enum_name">RAW_OPAQUE (v3.2)</span>
17894                     <span class="entry_type_enum_optional">[optional]</span>
17895                     <span class="entry_type_enum_value">0x24</span>
17896                     <span class="entry_type_enum_notes"><p>RAW_<wbr/>OPAQUE (or
17897 <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_PRIVATE">RAW_<wbr/>PRIVATE</a>
17898 as referred in public API) is a format for raw image buffers
17899 coming from an image sensor.<wbr/></p>
17900 <p>The actual structure of buffers of this format is
17901 platform-specific,<wbr/> but must follow several constraints:</p>
17902 <ol>
17903 <li>No image post-processing operations may have been applied to
17904 buffers of this type.<wbr/> These buffers contain raw image data coming
17905 directly from the image sensor.<wbr/></li>
17906 <li>If a buffer of this format is passed to the camera device for
17907 reprocessing,<wbr/> the resulting images will be identical to the images
17908 produced if the buffer had come directly from the sensor and was
17909 processed with the same settings.<wbr/></li>
17910 </ol>
17911 <p>The intended use for this format is to allow access to the native
17912 raw format buffers coming directly from the camera sensor without
17913 any additional conversions or decrease in framerate.<wbr/></p>
17914 <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
17915 performance guarantees.<wbr/></p></span>
17916                   </li>
17917                   <li>
17918                     <span class="entry_type_enum_name">YV12 (v3.2)</span>
17919                     <span class="entry_type_enum_optional">[optional]</span>
17920                     <span class="entry_type_enum_value">0x32315659</span>
17921                     <span class="entry_type_enum_notes"><p>YCrCb 4:2:0 Planar</p></span>
17922                   </li>
17923                   <li>
17924                     <span class="entry_type_enum_name">YCrCb_420_SP (v3.2)</span>
17925                     <span class="entry_type_enum_optional">[optional]</span>
17926                     <span class="entry_type_enum_value">0x11</span>
17927                     <span class="entry_type_enum_notes"><p>NV21</p></span>
17928                   </li>
17929                   <li>
17930                     <span class="entry_type_enum_name">IMPLEMENTATION_DEFINED (v3.2)</span>
17931                     <span class="entry_type_enum_value">0x22</span>
17932                     <span class="entry_type_enum_notes"><p>System internal format,<wbr/> not application-accessible</p></span>
17933                   </li>
17934                   <li>
17935                     <span class="entry_type_enum_name">YCbCr_420_888 (v3.2)</span>
17936                     <span class="entry_type_enum_value">0x23</span>
17937                     <span class="entry_type_enum_notes"><p>Flexible YUV420 Format</p></span>
17938                   </li>
17939                   <li>
17940                     <span class="entry_type_enum_name">BLOB (v3.2)</span>
17941                     <span class="entry_type_enum_value">0x21</span>
17942                     <span class="entry_type_enum_notes"><p>JPEG format</p></span>
17943                   </li>
17944                 </ul>
17945
17946             </td> <!-- entry_type -->
17947
17948             <td class="entry_description">
17949               <p>The list of image formats that are supported by this
17950 camera device for output streams.<wbr/></p>
17951             </td>
17952
17953             <td class="entry_units">
17954             </td>
17955
17956             <td class="entry_range">
17957               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
17958             </td>
17959
17960             <td class="entry_hal_version">
17961               <p>3.<wbr/>2</p>
17962             </td>
17963
17964             <td class="entry_tags">
17965               <ul class="entry_tags">
17966                   <li><a href="#tag_BC">BC</a></li>
17967               </ul>
17968             </td>
17969
17970           </tr>
17971           <tr class="entries_header">
17972             <th class="th_details" colspan="6">Details</th>
17973           </tr>
17974           <tr class="entry_cont">
17975             <td class="entry_details" colspan="6">
17976               <p>All camera devices will support JPEG and YUV_<wbr/>420_<wbr/>888 formats.<wbr/></p>
17977 <p>When set to YUV_<wbr/>420_<wbr/>888,<wbr/> application can access the YUV420 data directly.<wbr/></p>
17978             </td>
17979           </tr>
17980
17981           <tr class="entries_header">
17982             <th class="th_details" colspan="6">HAL Implementation Details</th>
17983           </tr>
17984           <tr class="entry_cont">
17985             <td class="entry_details" colspan="6">
17986               <p>These format values are from HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>* in
17987 system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h.<wbr/></p>
17988 <p>When IMPLEMENTATION_<wbr/>DEFINED is used,<wbr/> the platform
17989 gralloc module will select a format based on the usage flags provided
17990 by the camera HAL device and the other endpoint of the stream.<wbr/> It is
17991 usually used by preview and recording streams,<wbr/> where the application doesn't
17992 need access the image data.<wbr/></p>
17993 <p>YCb<wbr/>Cr_<wbr/>420_<wbr/>888 format must be supported by the HAL.<wbr/> When an image stream
17994 needs CPU/<wbr/>application direct access,<wbr/> this format will be used.<wbr/></p>
17995 <p>The BLOB format must be supported by the HAL.<wbr/> This is used for the JPEG stream.<wbr/></p>
17996 <p>A RAW_<wbr/>OPAQUE buffer should contain only pixel data.<wbr/> It is strongly
17997 recommended that any information used by the camera device when
17998 processing images is fully expressed by the result metadata
17999 for that image buffer.<wbr/></p>
18000             </td>
18001           </tr>
18002
18003           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18004            <!-- end of entry -->
18005         
18006                 
18007           <tr class="entry" id="static_android.scaler.availableJpegMinDurations">
18008             <td class="entry_name
18009                 entry_name_deprecated
18010              " rowspan="3">
18011               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Min<wbr/>Durations
18012             </td>
18013             <td class="entry_type">
18014                 <span class="entry_type_name">int64</span>
18015                 <span class="entry_type_container">x</span>
18016
18017                 <span class="entry_type_array">
18018                   n
18019                 </span>
18020               <span class="entry_type_visibility"> [hidden]</span>
18021
18022
18023
18024               <span class="entry_type_deprecated">[deprecated] </span>
18025
18026
18027
18028             </td> <!-- entry_type -->
18029
18030             <td class="entry_description">
18031               <p>The minimum frame duration that is supported
18032 for each resolution in <a href="#static_android.scaler.availableJpegSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes</a>.<wbr/></p>
18033             </td>
18034
18035             <td class="entry_units">
18036               Nanoseconds
18037             </td>
18038
18039             <td class="entry_range">
18040               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18041               <p>TODO: Remove property.<wbr/></p>
18042             </td>
18043
18044             <td class="entry_hal_version">
18045               <p>3.<wbr/>2</p>
18046             </td>
18047
18048             <td class="entry_tags">
18049               <ul class="entry_tags">
18050                   <li><a href="#tag_BC">BC</a></li>
18051               </ul>
18052             </td>
18053
18054           </tr>
18055           <tr class="entries_header">
18056             <th class="th_details" colspan="6">Details</th>
18057           </tr>
18058           <tr class="entry_cont">
18059             <td class="entry_details" colspan="6">
18060               <p>This corresponds to the minimum steady-state frame duration when only
18061 that JPEG stream is active and captured in a burst,<wbr/> with all
18062 processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST.<wbr/></p>
18063 <p>When multiple streams are configured,<wbr/> the minimum
18064 frame duration will be &gt;= max(individual stream min
18065 durations)</p>
18066             </td>
18067           </tr>
18068
18069
18070           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18071            <!-- end of entry -->
18072         
18073                 
18074           <tr class="entry" id="static_android.scaler.availableJpegSizes">
18075             <td class="entry_name
18076                 entry_name_deprecated
18077              " rowspan="5">
18078               android.<wbr/>scaler.<wbr/>available<wbr/>Jpeg<wbr/>Sizes
18079             </td>
18080             <td class="entry_type">
18081                 <span class="entry_type_name">int32</span>
18082                 <span class="entry_type_container">x</span>
18083
18084                 <span class="entry_type_array">
18085                   n x 2
18086                 </span>
18087               <span class="entry_type_visibility"> [hidden as size]</span>
18088
18089
18090
18091               <span class="entry_type_deprecated">[deprecated] </span>
18092
18093
18094
18095             </td> <!-- entry_type -->
18096
18097             <td class="entry_description">
18098               <p>The JPEG resolutions that are supported by this camera device.<wbr/></p>
18099             </td>
18100
18101             <td class="entry_units">
18102             </td>
18103
18104             <td class="entry_range">
18105               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18106               <p>TODO: Remove property.<wbr/></p>
18107             </td>
18108
18109             <td class="entry_hal_version">
18110               <p>3.<wbr/>2</p>
18111             </td>
18112
18113             <td class="entry_tags">
18114               <ul class="entry_tags">
18115                   <li><a href="#tag_BC">BC</a></li>
18116               </ul>
18117             </td>
18118
18119           </tr>
18120           <tr class="entries_header">
18121             <th class="th_details" colspan="6">Details</th>
18122           </tr>
18123           <tr class="entry_cont">
18124             <td class="entry_details" colspan="6">
18125               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/> All camera devices will support
18126 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>
18127             </td>
18128           </tr>
18129
18130           <tr class="entries_header">
18131             <th class="th_details" colspan="6">HAL Implementation Details</th>
18132           </tr>
18133           <tr class="entry_cont">
18134             <td class="entry_details" colspan="6">
18135               <p>The HAL must include sensor maximum resolution
18136 (defined by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>),<wbr/>
18137 and should include half/<wbr/>quarter of sensor maximum resolution.<wbr/></p>
18138             </td>
18139           </tr>
18140
18141           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18142            <!-- end of entry -->
18143         
18144                 
18145           <tr class="entry" id="static_android.scaler.availableMaxDigitalZoom">
18146             <td class="entry_name
18147              " rowspan="3">
18148               android.<wbr/>scaler.<wbr/>available<wbr/>Max<wbr/>Digital<wbr/>Zoom
18149             </td>
18150             <td class="entry_type">
18151                 <span class="entry_type_name">float</span>
18152
18153               <span class="entry_type_visibility"> [public]</span>
18154
18155
18156               <span class="entry_type_hwlevel">[legacy] </span>
18157
18158
18159
18160
18161             </td> <!-- entry_type -->
18162
18163             <td class="entry_description">
18164               <p>The maximum ratio between both active area width
18165 and crop region width,<wbr/> and active area height and
18166 crop region height,<wbr/> for <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
18167             </td>
18168
18169             <td class="entry_units">
18170               Zoom scale factor
18171             </td>
18172
18173             <td class="entry_range">
18174               <p>&gt;=1</p>
18175             </td>
18176
18177             <td class="entry_hal_version">
18178               <p>3.<wbr/>2</p>
18179             </td>
18180
18181             <td class="entry_tags">
18182               <ul class="entry_tags">
18183                   <li><a href="#tag_BC">BC</a></li>
18184               </ul>
18185             </td>
18186
18187           </tr>
18188           <tr class="entries_header">
18189             <th class="th_details" colspan="6">Details</th>
18190           </tr>
18191           <tr class="entry_cont">
18192             <td class="entry_details" colspan="6">
18193               <p>This represents the maximum amount of zooming possible by
18194 the camera device,<wbr/> or equivalently,<wbr/> the minimum cropping
18195 window size.<wbr/></p>
18196 <p>Crop regions that have a width or height that is smaller
18197 than this ratio allows will be rounded up to the minimum
18198 allowed size by the camera device.<wbr/></p>
18199             </td>
18200           </tr>
18201
18202
18203           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18204            <!-- end of entry -->
18205         
18206                 
18207           <tr class="entry" id="static_android.scaler.availableProcessedMinDurations">
18208             <td class="entry_name
18209                 entry_name_deprecated
18210              " rowspan="3">
18211               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Min<wbr/>Durations
18212             </td>
18213             <td class="entry_type">
18214                 <span class="entry_type_name">int64</span>
18215                 <span class="entry_type_container">x</span>
18216
18217                 <span class="entry_type_array">
18218                   n
18219                 </span>
18220               <span class="entry_type_visibility"> [hidden]</span>
18221
18222
18223
18224               <span class="entry_type_deprecated">[deprecated] </span>
18225
18226
18227
18228             </td> <!-- entry_type -->
18229
18230             <td class="entry_description">
18231               <p>For each available processed output size (defined in
18232 <a href="#static_android.scaler.availableProcessedSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes</a>),<wbr/> this property lists the
18233 minimum supportable frame duration for that size.<wbr/></p>
18234             </td>
18235
18236             <td class="entry_units">
18237               Nanoseconds
18238             </td>
18239
18240             <td class="entry_range">
18241               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18242             </td>
18243
18244             <td class="entry_hal_version">
18245               <p>3.<wbr/>2</p>
18246             </td>
18247
18248             <td class="entry_tags">
18249               <ul class="entry_tags">
18250                   <li><a href="#tag_BC">BC</a></li>
18251               </ul>
18252             </td>
18253
18254           </tr>
18255           <tr class="entries_header">
18256             <th class="th_details" colspan="6">Details</th>
18257           </tr>
18258           <tr class="entry_cont">
18259             <td class="entry_details" colspan="6">
18260               <p>This should correspond to the frame duration when only that processed
18261 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18262 set to FAST.<wbr/></p>
18263 <p>When multiple streams are configured,<wbr/> the minimum frame duration will
18264 be &gt;= max(individual stream min durations).<wbr/></p>
18265             </td>
18266           </tr>
18267
18268
18269           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18270            <!-- end of entry -->
18271         
18272                 
18273           <tr class="entry" id="static_android.scaler.availableProcessedSizes">
18274             <td class="entry_name
18275                 entry_name_deprecated
18276              " rowspan="5">
18277               android.<wbr/>scaler.<wbr/>available<wbr/>Processed<wbr/>Sizes
18278             </td>
18279             <td class="entry_type">
18280                 <span class="entry_type_name">int32</span>
18281                 <span class="entry_type_container">x</span>
18282
18283                 <span class="entry_type_array">
18284                   n x 2
18285                 </span>
18286               <span class="entry_type_visibility"> [hidden as size]</span>
18287
18288
18289
18290               <span class="entry_type_deprecated">[deprecated] </span>
18291
18292
18293
18294             </td> <!-- entry_type -->
18295
18296             <td class="entry_description">
18297               <p>The resolutions available for use with
18298 processed output streams,<wbr/> such as YV12,<wbr/> NV12,<wbr/> and
18299 platform opaque YUV/<wbr/>RGB streams to the GPU or video
18300 encoders.<wbr/></p>
18301             </td>
18302
18303             <td class="entry_units">
18304             </td>
18305
18306             <td class="entry_range">
18307               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18308             </td>
18309
18310             <td class="entry_hal_version">
18311               <p>3.<wbr/>2</p>
18312             </td>
18313
18314             <td class="entry_tags">
18315               <ul class="entry_tags">
18316                   <li><a href="#tag_BC">BC</a></li>
18317               </ul>
18318             </td>
18319
18320           </tr>
18321           <tr class="entries_header">
18322             <th class="th_details" colspan="6">Details</th>
18323           </tr>
18324           <tr class="entry_cont">
18325             <td class="entry_details" colspan="6">
18326               <p>The resolutions are listed as <code>(width,<wbr/> height)</code> pairs.<wbr/></p>
18327 <p>For a given use case,<wbr/> the actual maximum supported resolution
18328 may be lower than what is listed here,<wbr/> depending on the destination
18329 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18330 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18331 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18332 can provide.<wbr/></p>
18333 <p>Please reference the documentation for the image data destination to
18334 check if it limits the maximum size for image data.<wbr/></p>
18335             </td>
18336           </tr>
18337
18338           <tr class="entries_header">
18339             <th class="th_details" colspan="6">HAL Implementation Details</th>
18340           </tr>
18341           <tr class="entry_cont">
18342             <td class="entry_details" colspan="6">
18343               <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/>
18344 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>
18345 and each below resolution if it is smaller than or equal to the sensor
18346 maximum resolution (if they are not listed in JPEG sizes already):</p>
18347 <ul>
18348 <li>240p (320 x 240)</li>
18349 <li>480p (640 x 480)</li>
18350 <li>720p (1280 x 720)</li>
18351 <li>1080p (1920 x 1080)</li>
18352 </ul>
18353 <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/>
18354 the HAL only has to list up to the maximum video size supported by the devices.<wbr/></p>
18355             </td>
18356           </tr>
18357
18358           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18359            <!-- end of entry -->
18360         
18361                 
18362           <tr class="entry" id="static_android.scaler.availableRawMinDurations">
18363             <td class="entry_name
18364                 entry_name_deprecated
18365              " rowspan="3">
18366               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Min<wbr/>Durations
18367             </td>
18368             <td class="entry_type">
18369                 <span class="entry_type_name">int64</span>
18370                 <span class="entry_type_container">x</span>
18371
18372                 <span class="entry_type_array">
18373                   n
18374                 </span>
18375               <span class="entry_type_visibility"> [system]</span>
18376
18377
18378
18379               <span class="entry_type_deprecated">[deprecated] </span>
18380
18381
18382
18383             </td> <!-- entry_type -->
18384
18385             <td class="entry_description">
18386               <p>For each available raw output size (defined in
18387 <a href="#static_android.scaler.availableRawSizes">android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes</a>),<wbr/> this property lists the minimum
18388 supportable frame duration for that size.<wbr/></p>
18389             </td>
18390
18391             <td class="entry_units">
18392               Nanoseconds
18393             </td>
18394
18395             <td class="entry_range">
18396               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18397             </td>
18398
18399             <td class="entry_hal_version">
18400               <p>3.<wbr/>2</p>
18401             </td>
18402
18403             <td class="entry_tags">
18404               <ul class="entry_tags">
18405                   <li><a href="#tag_BC">BC</a></li>
18406               </ul>
18407             </td>
18408
18409           </tr>
18410           <tr class="entries_header">
18411             <th class="th_details" colspan="6">Details</th>
18412           </tr>
18413           <tr class="entry_cont">
18414             <td class="entry_details" colspan="6">
18415               <p>Should correspond to the frame duration when only the raw stream is
18416 active.<wbr/></p>
18417 <p>When multiple streams are configured,<wbr/> the minimum
18418 frame duration will be &gt;= max(individual stream min
18419 durations)</p>
18420             </td>
18421           </tr>
18422
18423
18424           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18425            <!-- end of entry -->
18426         
18427                 
18428           <tr class="entry" id="static_android.scaler.availableRawSizes">
18429             <td class="entry_name
18430                 entry_name_deprecated
18431              " rowspan="1">
18432               android.<wbr/>scaler.<wbr/>available<wbr/>Raw<wbr/>Sizes
18433             </td>
18434             <td class="entry_type">
18435                 <span class="entry_type_name">int32</span>
18436                 <span class="entry_type_container">x</span>
18437
18438                 <span class="entry_type_array">
18439                   n x 2
18440                 </span>
18441               <span class="entry_type_visibility"> [system as size]</span>
18442
18443
18444
18445               <span class="entry_type_deprecated">[deprecated] </span>
18446
18447
18448
18449             </td> <!-- entry_type -->
18450
18451             <td class="entry_description">
18452               <p>The resolutions available for use with raw
18453 sensor output streams,<wbr/> listed as width,<wbr/>
18454 height</p>
18455             </td>
18456
18457             <td class="entry_units">
18458             </td>
18459
18460             <td class="entry_range">
18461               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
18462             </td>
18463
18464             <td class="entry_hal_version">
18465               <p>3.<wbr/>2</p>
18466             </td>
18467
18468             <td class="entry_tags">
18469             </td>
18470
18471           </tr>
18472
18473
18474           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18475            <!-- end of entry -->
18476         
18477                 
18478           <tr class="entry" id="static_android.scaler.availableInputOutputFormatsMap">
18479             <td class="entry_name
18480              " rowspan="5">
18481               android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map
18482             </td>
18483             <td class="entry_type">
18484                 <span class="entry_type_name">int32</span>
18485
18486               <span class="entry_type_visibility"> [hidden as reprocessFormatsMap]</span>
18487
18488
18489
18490
18491
18492
18493             </td> <!-- entry_type -->
18494
18495             <td class="entry_description">
18496               <p>The mapping of image formats that are supported by this
18497 camera device for input streams,<wbr/> to their corresponding output formats.<wbr/></p>
18498             </td>
18499
18500             <td class="entry_units">
18501             </td>
18502
18503             <td class="entry_range">
18504             </td>
18505
18506             <td class="entry_hal_version">
18507               <p>3.<wbr/>2</p>
18508             </td>
18509
18510             <td class="entry_tags">
18511               <ul class="entry_tags">
18512                   <li><a href="#tag_REPROC">REPROC</a></li>
18513               </ul>
18514             </td>
18515
18516           </tr>
18517           <tr class="entries_header">
18518             <th class="th_details" colspan="6">Details</th>
18519           </tr>
18520           <tr class="entry_cont">
18521             <td class="entry_details" colspan="6">
18522               <p>All camera devices with at least 1
18523 <a href="#static_android.request.maxNumInputStreams">android.<wbr/>request.<wbr/>max<wbr/>Num<wbr/>Input<wbr/>Streams</a> will have at least one
18524 available input format.<wbr/></p>
18525 <p>The camera device will support the following map of formats,<wbr/>
18526 if its dependent capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>) is supported:</p>
18527 <table>
18528 <thead>
18529 <tr>
18530 <th align="left">Input Format</th>
18531 <th align="left">Output Format</th>
18532 <th align="left">Capability</th>
18533 </tr>
18534 </thead>
18535 <tbody>
18536 <tr>
18537 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18538 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18539 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18540 </tr>
18541 <tr>
18542 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
18543 <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>
18544 <td align="left">PRIVATE_<wbr/>REPROCESSING</td>
18545 </tr>
18546 <tr>
18547 <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>
18548 <td align="left"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
18549 <td align="left">YUV_<wbr/>REPROCESSING</td>
18550 </tr>
18551 <tr>
18552 <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>
18553 <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>
18554 <td align="left">YUV_<wbr/>REPROCESSING</td>
18555 </tr>
18556 </tbody>
18557 </table>
18558 <p>PRIVATE refers to a device-internal format that is not directly application-visible.<wbr/>  A
18559 PRIVATE input surface can be acquired by <a href="https://developer.android.com/reference/android/media/ImageReader.html#newInstance">ImageReader#newInstance</a>
18560 with <a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a> as the format.<wbr/></p>
18561 <p>For a PRIVATE_<wbr/>REPROCESSING-capable camera device,<wbr/> using the PRIVATE format as either input
18562 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>
18563 <p>Attempting to configure an input stream with output streams not
18564 listed as available in this map is not valid.<wbr/></p>
18565             </td>
18566           </tr>
18567
18568           <tr class="entries_header">
18569             <th class="th_details" colspan="6">HAL Implementation Details</th>
18570           </tr>
18571           <tr class="entry_cont">
18572             <td class="entry_details" colspan="6">
18573               <p>For the formats,<wbr/> see <code>system/<wbr/>core/<wbr/>include/<wbr/>system/<wbr/>graphics.<wbr/>h</code> for a definition
18574 of the image format enumerations.<wbr/> The PRIVATE format refers to the
18575 HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>IMPLEMENTATION_<wbr/>DEFINED format.<wbr/> The HAL could determine
18576 the actual format by using the gralloc usage flags.<wbr/>
18577 For ZSL use case in particular,<wbr/> the HAL could choose appropriate format (partially
18578 processed YUV or RAW based format) by checking the format and GRALLOC_<wbr/>USAGE_<wbr/>HW_<wbr/>CAMERA_<wbr/>ZSL.<wbr/>
18579 See camera3.<wbr/>h for more details.<wbr/></p>
18580 <p>This value is encoded as a variable-size array-of-arrays.<wbr/>
18581 The inner array always contains <code>[format,<wbr/> length,<wbr/> ...<wbr/>]</code> where
18582 <code>...<wbr/></code> has <code>length</code> elements.<wbr/> An inner array is followed by another
18583 inner array if the total metadata entry size hasn't yet been exceeded.<wbr/></p>
18584 <p>A code sample to read/<wbr/>write this encoding (with a device that
18585 supports reprocessing IMPLEMENTATION_<wbr/>DEFINED to YUV_<wbr/>420_<wbr/>888,<wbr/> and JPEG,<wbr/>
18586 and reprocessing YUV_<wbr/>420_<wbr/>888 to YUV_<wbr/>420_<wbr/>888 and JPEG):</p>
18587 <pre><code>//<wbr/> reading
18588 int32_<wbr/>t* contents = &amp;entry.<wbr/>i32[0];
18589 for (size_<wbr/>t i = 0; i &lt; entry.<wbr/>count; ) {
18590     int32_<wbr/>t format = contents[i++];
18591     int32_<wbr/>t length = contents[i++];
18592     int32_<wbr/>t output_<wbr/>formats[length];
18593     memcpy(&amp;output_<wbr/>formats[0],<wbr/> &amp;contents[i],<wbr/>
18594            length * sizeof(int32_<wbr/>t));
18595     i += length;
18596 }
18597
18598 //<wbr/> writing (static example,<wbr/> PRIVATE_<wbr/>REPROCESSING + YUV_<wbr/>REPROCESSING)
18599 int32_<wbr/>t[] contents = {
18600   IMPLEMENTATION_<wbr/>DEFINED,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18601   YUV_<wbr/>420_<wbr/>888,<wbr/> 2,<wbr/> YUV_<wbr/>420_<wbr/>888,<wbr/> BLOB,<wbr/>
18602 };
18603 update_<wbr/>camera_<wbr/>metadata_<wbr/>entry(metadata,<wbr/> index,<wbr/> &amp;contents[0],<wbr/>
18604       sizeof(contents)/<wbr/>sizeof(contents[0]),<wbr/> &amp;updated_<wbr/>entry);
18605 </code></pre>
18606 <p>If the HAL claims to support any of the capabilities listed in the
18607 above details,<wbr/> then it must also support all the input-output
18608 combinations listed for that capability.<wbr/> It can optionally support
18609 additional formats if it so chooses.<wbr/></p>
18610             </td>
18611           </tr>
18612
18613           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18614            <!-- end of entry -->
18615         
18616                 
18617           <tr class="entry" id="static_android.scaler.availableStreamConfigurations">
18618             <td class="entry_name
18619              " rowspan="5">
18620               android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations
18621             </td>
18622             <td class="entry_type">
18623                 <span class="entry_type_name entry_type_name_enum">int32</span>
18624                 <span class="entry_type_container">x</span>
18625
18626                 <span class="entry_type_array">
18627                   n x 4
18628                 </span>
18629               <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
18630
18631
18632               <span class="entry_type_hwlevel">[legacy] </span>
18633
18634
18635
18636                 <ul class="entry_type_enum">
18637                   <li>
18638                     <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
18639                   </li>
18640                   <li>
18641                     <span class="entry_type_enum_name">INPUT (v3.2)</span>
18642                   </li>
18643                 </ul>
18644
18645             </td> <!-- entry_type -->
18646
18647             <td class="entry_description">
18648               <p>The available stream configurations that this
18649 camera device supports
18650 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
18651             </td>
18652
18653             <td class="entry_units">
18654             </td>
18655
18656             <td class="entry_range">
18657             </td>
18658
18659             <td class="entry_hal_version">
18660               <p>3.<wbr/>2</p>
18661             </td>
18662
18663             <td class="entry_tags">
18664             </td>
18665
18666           </tr>
18667           <tr class="entries_header">
18668             <th class="th_details" colspan="6">Details</th>
18669           </tr>
18670           <tr class="entry_cont">
18671             <td class="entry_details" colspan="6">
18672               <p>The configurations are listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code>
18673 tuples.<wbr/></p>
18674 <p>For a given use case,<wbr/> the actual maximum supported resolution
18675 may be lower than what is listed here,<wbr/> depending on the destination
18676 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
18677 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
18678 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
18679 can provide.<wbr/></p>
18680 <p>Please reference the documentation for the image data destination to
18681 check if it limits the maximum size for image data.<wbr/></p>
18682 <p>Not all output formats may be supported in a configuration with
18683 an input stream of a particular format.<wbr/> For more details,<wbr/> see
18684 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
18685 <p>The following table describes the minimum required output stream
18686 configurations based on the hardware level
18687 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
18688 <table>
18689 <thead>
18690 <tr>
18691 <th align="center">Format</th>
18692 <th align="center">Size</th>
18693 <th align="center">Hardware Level</th>
18694 <th align="center">Notes</th>
18695 </tr>
18696 </thead>
18697 <tbody>
18698 <tr>
18699 <td align="center">JPEG</td>
18700 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a></td>
18701 <td align="center">Any</td>
18702 <td align="center"></td>
18703 </tr>
18704 <tr>
18705 <td align="center">JPEG</td>
18706 <td align="center">1920x1080 (1080p)</td>
18707 <td align="center">Any</td>
18708 <td align="center">if 1080p &lt;= activeArraySize</td>
18709 </tr>
18710 <tr>
18711 <td align="center">JPEG</td>
18712 <td align="center">1280x720 (720)</td>
18713 <td align="center">Any</td>
18714 <td align="center">if 720p &lt;= activeArraySize</td>
18715 </tr>
18716 <tr>
18717 <td align="center">JPEG</td>
18718 <td align="center">640x480 (480p)</td>
18719 <td align="center">Any</td>
18720 <td align="center">if 480p &lt;= activeArraySize</td>
18721 </tr>
18722 <tr>
18723 <td align="center">JPEG</td>
18724 <td align="center">320x240 (240p)</td>
18725 <td align="center">Any</td>
18726 <td align="center">if 240p &lt;= activeArraySize</td>
18727 </tr>
18728 <tr>
18729 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
18730 <td align="center">all output sizes available for JPEG</td>
18731 <td align="center">FULL</td>
18732 <td align="center"></td>
18733 </tr>
18734 <tr>
18735 <td align="center">YUV_<wbr/>420_<wbr/>888</td>
18736 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
18737 <td align="center">LIMITED</td>
18738 <td align="center"></td>
18739 </tr>
18740 <tr>
18741 <td align="center">IMPLEMENTATION_<wbr/>DEFINED</td>
18742 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
18743 <td align="center">Any</td>
18744 <td align="center"></td>
18745 </tr>
18746 </tbody>
18747 </table>
18748 <p>Refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> for additional
18749 mandatory stream configurations on a per-capability basis.<wbr/></p>
18750             </td>
18751           </tr>
18752
18753           <tr class="entries_header">
18754             <th class="th_details" colspan="6">HAL Implementation Details</th>
18755           </tr>
18756           <tr class="entry_cont">
18757             <td class="entry_details" colspan="6">
18758               <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
18759 of sensor maximum resolution for JPEG formats (regardless of hardware
18760 level).<wbr/></p>
18761 <p>(The following is a rewording of the above required table):</p>
18762 <p>For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
18763 <ul>
18764 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
18765 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
18766 (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/>
18767 it does not have to be included in the supported JPEG sizes.<wbr/></li>
18768 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
18769 the dimensions being a multiple of 16.<wbr/></li>
18770 </ul>
18771 <p>Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
18772 However,<wbr/> the largest JPEG size must be as close as possible to the sensor maximum
18773 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
18774 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
18775 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
18776 ratio 4:3,<wbr/> the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
18777 3264x2448.<wbr/></p>
18778 <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/>
18779 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
18780 here as output streams.<wbr/></p>
18781 <p>It must also include each below resolution if it is smaller than or
18782 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
18783 formats),<wbr/> as output streams:</p>
18784 <ul>
18785 <li>240p (320 x 240)</li>
18786 <li>480p (640 x 480)</li>
18787 <li>720p (1280 x 720)</li>
18788 <li>1080p (1920 x 1080)</li>
18789 </ul>
18790 <p>For LIMITED capability devices
18791 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
18792 the HAL only has to list up to the maximum video size
18793 supported by the device.<wbr/></p>
18794 <p>Regardless of hardware level,<wbr/> every output resolution available for
18795 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
18796 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
18797 <ul>
18798 <li>availableFormats</li>
18799 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
18800 </ul>
18801             </td>
18802           </tr>
18803
18804           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18805            <!-- end of entry -->
18806         
18807                 
18808           <tr class="entry" id="static_android.scaler.availableMinFrameDurations">
18809             <td class="entry_name
18810              " rowspan="3">
18811               android.<wbr/>scaler.<wbr/>available<wbr/>Min<wbr/>Frame<wbr/>Durations
18812             </td>
18813             <td class="entry_type">
18814                 <span class="entry_type_name">int64</span>
18815                 <span class="entry_type_container">x</span>
18816
18817                 <span class="entry_type_array">
18818                   4 x n
18819                 </span>
18820               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
18821
18822
18823               <span class="entry_type_hwlevel">[legacy] </span>
18824
18825
18826
18827
18828             </td> <!-- entry_type -->
18829
18830             <td class="entry_description">
18831               <p>This lists the minimum frame duration for each
18832 format/<wbr/>size combination.<wbr/></p>
18833             </td>
18834
18835             <td class="entry_units">
18836               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
18837             </td>
18838
18839             <td class="entry_range">
18840             </td>
18841
18842             <td class="entry_hal_version">
18843               <p>3.<wbr/>2</p>
18844             </td>
18845
18846             <td class="entry_tags">
18847               <ul class="entry_tags">
18848                   <li><a href="#tag_V1">V1</a></li>
18849               </ul>
18850             </td>
18851
18852           </tr>
18853           <tr class="entries_header">
18854             <th class="th_details" colspan="6">Details</th>
18855           </tr>
18856           <tr class="entry_cont">
18857             <td class="entry_details" colspan="6">
18858               <p>This should correspond to the frame duration when only that
18859 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
18860 set to either OFF or FAST.<wbr/></p>
18861 <p>When multiple streams are used in a request,<wbr/> the minimum frame
18862 duration will be max(individual stream min durations).<wbr/></p>
18863 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
18864 is the same regardless of whether the stream is input or output.<wbr/></p>
18865 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
18866 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
18867 calculating the max frame rate.<wbr/></p>
18868             </td>
18869           </tr>
18870
18871
18872           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18873            <!-- end of entry -->
18874         
18875                 
18876           <tr class="entry" id="static_android.scaler.availableStallDurations">
18877             <td class="entry_name
18878              " rowspan="5">
18879               android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations
18880             </td>
18881             <td class="entry_type">
18882                 <span class="entry_type_name">int64</span>
18883                 <span class="entry_type_container">x</span>
18884
18885                 <span class="entry_type_array">
18886                   4 x n
18887                 </span>
18888               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
18889
18890
18891               <span class="entry_type_hwlevel">[legacy] </span>
18892
18893
18894
18895
18896             </td> <!-- entry_type -->
18897
18898             <td class="entry_description">
18899               <p>This lists the maximum stall duration for each
18900 output format/<wbr/>size combination.<wbr/></p>
18901             </td>
18902
18903             <td class="entry_units">
18904               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
18905             </td>
18906
18907             <td class="entry_range">
18908             </td>
18909
18910             <td class="entry_hal_version">
18911               <p>3.<wbr/>2</p>
18912             </td>
18913
18914             <td class="entry_tags">
18915               <ul class="entry_tags">
18916                   <li><a href="#tag_V1">V1</a></li>
18917               </ul>
18918             </td>
18919
18920           </tr>
18921           <tr class="entries_header">
18922             <th class="th_details" colspan="6">Details</th>
18923           </tr>
18924           <tr class="entry_cont">
18925             <td class="entry_details" colspan="6">
18926               <p>A stall duration is how much extra time would get added
18927 to the normal minimum frame duration for a repeating request
18928 that has streams with non-zero stall.<wbr/></p>
18929 <p>For example,<wbr/> consider JPEG captures which have the following
18930 characteristics:</p>
18931 <ul>
18932 <li>JPEG streams act like processed YUV streams in requests for which
18933 they are not included; in requests in which they are directly
18934 referenced,<wbr/> they act as JPEG streams.<wbr/> This is because supporting a
18935 JPEG stream requires the underlying YUV data to always be ready for
18936 use by a JPEG encoder,<wbr/> but the encoder will only be used (and impact
18937 frame duration) on requests that actually reference a JPEG stream.<wbr/></li>
18938 <li>The JPEG processor can run concurrently to the rest of the camera
18939 pipeline,<wbr/> but cannot process more than 1 capture at a time.<wbr/></li>
18940 </ul>
18941 <p>In other words,<wbr/> using a repeating YUV request would result
18942 in a steady frame rate (let's say it's 30 FPS).<wbr/> If a single
18943 JPEG request is submitted periodically,<wbr/> the frame rate will stay
18944 at 30 FPS (as long as we wait for the previous JPEG to return each
18945 time).<wbr/> If we try to submit a repeating YUV + JPEG request,<wbr/> then
18946 the frame rate will drop from 30 FPS.<wbr/></p>
18947 <p>In general,<wbr/> submitting a new request with a non-0 stall time
18948 stream will <em>not</em> cause a frame rate drop unless there are still
18949 outstanding buffers for that stream from previous requests.<wbr/></p>
18950 <p>Submitting a repeating request with streams (call this <code>S</code>)
18951 is the same as setting the minimum frame duration from
18952 the normal minimum frame duration corresponding to <code>S</code>,<wbr/> added with
18953 the maximum stall duration for <code>S</code>.<wbr/></p>
18954 <p>If interleaving requests with and without a stall duration,<wbr/>
18955 a request will stall by the maximum of the remaining times
18956 for each can-stall stream with outstanding buffers.<wbr/></p>
18957 <p>This means that a stalling request will not have an exposure start
18958 until the stall has completed.<wbr/></p>
18959 <p>This should correspond to the stall duration when only that stream is
18960 active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode) set to FAST
18961 or OFF.<wbr/> Setting any of the processing modes to HIGH_<wbr/>QUALITY
18962 effectively results in an indeterminate stall duration for all
18963 streams in a request (the regular stall calculation rules are
18964 ignored).<wbr/></p>
18965 <p>The following formats may always have a stall duration:</p>
18966 <ul>
18967 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></li>
18968 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW_SENSOR">ImageFormat#RAW_<wbr/>SENSOR</a></li>
18969 </ul>
18970 <p>The following formats will never have a stall duration:</p>
18971 <ul>
18972 <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>
18973 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW10">ImageFormat#RAW10</a></li>
18974 <li><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#RAW12">ImageFormat#RAW12</a></li>
18975 </ul>
18976 <p>All other formats may or may not have an allowed stall duration on
18977 a per-capability basis; refer to <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>
18978 for more details.<wbr/></p>
18979 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> for more information about
18980 calculating the max frame rate (absent stalls).<wbr/></p>
18981             </td>
18982           </tr>
18983
18984           <tr class="entries_header">
18985             <th class="th_details" colspan="6">HAL Implementation Details</th>
18986           </tr>
18987           <tr class="entry_cont">
18988             <td class="entry_details" colspan="6">
18989               <p>If possible,<wbr/> it is recommended that all non-JPEG formats
18990 (such as RAW16) should not have a stall duration.<wbr/> RAW10,<wbr/> RAW12,<wbr/> RAW_<wbr/>OPAQUE
18991 and IMPLEMENTATION_<wbr/>DEFINED must not have stall durations.<wbr/></p>
18992             </td>
18993           </tr>
18994
18995           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
18996            <!-- end of entry -->
18997         
18998                 
18999           <tr class="entry" id="static_android.scaler.streamConfigurationMap">
19000             <td class="entry_name
19001              " rowspan="5">
19002               android.<wbr/>scaler.<wbr/>stream<wbr/>Configuration<wbr/>Map
19003             </td>
19004             <td class="entry_type">
19005                 <span class="entry_type_name">int32</span>
19006
19007               <span class="entry_type_visibility"> [java_public as streamConfigurationMap]</span>
19008
19009               <span class="entry_type_synthetic">[synthetic] </span>
19010
19011               <span class="entry_type_hwlevel">[legacy] </span>
19012
19013
19014
19015
19016             </td> <!-- entry_type -->
19017
19018             <td class="entry_description">
19019               <p>The available stream configurations that this
19020 camera device supports; also includes the minimum frame durations
19021 and the stall durations for each format/<wbr/>size combination.<wbr/></p>
19022             </td>
19023
19024             <td class="entry_units">
19025             </td>
19026
19027             <td class="entry_range">
19028             </td>
19029
19030             <td class="entry_hal_version">
19031               <p>3.<wbr/>2</p>
19032             </td>
19033
19034             <td class="entry_tags">
19035             </td>
19036
19037           </tr>
19038           <tr class="entries_header">
19039             <th class="th_details" colspan="6">Details</th>
19040           </tr>
19041           <tr class="entry_cont">
19042             <td class="entry_details" colspan="6">
19043               <p>All camera devices will support sensor maximum resolution (defined by
19044 <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>
19045 <p>For a given use case,<wbr/> the actual maximum supported resolution
19046 may be lower than what is listed here,<wbr/> depending on the destination
19047 Surface for the image data.<wbr/> For example,<wbr/> for recording video,<wbr/>
19048 the video encoder chosen may have a maximum size limit (e.<wbr/>g.<wbr/> 1080p)
19049 smaller than what the camera (e.<wbr/>g.<wbr/> maximum resolution is 3264x2448)
19050 can provide.<wbr/></p>
19051 <p>Please reference the documentation for the image data destination to
19052 check if it limits the maximum size for image data.<wbr/></p>
19053 <p>The following table describes the minimum required output stream
19054 configurations based on the hardware level
19055 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a>):</p>
19056 <table>
19057 <thead>
19058 <tr>
19059 <th align="center">Format</th>
19060 <th align="center">Size</th>
19061 <th align="center">Hardware Level</th>
19062 <th align="center">Notes</th>
19063 </tr>
19064 </thead>
19065 <tbody>
19066 <tr>
19067 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19068 <td align="center"><a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> (*1)</td>
19069 <td align="center">Any</td>
19070 <td align="center"></td>
19071 </tr>
19072 <tr>
19073 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19074 <td align="center">1920x1080 (1080p)</td>
19075 <td align="center">Any</td>
19076 <td align="center">if 1080p &lt;= activeArraySize</td>
19077 </tr>
19078 <tr>
19079 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19080 <td align="center">1280x720 (720p)</td>
19081 <td align="center">Any</td>
19082 <td align="center">if 720p &lt;= activeArraySize</td>
19083 </tr>
19084 <tr>
19085 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19086 <td align="center">640x480 (480p)</td>
19087 <td align="center">Any</td>
19088 <td align="center">if 480p &lt;= activeArraySize</td>
19089 </tr>
19090 <tr>
19091 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#JPEG">ImageFormat#JPEG</a></td>
19092 <td align="center">320x240 (240p)</td>
19093 <td align="center">Any</td>
19094 <td align="center">if 240p &lt;= activeArraySize</td>
19095 </tr>
19096 <tr>
19097 <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>
19098 <td align="center">all output sizes available for JPEG</td>
19099 <td align="center">FULL</td>
19100 <td align="center"></td>
19101 </tr>
19102 <tr>
19103 <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>
19104 <td align="center">all output sizes available for JPEG,<wbr/> up to the maximum video size</td>
19105 <td align="center">LIMITED</td>
19106 <td align="center"></td>
19107 </tr>
19108 <tr>
19109 <td align="center"><a href="https://developer.android.com/reference/android/graphics/ImageFormat.html#PRIVATE">ImageFormat#PRIVATE</a></td>
19110 <td align="center">same as YUV_<wbr/>420_<wbr/>888</td>
19111 <td align="center">Any</td>
19112 <td align="center"></td>
19113 </tr>
19114 </tbody>
19115 </table>
19116 <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
19117 stream configurations on a per-capability basis.<wbr/></p>
19118 <p>*1: For JPEG format,<wbr/> the sizes may be restricted by below conditions:</p>
19119 <ul>
19120 <li>The HAL may choose the aspect ratio of each Jpeg size to be one of well known ones
19121 (e.<wbr/>g.<wbr/> 4:3,<wbr/> 16:9,<wbr/> 3:2 etc.<wbr/>).<wbr/> If the sensor maximum resolution
19122 (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/>
19123 it does not have to be included in the supported JPEG sizes.<wbr/></li>
19124 <li>Some hardware JPEG encoders may have pixel boundary alignment requirements,<wbr/> such as
19125 the dimensions being a multiple of 16.<wbr/>
19126 Therefore,<wbr/> the maximum JPEG size may be smaller than sensor maximum resolution.<wbr/>
19127 However,<wbr/> the largest JPEG size will be as close as possible to the sensor maximum
19128 resolution given above constraints.<wbr/> It is required that after aspect ratio adjustments,<wbr/>
19129 additional size reduction due to other issues must be less than 3% in area.<wbr/> For example,<wbr/>
19130 if the sensor maximum resolution is 3280x2464,<wbr/> if the maximum JPEG size has aspect
19131 ratio 4:3,<wbr/> and the JPEG encoder alignment requirement is 16,<wbr/> the maximum JPEG size will be
19132 3264x2448.<wbr/></li>
19133 </ul>
19134             </td>
19135           </tr>
19136
19137           <tr class="entries_header">
19138             <th class="th_details" colspan="6">HAL Implementation Details</th>
19139           </tr>
19140           <tr class="entry_cont">
19141             <td class="entry_details" colspan="6">
19142               <p>Do not set this property directly
19143 (it is synthetic and will not be available at the HAL layer);
19144 set the <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> instead.<wbr/></p>
19145 <p>Not all output formats may be supported in a configuration with
19146 an input stream of a particular format.<wbr/> For more details,<wbr/> see
19147 <a href="#static_android.scaler.availableInputOutputFormatsMap">android.<wbr/>scaler.<wbr/>available<wbr/>Input<wbr/>Output<wbr/>Formats<wbr/>Map</a>.<wbr/></p>
19148 <p>It is recommended (but not mandatory) to also include half/<wbr/>quarter
19149 of sensor maximum resolution for JPEG formats (regardless of hardware
19150 level).<wbr/></p>
19151 <p>(The following is a rewording of the above required table):</p>
19152 <p>The HAL must include sensor maximum resolution (defined by
19153 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>).<wbr/></p>
19154 <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/>
19155 the HAL must include all YUV_<wbr/>420_<wbr/>888 sizes that have JPEG sizes listed
19156 here as output streams.<wbr/></p>
19157 <p>It must also include each below resolution if it is smaller than or
19158 equal to the sensor maximum resolution (for both YUV_<wbr/>420_<wbr/>888 and JPEG
19159 formats),<wbr/> as output streams:</p>
19160 <ul>
19161 <li>240p (320 x 240)</li>
19162 <li>480p (640 x 480)</li>
19163 <li>720p (1280 x 720)</li>
19164 <li>1080p (1920 x 1080)</li>
19165 </ul>
19166 <p>For LIMITED capability devices
19167 (<code><a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == LIMITED</code>),<wbr/>
19168 the HAL only has to list up to the maximum video size
19169 supported by the device.<wbr/></p>
19170 <p>Regardless of hardware level,<wbr/> every output resolution available for
19171 YUV_<wbr/>420_<wbr/>888 must also be available for IMPLEMENTATION_<wbr/>DEFINED.<wbr/></p>
19172 <p>This supercedes the following fields,<wbr/> which are now deprecated:</p>
19173 <ul>
19174 <li>availableFormats</li>
19175 <li>available[Processed,<wbr/>Raw,<wbr/>Jpeg]Sizes</li>
19176 </ul>
19177             </td>
19178           </tr>
19179
19180           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19181            <!-- end of entry -->
19182         
19183                 
19184           <tr class="entry" id="static_android.scaler.croppingType">
19185             <td class="entry_name
19186              " rowspan="3">
19187               android.<wbr/>scaler.<wbr/>cropping<wbr/>Type
19188             </td>
19189             <td class="entry_type">
19190                 <span class="entry_type_name entry_type_name_enum">byte</span>
19191
19192               <span class="entry_type_visibility"> [public]</span>
19193
19194
19195               <span class="entry_type_hwlevel">[legacy] </span>
19196
19197
19198
19199                 <ul class="entry_type_enum">
19200                   <li>
19201                     <span class="entry_type_enum_name">CENTER_ONLY (v3.2)</span>
19202                     <span class="entry_type_enum_notes"><p>The camera device only supports centered crop regions.<wbr/></p></span>
19203                   </li>
19204                   <li>
19205                     <span class="entry_type_enum_name">FREEFORM (v3.2)</span>
19206                     <span class="entry_type_enum_notes"><p>The camera device supports arbitrarily chosen crop regions.<wbr/></p></span>
19207                   </li>
19208                 </ul>
19209
19210             </td> <!-- entry_type -->
19211
19212             <td class="entry_description">
19213               <p>The crop type that this camera device supports.<wbr/></p>
19214             </td>
19215
19216             <td class="entry_units">
19217             </td>
19218
19219             <td class="entry_range">
19220             </td>
19221
19222             <td class="entry_hal_version">
19223               <p>3.<wbr/>2</p>
19224             </td>
19225
19226             <td class="entry_tags">
19227             </td>
19228
19229           </tr>
19230           <tr class="entries_header">
19231             <th class="th_details" colspan="6">Details</th>
19232           </tr>
19233           <tr class="entry_cont">
19234             <td class="entry_details" colspan="6">
19235               <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
19236 device that only supports CENTER_<wbr/>ONLY cropping,<wbr/> the camera device will move the
19237 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>)
19238 and keep the crop region width and height unchanged.<wbr/> The camera device will return the
19239 final used crop region in metadata result <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>.<wbr/></p>
19240 <p>Camera devices that support FREEFORM cropping will support any crop region that
19241 is inside of the active array.<wbr/> The camera device will apply the same crop region and
19242 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>
19243 <p>LEGACY capability devices will only support CENTER_<wbr/>ONLY cropping.<wbr/></p>
19244             </td>
19245           </tr>
19246
19247
19248           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19249            <!-- end of entry -->
19250         
19251         
19252
19253       <!-- end of kind -->
19254       </tbody>
19255       <tr><td colspan="7" class="kind">dynamic</td></tr>
19256
19257       <thead class="entries_header">
19258         <tr>
19259           <th class="th_name">Property Name</th>
19260           <th class="th_type">Type</th>
19261           <th class="th_description">Description</th>
19262           <th class="th_units">Units</th>
19263           <th class="th_range">Range</th>
19264           <th class="th_hal_version">Initial HIDL HAL version</th>
19265           <th class="th_tags">Tags</th>
19266         </tr>
19267       </thead>
19268
19269       <tbody>
19270
19271         
19272
19273         
19274
19275         
19276
19277         
19278
19279                 
19280           <tr class="entry" id="dynamic_android.scaler.cropRegion">
19281             <td class="entry_name
19282              " rowspan="5">
19283               android.<wbr/>scaler.<wbr/>crop<wbr/>Region
19284             </td>
19285             <td class="entry_type">
19286                 <span class="entry_type_name">int32</span>
19287                 <span class="entry_type_container">x</span>
19288
19289                 <span class="entry_type_array">
19290                   4
19291                 </span>
19292               <span class="entry_type_visibility"> [public as rectangle]</span>
19293
19294
19295               <span class="entry_type_hwlevel">[legacy] </span>
19296
19297
19298
19299
19300             </td> <!-- entry_type -->
19301
19302             <td class="entry_description">
19303               <p>The desired region of the sensor to read out for this capture.<wbr/></p>
19304             </td>
19305
19306             <td class="entry_units">
19307               Pixel coordinates relative to
19308           android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19309             </td>
19310
19311             <td class="entry_range">
19312             </td>
19313
19314             <td class="entry_hal_version">
19315               <p>3.<wbr/>2</p>
19316             </td>
19317
19318             <td class="entry_tags">
19319               <ul class="entry_tags">
19320                   <li><a href="#tag_BC">BC</a></li>
19321               </ul>
19322             </td>
19323
19324           </tr>
19325           <tr class="entries_header">
19326             <th class="th_details" colspan="6">Details</th>
19327           </tr>
19328           <tr class="entry_cont">
19329             <td class="entry_details" colspan="6">
19330               <p>This control can be used to implement digital zoom.<wbr/></p>
19331 <p>The crop region coordinate system is based off
19332 <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
19333 top-left corner of the sensor active array.<wbr/></p>
19334 <p>Output streams use this rectangle to produce their output,<wbr/>
19335 cropping to a smaller region if necessary to maintain the
19336 stream's aspect ratio,<wbr/> then scaling the sensor input to
19337 match the output's configured resolution.<wbr/></p>
19338 <p>The crop region is applied after the RAW to other color
19339 space (e.<wbr/>g.<wbr/> YUV) conversion.<wbr/> Since raw streams
19340 (e.<wbr/>g.<wbr/> RAW16) don't have the conversion stage,<wbr/> they are not
19341 croppable.<wbr/> The crop region will be ignored by raw streams.<wbr/></p>
19342 <p>For non-raw streams,<wbr/> any additional per-stream cropping will
19343 be done to maximize the final pixel area of the stream.<wbr/></p>
19344 <p>For example,<wbr/> if the crop region is set to a 4:3 aspect
19345 ratio,<wbr/> then 4:3 streams will use the exact crop
19346 region.<wbr/> 16:9 streams will further crop vertically
19347 (letterbox).<wbr/></p>
19348 <p>Conversely,<wbr/> if the crop region is set to a 16:9,<wbr/> then 4:3
19349 outputs will crop horizontally (pillarbox),<wbr/> and 16:9
19350 streams will match exactly.<wbr/> These additional crops will
19351 be centered within the crop region.<wbr/></p>
19352 <p>The width and height of the crop region cannot
19353 be set to be smaller than
19354 <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
19355 <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>
19356 <p>The camera device may adjust the crop region to account
19357 for rounding and other hardware requirements; the final
19358 crop region used will be included in the output capture
19359 result.<wbr/></p>
19360             </td>
19361           </tr>
19362
19363           <tr class="entries_header">
19364             <th class="th_details" colspan="6">HAL Implementation Details</th>
19365           </tr>
19366           <tr class="entry_cont">
19367             <td class="entry_details" colspan="6">
19368               <p>The output streams must maintain square pixels at all
19369 times,<wbr/> no matter what the relative aspect ratios of the
19370 crop region and the stream are.<wbr/>  Negative values for
19371 corner are allowed for raw output if full pixel array is
19372 larger than active pixel array.<wbr/> Width and height may be
19373 rounded to nearest larger supportable width,<wbr/> especially
19374 for raw output,<wbr/> where only a few fixed scales may be
19375 possible.<wbr/></p>
19376 <p>For a set of output streams configured,<wbr/> if the sensor output is cropped to a smaller
19377 size than active array size,<wbr/> the HAL need follow below cropping rules:</p>
19378 <ul>
19379 <li>
19380 <p>The HAL need handle the cropRegion as if the sensor crop size is the effective active
19381 array size.<wbr/>More specifically,<wbr/> the HAL must transform the request cropRegion from
19382 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> to the sensor cropped pixel area size in this way:</p>
19383 <ol>
19384 <li>Translate the requested cropRegion w.<wbr/>r.<wbr/>t.,<wbr/> the left top corner of the sensor
19385 cropped pixel area by (tx,<wbr/> ty),<wbr/>
19386 where <code>tx = sensorCrop.<wbr/>top * (sensorCrop.<wbr/>height /<wbr/> activeArraySize.<wbr/>height)</code>
19387 and <code>tx = sensorCrop.<wbr/>left * (sensorCrop.<wbr/>width /<wbr/> activeArraySize.<wbr/>width)</code>.<wbr/> The
19388 (sensorCrop.<wbr/>top,<wbr/> sensorCrop.<wbr/>left) is the coordinate based off the
19389 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></li>
19390 <li>Scale the width and height of requested cropRegion with scaling factor of
19391 sensor<wbr/>Crop.<wbr/>width/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>width and sensor<wbr/>Crop.<wbr/>height/<wbr/>active<wbr/>Array<wbr/>Size.<wbr/>height
19392 respectively.<wbr/>
19393 Once this new cropRegion is calculated,<wbr/> the HAL must use this region to crop the image
19394 with regard to the sensor crop size (effective active array size).<wbr/> The HAL still need
19395 follow the general cropping rule for this new cropRegion and effective active
19396 array size.<wbr/></li>
19397 </ol>
19398 </li>
19399 <li>
19400 <p>The HAL must report the cropRegion with regard to <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/>
19401 The HAL need convert the new cropRegion generated above w.<wbr/>r.<wbr/>t.,<wbr/> full active array size.<wbr/>
19402 The reported cropRegion may be slightly different with the requested cropRegion since
19403 the HAL may adjust the crop region to account for rounding,<wbr/> conversion error,<wbr/> or other
19404 hardware limitations.<wbr/></p>
19405 </li>
19406 </ul>
19407 <p>HAL2.<wbr/>x uses only (x,<wbr/> y,<wbr/> width)</p>
19408             </td>
19409           </tr>
19410
19411           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19412            <!-- end of entry -->
19413         
19414         
19415
19416       <!-- end of kind -->
19417       </tbody>
19418
19419   <!-- end of section -->
19420   <tr><td colspan="7" id="section_sensor" class="section">sensor</td></tr>
19421
19422
19423       <tr><td colspan="7" class="kind">controls</td></tr>
19424
19425       <thead class="entries_header">
19426         <tr>
19427           <th class="th_name">Property Name</th>
19428           <th class="th_type">Type</th>
19429           <th class="th_description">Description</th>
19430           <th class="th_units">Units</th>
19431           <th class="th_range">Range</th>
19432           <th class="th_hal_version">Initial HIDL HAL version</th>
19433           <th class="th_tags">Tags</th>
19434         </tr>
19435       </thead>
19436
19437       <tbody>
19438
19439         
19440
19441         
19442
19443         
19444
19445         
19446
19447                 
19448           <tr class="entry" id="controls_android.sensor.exposureTime">
19449             <td class="entry_name
19450              " rowspan="3">
19451               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
19452             </td>
19453             <td class="entry_type">
19454                 <span class="entry_type_name">int64</span>
19455
19456               <span class="entry_type_visibility"> [public]</span>
19457
19458
19459               <span class="entry_type_hwlevel">[full] </span>
19460
19461
19462
19463
19464             </td> <!-- entry_type -->
19465
19466             <td class="entry_description">
19467               <p>Duration each pixel is exposed to
19468 light.<wbr/></p>
19469             </td>
19470
19471             <td class="entry_units">
19472               Nanoseconds
19473             </td>
19474
19475             <td class="entry_range">
19476               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
19477             </td>
19478
19479             <td class="entry_hal_version">
19480               <p>3.<wbr/>2</p>
19481             </td>
19482
19483             <td class="entry_tags">
19484               <ul class="entry_tags">
19485                   <li><a href="#tag_V1">V1</a></li>
19486               </ul>
19487             </td>
19488
19489           </tr>
19490           <tr class="entries_header">
19491             <th class="th_details" colspan="6">Details</th>
19492           </tr>
19493           <tr class="entry_cont">
19494             <td class="entry_details" colspan="6">
19495               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
19496 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
19497 The final exposure time used will be available in the output capture result.<wbr/></p>
19498 <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
19499 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19500             </td>
19501           </tr>
19502
19503
19504           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19505            <!-- end of entry -->
19506         
19507                 
19508           <tr class="entry" id="controls_android.sensor.frameDuration">
19509             <td class="entry_name
19510              " rowspan="5">
19511               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
19512             </td>
19513             <td class="entry_type">
19514                 <span class="entry_type_name">int64</span>
19515
19516               <span class="entry_type_visibility"> [public]</span>
19517
19518
19519               <span class="entry_type_hwlevel">[full] </span>
19520
19521
19522
19523
19524             </td> <!-- entry_type -->
19525
19526             <td class="entry_description">
19527               <p>Duration from start of frame exposure to
19528 start of next frame exposure.<wbr/></p>
19529             </td>
19530
19531             <td class="entry_units">
19532               Nanoseconds
19533             </td>
19534
19535             <td class="entry_range">
19536               <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>.<wbr/>
19537 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
19538             </td>
19539
19540             <td class="entry_hal_version">
19541               <p>3.<wbr/>2</p>
19542             </td>
19543
19544             <td class="entry_tags">
19545               <ul class="entry_tags">
19546                   <li><a href="#tag_V1">V1</a></li>
19547               </ul>
19548             </td>
19549
19550           </tr>
19551           <tr class="entries_header">
19552             <th class="th_details" colspan="6">Details</th>
19553           </tr>
19554           <tr class="entry_cont">
19555             <td class="entry_details" colspan="6">
19556               <p>The maximum frame rate that can be supported by a camera subsystem is
19557 a function of many factors:</p>
19558 <ul>
19559 <li>Requested resolutions of output image streams</li>
19560 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
19561 <li>The bandwidth of the imager interface</li>
19562 <li>The bandwidth of the various ISP processing blocks</li>
19563 </ul>
19564 <p>Since these factors can vary greatly between different ISPs and
19565 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
19566 restrictions with as simple a model as possible.<wbr/></p>
19567 <p>The model presented has the following characteristics:</p>
19568 <ul>
19569 <li>The image sensor is always configured to output the smallest
19570 resolution possible given the application's requested output stream
19571 sizes.<wbr/>  The smallest resolution is defined as being at least as large
19572 as the largest requested output stream size; the camera pipeline must
19573 never digitally upsample sensor data when the crop region covers the
19574 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
19575 resolutions are configured,<wbr/> the sensor can provide a higher frame
19576 rate.<wbr/></li>
19577 <li>Since any request may use any or all the currently configured
19578 output streams,<wbr/> the sensor and ISP must be configured to support
19579 scaling a single capture to all the streams at the same time.<wbr/>  This
19580 means the camera pipeline must be ready to produce the largest
19581 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
19582 frame rate of a given configured stream set is governed only by the
19583 largest requested stream resolution.<wbr/></li>
19584 <li>Using more than one output stream in a request does not affect the
19585 frame duration.<wbr/></li>
19586 <li>Certain format-streams may need to do additional background processing
19587 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
19588 can run concurrently to the rest of the camera pipeline,<wbr/> but
19589 cannot process more than 1 capture at a time.<wbr/></li>
19590 </ul>
19591 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
19592 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
19593 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
19594 possible for a given stream configuration.<wbr/></p>
19595 <p>Specifically,<wbr/> the application can use the following rules to
19596 determine the minimum frame duration it can request from the camera
19597 device:</p>
19598 <ol>
19599 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
19600 <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking it up in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
19601 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
19602 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
19603 out of all values in <code>F</code>.<wbr/> Let the streams used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
19604 </ol>
19605 <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>
19606 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
19607 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
19608 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
19609 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
19610 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
19611 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
19612 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
19613 <p>For more details about stalling,<wbr/> see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
19614 <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
19615 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19616             </td>
19617           </tr>
19618
19619           <tr class="entries_header">
19620             <th class="th_details" colspan="6">HAL Implementation Details</th>
19621           </tr>
19622           <tr class="entry_cont">
19623             <td class="entry_details" colspan="6">
19624               <p>For more details about stalling,<wbr/> see
19625 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
19626             </td>
19627           </tr>
19628
19629           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19630            <!-- end of entry -->
19631         
19632                 
19633           <tr class="entry" id="controls_android.sensor.sensitivity">
19634             <td class="entry_name
19635              " rowspan="5">
19636               android.<wbr/>sensor.<wbr/>sensitivity
19637             </td>
19638             <td class="entry_type">
19639                 <span class="entry_type_name">int32</span>
19640
19641               <span class="entry_type_visibility"> [public]</span>
19642
19643
19644               <span class="entry_type_hwlevel">[full] </span>
19645
19646
19647
19648
19649             </td> <!-- entry_type -->
19650
19651             <td class="entry_description">
19652               <p>The amount of gain applied to sensor data
19653 before processing.<wbr/></p>
19654             </td>
19655
19656             <td class="entry_units">
19657               ISO arithmetic units
19658             </td>
19659
19660             <td class="entry_range">
19661               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
19662             </td>
19663
19664             <td class="entry_hal_version">
19665               <p>3.<wbr/>2</p>
19666             </td>
19667
19668             <td class="entry_tags">
19669               <ul class="entry_tags">
19670                   <li><a href="#tag_V1">V1</a></li>
19671               </ul>
19672             </td>
19673
19674           </tr>
19675           <tr class="entries_header">
19676             <th class="th_details" colspan="6">Details</th>
19677           </tr>
19678           <tr class="entry_cont">
19679             <td class="entry_details" colspan="6">
19680               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
19681 as defined in ISO 12232:2006.<wbr/></p>
19682 <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
19683 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
19684 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
19685 <p>If the camera device cannot apply the exact sensitivity
19686 requested,<wbr/> it will reduce the gain to the nearest supported
19687 value.<wbr/> The final sensitivity used will be available in the
19688 output capture result.<wbr/></p>
19689 <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
19690 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
19691             </td>
19692           </tr>
19693
19694           <tr class="entries_header">
19695             <th class="th_details" colspan="6">HAL Implementation Details</th>
19696           </tr>
19697           <tr class="entry_cont">
19698             <td class="entry_details" colspan="6">
19699               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
19700             </td>
19701           </tr>
19702
19703           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19704            <!-- end of entry -->
19705         
19706                 
19707           <tr class="entry" id="controls_android.sensor.testPatternData">
19708             <td class="entry_name
19709              " rowspan="5">
19710               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
19711             </td>
19712             <td class="entry_type">
19713                 <span class="entry_type_name">int32</span>
19714                 <span class="entry_type_container">x</span>
19715
19716                 <span class="entry_type_array">
19717                   4
19718                 </span>
19719               <span class="entry_type_visibility"> [public]</span>
19720
19721
19722
19723
19724
19725
19726             </td> <!-- entry_type -->
19727
19728             <td class="entry_description">
19729               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
19730 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
19731             </td>
19732
19733             <td class="entry_units">
19734             </td>
19735
19736             <td class="entry_range">
19737             </td>
19738
19739             <td class="entry_hal_version">
19740               <p>3.<wbr/>2</p>
19741             </td>
19742
19743             <td class="entry_tags">
19744             </td>
19745
19746           </tr>
19747           <tr class="entries_header">
19748             <th class="th_details" colspan="6">Details</th>
19749           </tr>
19750           <tr class="entry_cont">
19751             <td class="entry_details" colspan="6">
19752               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
19753 The camera device then uses the most significant X bits
19754 that correspond to how many bits are in its Bayer raw sensor
19755 output.<wbr/></p>
19756 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
19757 10 most significant bits from each color channel.<wbr/></p>
19758             </td>
19759           </tr>
19760
19761           <tr class="entries_header">
19762             <th class="th_details" colspan="6">HAL Implementation Details</th>
19763           </tr>
19764           <tr class="entry_cont">
19765             <td class="entry_details" colspan="6">
19766               
19767             </td>
19768           </tr>
19769
19770           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19771            <!-- end of entry -->
19772         
19773                 
19774           <tr class="entry" id="controls_android.sensor.testPatternMode">
19775             <td class="entry_name
19776              " rowspan="5">
19777               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
19778             </td>
19779             <td class="entry_type">
19780                 <span class="entry_type_name entry_type_name_enum">int32</span>
19781
19782               <span class="entry_type_visibility"> [public]</span>
19783
19784
19785
19786
19787
19788                 <ul class="entry_type_enum">
19789                   <li>
19790                     <span class="entry_type_enum_name">OFF (v3.2)</span>
19791                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
19792 device returns captures from the image sensor.<wbr/></p>
19793 <p>This is the default if the key is not set.<wbr/></p></span>
19794                   </li>
19795                   <li>
19796                     <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
19797                     <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
19798 respective color channel provided in
19799 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
19800 <p>For example:</p>
19801 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19802 </code></pre>
19803 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
19804 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
19805 </code></pre>
19806 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
19807 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
19808                   </li>
19809                   <li>
19810                     <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
19811                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
19812 <p>The vertical bars (left-to-right) are as follows:</p>
19813 <ul>
19814 <li>100% white</li>
19815 <li>yellow</li>
19816 <li>cyan</li>
19817 <li>green</li>
19818 <li>magenta</li>
19819 <li>red</li>
19820 <li>blue</li>
19821 <li>black</li>
19822 </ul>
19823 <p>In general the image would look like the following:</p>
19824 <pre><code>W Y C G M R B K
19825 W Y C G M R B K
19826 W Y C G M R B K
19827 W Y C G M R B K
19828 W Y C G M R B K
19829 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19830 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19831 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
19832
19833 (B = Blue,<wbr/> K = Black)
19834 </code></pre>
19835 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
19836 When this is not possible,<wbr/> the bar size should be rounded
19837 down to the nearest integer and the pattern can repeat
19838 on the right side.<wbr/></p>
19839 <p>Each bar's height must always take up the full sensor
19840 pixel array height.<wbr/></p>
19841 <p>Each pixel in this test pattern must be set to either
19842 0% intensity or 100% intensity.<wbr/></p></span>
19843                   </li>
19844                   <li>
19845                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
19846                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
19847 each bar should start at its specified color at the top,<wbr/>
19848 and fade to gray at the bottom.<wbr/></p>
19849 <p>Furthermore each bar is further subdivided into a left and
19850 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
19851 and the right half should have a quantized gradient.<wbr/></p>
19852 <p>In particular,<wbr/> the right half's should consist of blocks of the
19853 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
19854 <p>The least significant bits in the quantized gradient should
19855 be copied from the most significant bits of the smooth gradient.<wbr/></p>
19856 <p>The height of each bar should always be a multiple of 128.<wbr/>
19857 When this is not the case,<wbr/> the pattern should repeat at the bottom
19858 of the image.<wbr/></p></span>
19859                   </li>
19860                   <li>
19861                     <span class="entry_type_enum_name">PN9 (v3.2)</span>
19862                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
19863 generated from a PN9 512-bit sequence (typically implemented
19864 in hardware with a linear feedback shift register).<wbr/></p>
19865 <p>The generator should be reset at the beginning of each frame,<wbr/>
19866 and thus each subsequent raw frame with this test pattern should
19867 be exactly the same as the last.<wbr/></p></span>
19868                   </li>
19869                   <li>
19870                     <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
19871                     <span class="entry_type_enum_value">256</span>
19872                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
19873 available only on this camera device are at least this numeric
19874 value.<wbr/></p>
19875 <p>All of the custom test patterns will be static
19876 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
19877                   </li>
19878                 </ul>
19879
19880             </td> <!-- entry_type -->
19881
19882             <td class="entry_description">
19883               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
19884 doing a real exposure from the camera.<wbr/></p>
19885             </td>
19886
19887             <td class="entry_units">
19888             </td>
19889
19890             <td class="entry_range">
19891               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
19892             </td>
19893
19894             <td class="entry_hal_version">
19895               <p>3.<wbr/>2</p>
19896             </td>
19897
19898             <td class="entry_tags">
19899             </td>
19900
19901           </tr>
19902           <tr class="entries_header">
19903             <th class="th_details" colspan="6">Details</th>
19904           </tr>
19905           <tr class="entry_cont">
19906             <td class="entry_details" colspan="6">
19907               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
19908 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
19909 work as normal.<wbr/></p>
19910 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
19911 occur (and that the test pattern remain unmodified,<wbr/> since the flash
19912 would not actually affect it).<wbr/></p>
19913 <p>Defaults to OFF.<wbr/></p>
19914             </td>
19915           </tr>
19916
19917           <tr class="entries_header">
19918             <th class="th_details" colspan="6">HAL Implementation Details</th>
19919           </tr>
19920           <tr class="entry_cont">
19921             <td class="entry_details" colspan="6">
19922               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
19923 <p>The HAL may choose to substitute test patterns from the sensor
19924 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
19925 indistinguishable to the ISP whether the data came from the
19926 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
19927             </td>
19928           </tr>
19929
19930           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
19931            <!-- end of entry -->
19932         
19933         
19934
19935       <!-- end of kind -->
19936       </tbody>
19937       <tr><td colspan="7" class="kind">static</td></tr>
19938
19939       <thead class="entries_header">
19940         <tr>
19941           <th class="th_name">Property Name</th>
19942           <th class="th_type">Type</th>
19943           <th class="th_description">Description</th>
19944           <th class="th_units">Units</th>
19945           <th class="th_range">Range</th>
19946           <th class="th_hal_version">Initial HIDL HAL version</th>
19947           <th class="th_tags">Tags</th>
19948         </tr>
19949       </thead>
19950
19951       <tbody>
19952
19953         
19954
19955         
19956
19957         
19958
19959         
19960                 
19961             
19962
19963                 
19964           <tr class="entry" id="static_android.sensor.info.activeArraySize">
19965             <td class="entry_name
19966              " rowspan="5">
19967               android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size
19968             </td>
19969             <td class="entry_type">
19970                 <span class="entry_type_name">int32</span>
19971                 <span class="entry_type_container">x</span>
19972
19973                 <span class="entry_type_array">
19974                   4
19975                 </span>
19976               <span class="entry_type_visibility"> [public as rectangle]</span>
19977
19978
19979               <span class="entry_type_hwlevel">[legacy] </span>
19980
19981
19982                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
19983
19984
19985             </td> <!-- entry_type -->
19986
19987             <td class="entry_description">
19988               <p>The area of the image sensor which corresponds to active pixels after any geometric
19989 distortion correction has been applied.<wbr/></p>
19990             </td>
19991
19992             <td class="entry_units">
19993               Pixel coordinates on the image sensor
19994             </td>
19995
19996             <td class="entry_range">
19997             </td>
19998
19999             <td class="entry_hal_version">
20000               <p>3.<wbr/>2</p>
20001             </td>
20002
20003             <td class="entry_tags">
20004               <ul class="entry_tags">
20005                   <li><a href="#tag_RAW">RAW</a></li>
20006               </ul>
20007             </td>
20008
20009           </tr>
20010           <tr class="entries_header">
20011             <th class="th_details" colspan="6">Details</th>
20012           </tr>
20013           <tr class="entry_cont">
20014             <td class="entry_details" colspan="6">
20015               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20016 the region that actually receives light from the scene) after any geometric correction
20017 has been applied,<wbr/> and should be treated as the maximum size in pixels of any of the
20018 image output formats aside from the raw formats.<wbr/></p>
20019 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20020 the full pixel array,<wbr/> and the size of the full pixel array is given by
20021 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20022 <p>The coordinate system for most other keys that list pixel coordinates,<wbr/> including
20023 <a href="#controls_android.scaler.cropRegion">android.<wbr/>scaler.<wbr/>crop<wbr/>Region</a>,<wbr/> is defined relative to the active array rectangle given in
20024 this field,<wbr/> with <code>(0,<wbr/> 0)</code> being the top-left of this rectangle.<wbr/></p>
20025 <p>The active array may be smaller than the full pixel array,<wbr/> since the full array may
20026 include black calibration pixels or other inactive regions,<wbr/> and geometric correction
20027 resulting in scaling or cropping may have been applied.<wbr/></p>
20028             </td>
20029           </tr>
20030
20031           <tr class="entries_header">
20032             <th class="th_details" colspan="6">HAL Implementation Details</th>
20033           </tr>
20034           <tr class="entry_cont">
20035             <td class="entry_details" colspan="6">
20036               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20037 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
20038 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>
20039             </td>
20040           </tr>
20041
20042           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20043            <!-- end of entry -->
20044         
20045                 
20046           <tr class="entry" id="static_android.sensor.info.sensitivityRange">
20047             <td class="entry_name
20048              " rowspan="3">
20049               android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range
20050             </td>
20051             <td class="entry_type">
20052                 <span class="entry_type_name">int32</span>
20053                 <span class="entry_type_container">x</span>
20054
20055                 <span class="entry_type_array">
20056                   2
20057                 </span>
20058               <span class="entry_type_visibility"> [public as rangeInt]</span>
20059
20060
20061               <span class="entry_type_hwlevel">[full] </span>
20062
20063
20064                 <div class="entry_type_notes">Range of supported sensitivities</div>
20065
20066
20067             </td> <!-- entry_type -->
20068
20069             <td class="entry_description">
20070               <p>Range of sensitivities for <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> supported by this
20071 camera device.<wbr/></p>
20072             </td>
20073
20074             <td class="entry_units">
20075             </td>
20076
20077             <td class="entry_range">
20078               <p>Min &lt;= 100,<wbr/> Max &gt;= 800</p>
20079             </td>
20080
20081             <td class="entry_hal_version">
20082               <p>3.<wbr/>2</p>
20083             </td>
20084
20085             <td class="entry_tags">
20086               <ul class="entry_tags">
20087                   <li><a href="#tag_BC">BC</a></li>
20088                   <li><a href="#tag_V1">V1</a></li>
20089               </ul>
20090             </td>
20091
20092           </tr>
20093           <tr class="entries_header">
20094             <th class="th_details" colspan="6">Details</th>
20095           </tr>
20096           <tr class="entry_cont">
20097             <td class="entry_details" colspan="6">
20098               <p>The values are the standard ISO sensitivity values,<wbr/>
20099 as defined in ISO 12232:2006.<wbr/></p>
20100             </td>
20101           </tr>
20102
20103
20104           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20105            <!-- end of entry -->
20106         
20107                 
20108           <tr class="entry" id="static_android.sensor.info.colorFilterArrangement">
20109             <td class="entry_name
20110              " rowspan="1">
20111               android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement
20112             </td>
20113             <td class="entry_type">
20114                 <span class="entry_type_name entry_type_name_enum">byte</span>
20115
20116               <span class="entry_type_visibility"> [public]</span>
20117
20118
20119               <span class="entry_type_hwlevel">[full] </span>
20120
20121
20122
20123                 <ul class="entry_type_enum">
20124                   <li>
20125                     <span class="entry_type_enum_name">RGGB (v3.2)</span>
20126                   </li>
20127                   <li>
20128                     <span class="entry_type_enum_name">GRBG (v3.2)</span>
20129                   </li>
20130                   <li>
20131                     <span class="entry_type_enum_name">GBRG (v3.2)</span>
20132                   </li>
20133                   <li>
20134                     <span class="entry_type_enum_name">BGGR (v3.2)</span>
20135                   </li>
20136                   <li>
20137                     <span class="entry_type_enum_name">RGB (v3.2)</span>
20138                     <span class="entry_type_enum_notes"><p>Sensor is not Bayer; output has 3 16-bit
20139 values for each pixel,<wbr/> instead of just 1 16-bit value
20140 per pixel.<wbr/></p></span>
20141                   </li>
20142                 </ul>
20143
20144             </td> <!-- entry_type -->
20145
20146             <td class="entry_description">
20147               <p>The arrangement of color filters on sensor;
20148 represents the colors in the top-left 2x2 section of
20149 the sensor,<wbr/> in reading order.<wbr/></p>
20150             </td>
20151
20152             <td class="entry_units">
20153             </td>
20154
20155             <td class="entry_range">
20156             </td>
20157
20158             <td class="entry_hal_version">
20159               <p>3.<wbr/>2</p>
20160             </td>
20161
20162             <td class="entry_tags">
20163               <ul class="entry_tags">
20164                   <li><a href="#tag_RAW">RAW</a></li>
20165               </ul>
20166             </td>
20167
20168           </tr>
20169
20170
20171           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20172            <!-- end of entry -->
20173         
20174                 
20175           <tr class="entry" id="static_android.sensor.info.exposureTimeRange">
20176             <td class="entry_name
20177              " rowspan="3">
20178               android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range
20179             </td>
20180             <td class="entry_type">
20181                 <span class="entry_type_name">int64</span>
20182                 <span class="entry_type_container">x</span>
20183
20184                 <span class="entry_type_array">
20185                   2
20186                 </span>
20187               <span class="entry_type_visibility"> [public as rangeLong]</span>
20188
20189
20190               <span class="entry_type_hwlevel">[full] </span>
20191
20192
20193                 <div class="entry_type_notes">nanoseconds</div>
20194
20195
20196             </td> <!-- entry_type -->
20197
20198             <td class="entry_description">
20199               <p>The range of image exposure times for <a href="#controls_android.sensor.exposureTime">android.<wbr/>sensor.<wbr/>exposure<wbr/>Time</a> supported
20200 by this camera device.<wbr/></p>
20201             </td>
20202
20203             <td class="entry_units">
20204               Nanoseconds
20205             </td>
20206
20207             <td class="entry_range">
20208               <p>The minimum exposure time will be less than 100 us.<wbr/> For FULL
20209 capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20210 the maximum exposure time will be greater than 100ms.<wbr/></p>
20211             </td>
20212
20213             <td class="entry_hal_version">
20214               <p>3.<wbr/>2</p>
20215             </td>
20216
20217             <td class="entry_tags">
20218               <ul class="entry_tags">
20219                   <li><a href="#tag_V1">V1</a></li>
20220               </ul>
20221             </td>
20222
20223           </tr>
20224
20225           <tr class="entries_header">
20226             <th class="th_details" colspan="6">HAL Implementation Details</th>
20227           </tr>
20228           <tr class="entry_cont">
20229             <td class="entry_details" colspan="6">
20230               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20231 The maximum of the range SHOULD be at least 1 second (1e9),<wbr/> MUST be at least
20232 100ms.<wbr/></p>
20233             </td>
20234           </tr>
20235
20236           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20237            <!-- end of entry -->
20238         
20239                 
20240           <tr class="entry" id="static_android.sensor.info.maxFrameDuration">
20241             <td class="entry_name
20242              " rowspan="5">
20243               android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration
20244             </td>
20245             <td class="entry_type">
20246                 <span class="entry_type_name">int64</span>
20247
20248               <span class="entry_type_visibility"> [public]</span>
20249
20250
20251               <span class="entry_type_hwlevel">[full] </span>
20252
20253
20254
20255
20256             </td> <!-- entry_type -->
20257
20258             <td class="entry_description">
20259               <p>The maximum possible frame duration (minimum frame rate) for
20260 <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> that is supported this camera device.<wbr/></p>
20261             </td>
20262
20263             <td class="entry_units">
20264               Nanoseconds
20265             </td>
20266
20267             <td class="entry_range">
20268               <p>For FULL capability devices
20269 (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/> at least 100ms.<wbr/></p>
20270             </td>
20271
20272             <td class="entry_hal_version">
20273               <p>3.<wbr/>2</p>
20274             </td>
20275
20276             <td class="entry_tags">
20277               <ul class="entry_tags">
20278                   <li><a href="#tag_V1">V1</a></li>
20279               </ul>
20280             </td>
20281
20282           </tr>
20283           <tr class="entries_header">
20284             <th class="th_details" colspan="6">Details</th>
20285           </tr>
20286           <tr class="entry_cont">
20287             <td class="entry_details" colspan="6">
20288               <p>Attempting to use frame durations beyond the maximum will result in the frame
20289 duration being clipped to the maximum.<wbr/> See that control for a full definition of frame
20290 durations.<wbr/></p>
20291 <p>Refer to <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
20292 for the minimum frame duration values.<wbr/></p>
20293             </td>
20294           </tr>
20295
20296           <tr class="entries_header">
20297             <th class="th_details" colspan="6">HAL Implementation Details</th>
20298           </tr>
20299           <tr class="entry_cont">
20300             <td class="entry_details" colspan="6">
20301               <p>For FULL capability devices (<a href="#static_android.info.supportedHardwareLevel">android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level</a> == FULL),<wbr/>
20302 The maximum of the range SHOULD be at least
20303 1 second (1e9),<wbr/> MUST be at least 100ms (100e6).<wbr/></p>
20304 <p><a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a> must be greater or
20305 equal to the <a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a> max
20306 value (since exposure time overrides frame duration).<wbr/></p>
20307 <p>Available minimum frame durations for JPEG must be no greater
20308 than that of the YUV_<wbr/>420_<wbr/>888/<wbr/>IMPLEMENTATION_<wbr/>DEFINED
20309 minimum frame durations (for that respective size).<wbr/></p>
20310 <p>Since JPEG processing is considered offline and can take longer than
20311 a single uncompressed capture,<wbr/> refer to
20312 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>
20313 for details about encoding this scenario.<wbr/></p>
20314             </td>
20315           </tr>
20316
20317           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20318            <!-- end of entry -->
20319         
20320                 
20321           <tr class="entry" id="static_android.sensor.info.physicalSize">
20322             <td class="entry_name
20323              " rowspan="5">
20324               android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size
20325             </td>
20326             <td class="entry_type">
20327                 <span class="entry_type_name">float</span>
20328                 <span class="entry_type_container">x</span>
20329
20330                 <span class="entry_type_array">
20331                   2
20332                 </span>
20333               <span class="entry_type_visibility"> [public as sizeF]</span>
20334
20335
20336               <span class="entry_type_hwlevel">[legacy] </span>
20337
20338
20339                 <div class="entry_type_notes">width x height</div>
20340
20341
20342             </td> <!-- entry_type -->
20343
20344             <td class="entry_description">
20345               <p>The physical dimensions of the full pixel
20346 array.<wbr/></p>
20347             </td>
20348
20349             <td class="entry_units">
20350               Millimeters
20351             </td>
20352
20353             <td class="entry_range">
20354             </td>
20355
20356             <td class="entry_hal_version">
20357               <p>3.<wbr/>2</p>
20358             </td>
20359
20360             <td class="entry_tags">
20361               <ul class="entry_tags">
20362                   <li><a href="#tag_V1">V1</a></li>
20363                   <li><a href="#tag_BC">BC</a></li>
20364               </ul>
20365             </td>
20366
20367           </tr>
20368           <tr class="entries_header">
20369             <th class="th_details" colspan="6">Details</th>
20370           </tr>
20371           <tr class="entry_cont">
20372             <td class="entry_details" colspan="6">
20373               <p>This is the physical size of the sensor pixel
20374 array defined by <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20375             </td>
20376           </tr>
20377
20378           <tr class="entries_header">
20379             <th class="th_details" colspan="6">HAL Implementation Details</th>
20380           </tr>
20381           <tr class="entry_cont">
20382             <td class="entry_details" colspan="6">
20383               <p>Needed for FOV calculation for old API</p>
20384             </td>
20385           </tr>
20386
20387           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20388            <!-- end of entry -->
20389         
20390                 
20391           <tr class="entry" id="static_android.sensor.info.pixelArraySize">
20392             <td class="entry_name
20393              " rowspan="3">
20394               android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size
20395             </td>
20396             <td class="entry_type">
20397                 <span class="entry_type_name">int32</span>
20398                 <span class="entry_type_container">x</span>
20399
20400                 <span class="entry_type_array">
20401                   2
20402                 </span>
20403               <span class="entry_type_visibility"> [public as size]</span>
20404
20405
20406               <span class="entry_type_hwlevel">[legacy] </span>
20407
20408
20409
20410
20411             </td> <!-- entry_type -->
20412
20413             <td class="entry_description">
20414               <p>Dimensions of the full pixel array,<wbr/> possibly
20415 including black calibration pixels.<wbr/></p>
20416             </td>
20417
20418             <td class="entry_units">
20419               Pixels
20420             </td>
20421
20422             <td class="entry_range">
20423             </td>
20424
20425             <td class="entry_hal_version">
20426               <p>3.<wbr/>2</p>
20427             </td>
20428
20429             <td class="entry_tags">
20430               <ul class="entry_tags">
20431                   <li><a href="#tag_RAW">RAW</a></li>
20432                   <li><a href="#tag_BC">BC</a></li>
20433               </ul>
20434             </td>
20435
20436           </tr>
20437           <tr class="entries_header">
20438             <th class="th_details" colspan="6">Details</th>
20439           </tr>
20440           <tr class="entry_cont">
20441             <td class="entry_details" colspan="6">
20442               <p>The pixel count of the full pixel array of the image sensor,<wbr/> which covers
20443 <a href="#static_android.sensor.info.physicalSize">android.<wbr/>sensor.<wbr/>info.<wbr/>physical<wbr/>Size</a> area.<wbr/>  This represents the full pixel dimensions of
20444 the raw buffers produced by this sensor.<wbr/></p>
20445 <p>If a camera device supports raw sensor formats,<wbr/> either this or
20446 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> is the maximum dimensions for the raw
20447 output formats listed in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>
20448 (this depends on whether or not the image sensor returns buffers containing pixels that
20449 are not part of the active array region for blacklevel calibration or other purposes).<wbr/></p>
20450 <p>Some parts of the full pixel array may not receive light from the scene,<wbr/>
20451 or be otherwise inactive.<wbr/>  The <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> key
20452 defines the rectangle of active pixels that will be included in processed image
20453 formats.<wbr/></p>
20454             </td>
20455           </tr>
20456
20457
20458           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20459            <!-- end of entry -->
20460         
20461                 
20462           <tr class="entry" id="static_android.sensor.info.whiteLevel">
20463             <td class="entry_name
20464              " rowspan="5">
20465               android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level
20466             </td>
20467             <td class="entry_type">
20468                 <span class="entry_type_name">int32</span>
20469
20470               <span class="entry_type_visibility"> [public]</span>
20471
20472
20473
20474
20475
20476
20477             </td> <!-- entry_type -->
20478
20479             <td class="entry_description">
20480               <p>Maximum raw value output by sensor.<wbr/></p>
20481             </td>
20482
20483             <td class="entry_units">
20484             </td>
20485
20486             <td class="entry_range">
20487               <p>&gt; 255 (8-bit output)</p>
20488             </td>
20489
20490             <td class="entry_hal_version">
20491               <p>3.<wbr/>2</p>
20492             </td>
20493
20494             <td class="entry_tags">
20495               <ul class="entry_tags">
20496                   <li><a href="#tag_RAW">RAW</a></li>
20497               </ul>
20498             </td>
20499
20500           </tr>
20501           <tr class="entries_header">
20502             <th class="th_details" colspan="6">Details</th>
20503           </tr>
20504           <tr class="entry_cont">
20505             <td class="entry_details" colspan="6">
20506               <p>This specifies the fully-saturated encoding level for the raw
20507 sample values from the sensor.<wbr/>  This is typically caused by the
20508 sensor becoming highly non-linear or clipping.<wbr/> The minimum for
20509 each channel is specified by the offset in the
20510 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> key.<wbr/></p>
20511 <p>The white level is typically determined either by sensor bit depth
20512 (8-14 bits is expected),<wbr/> or by the point where the sensor response
20513 becomes too non-linear to be useful.<wbr/>  The default value for this is
20514 maximum representable value for a 16-bit raw sample (2^16 - 1).<wbr/></p>
20515 <p>The white level values of captured images may vary for different
20516 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
20517 represents a coarse approximation for such case.<wbr/> It is recommended
20518 to use <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> for captures when supported
20519 by the camera device,<wbr/> which provides more accurate white level values.<wbr/></p>
20520             </td>
20521           </tr>
20522
20523           <tr class="entries_header">
20524             <th class="th_details" colspan="6">HAL Implementation Details</th>
20525           </tr>
20526           <tr class="entry_cont">
20527             <td class="entry_details" colspan="6">
20528               <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
20529 so the value for linear sensors should not be significantly lower
20530 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
20531             </td>
20532           </tr>
20533
20534           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20535            <!-- end of entry -->
20536         
20537                 
20538           <tr class="entry" id="static_android.sensor.info.timestampSource">
20539             <td class="entry_name
20540              " rowspan="5">
20541               android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source
20542             </td>
20543             <td class="entry_type">
20544                 <span class="entry_type_name entry_type_name_enum">byte</span>
20545
20546               <span class="entry_type_visibility"> [public]</span>
20547
20548
20549               <span class="entry_type_hwlevel">[legacy] </span>
20550
20551
20552
20553                 <ul class="entry_type_enum">
20554                   <li>
20555                     <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
20556                     <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/>
20557 but can not be compared to timestamps from other subsystems
20558 (e.<wbr/>g.<wbr/> accelerometer,<wbr/> gyro etc.<wbr/>),<wbr/> or other instances of the same or different
20559 camera devices in the same system.<wbr/> Timestamps between streams and results for
20560 a single camera instance are comparable,<wbr/> and the timestamps for all buffers
20561 and the result metadata generated by a single capture are identical.<wbr/></p></span>
20562                   </li>
20563                   <li>
20564                     <span class="entry_type_enum_name">REALTIME (v3.2)</span>
20565                     <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
20566 <a href="https://developer.android.com/reference/android/os/SystemClock.html#elapsedRealtimeNanos">SystemClock#elapsedRealtimeNanos</a>,<wbr/>
20567 and they can be compared to other timestamps using that base.<wbr/></p></span>
20568                   </li>
20569                 </ul>
20570
20571             </td> <!-- entry_type -->
20572
20573             <td class="entry_description">
20574               <p>The time base source for sensor capture start timestamps.<wbr/></p>
20575             </td>
20576
20577             <td class="entry_units">
20578             </td>
20579
20580             <td class="entry_range">
20581             </td>
20582
20583             <td class="entry_hal_version">
20584               <p>3.<wbr/>2</p>
20585             </td>
20586
20587             <td class="entry_tags">
20588               <ul class="entry_tags">
20589                   <li><a href="#tag_V1">V1</a></li>
20590               </ul>
20591             </td>
20592
20593           </tr>
20594           <tr class="entries_header">
20595             <th class="th_details" colspan="6">Details</th>
20596           </tr>
20597           <tr class="entry_cont">
20598             <td class="entry_details" colspan="6">
20599               <p>The timestamps provided for captures are always in nanoseconds and monotonic,<wbr/> but
20600 may not based on a time source that can be compared to other system time sources.<wbr/></p>
20601 <p>This characteristic defines the source for the timestamps,<wbr/> and therefore whether they
20602 can be compared against other system time sources/<wbr/>timestamps.<wbr/></p>
20603             </td>
20604           </tr>
20605
20606           <tr class="entries_header">
20607             <th class="th_details" colspan="6">HAL Implementation Details</th>
20608           </tr>
20609           <tr class="entry_cont">
20610             <td class="entry_details" colspan="6">
20611               <p>For camera devices implement UNKNOWN,<wbr/> the camera framework expects that the timestamp
20612 source to be SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC.<wbr/> For camera devices implement REALTIME,<wbr/> the camera
20613 framework expects that the timestamp source to be SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> See
20614 system/<wbr/>core/<wbr/>include/<wbr/>utils/<wbr/>Timers.<wbr/>h for the definition of SYSTEM_<wbr/>TIME_<wbr/>MONOTONIC and
20615 SYSTEM_<wbr/>TIME_<wbr/>BOOTTIME.<wbr/> Note that HAL must follow above expectation; otherwise video
20616 recording might suffer unexpected behavior.<wbr/></p>
20617 <p>Also,<wbr/> camera devices which implement REALTIME must pass the ITS sensor fusion test which
20618 tests the alignment between camera timestamps and gyro sensor timestamps.<wbr/></p>
20619             </td>
20620           </tr>
20621
20622           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20623            <!-- end of entry -->
20624         
20625                 
20626           <tr class="entry" id="static_android.sensor.info.lensShadingApplied">
20627             <td class="entry_name
20628              " rowspan="3">
20629               android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied
20630             </td>
20631             <td class="entry_type">
20632                 <span class="entry_type_name entry_type_name_enum">byte</span>
20633
20634               <span class="entry_type_visibility"> [public as boolean]</span>
20635
20636
20637
20638
20639
20640                 <ul class="entry_type_enum">
20641                   <li>
20642                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
20643                   </li>
20644                   <li>
20645                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
20646                   </li>
20647                 </ul>
20648
20649             </td> <!-- entry_type -->
20650
20651             <td class="entry_description">
20652               <p>Whether the RAW images output from this camera device are subject to
20653 lens shading correction.<wbr/></p>
20654             </td>
20655
20656             <td class="entry_units">
20657             </td>
20658
20659             <td class="entry_range">
20660             </td>
20661
20662             <td class="entry_hal_version">
20663               <p>3.<wbr/>2</p>
20664             </td>
20665
20666             <td class="entry_tags">
20667             </td>
20668
20669           </tr>
20670           <tr class="entries_header">
20671             <th class="th_details" colspan="6">Details</th>
20672           </tr>
20673           <tr class="entry_cont">
20674             <td class="entry_details" colspan="6">
20675               <p>If TRUE,<wbr/> all images produced by the camera device in the RAW image formats will
20676 have lens shading correction already applied to it.<wbr/> If FALSE,<wbr/> the images will
20677 not be adjusted for lens shading correction.<wbr/>
20678 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>
20679 <p>This key will be <code>null</code> for all devices do not report this information.<wbr/>
20680 Devices with RAW capability will always report this information in this key.<wbr/></p>
20681             </td>
20682           </tr>
20683
20684
20685           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20686            <!-- end of entry -->
20687         
20688                 
20689           <tr class="entry" id="static_android.sensor.info.preCorrectionActiveArraySize">
20690             <td class="entry_name
20691              " rowspan="5">
20692               android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size
20693             </td>
20694             <td class="entry_type">
20695                 <span class="entry_type_name">int32</span>
20696                 <span class="entry_type_container">x</span>
20697
20698                 <span class="entry_type_array">
20699                   4
20700                 </span>
20701               <span class="entry_type_visibility"> [public as rectangle]</span>
20702
20703
20704               <span class="entry_type_hwlevel">[legacy] </span>
20705
20706
20707                 <div class="entry_type_notes">Four ints defining the active pixel rectangle</div>
20708
20709
20710             </td> <!-- entry_type -->
20711
20712             <td class="entry_description">
20713               <p>The area of the image sensor which corresponds to active pixels prior to the
20714 application of any geometric distortion correction.<wbr/></p>
20715             </td>
20716
20717             <td class="entry_units">
20718               Pixel coordinates on the image sensor
20719             </td>
20720
20721             <td class="entry_range">
20722             </td>
20723
20724             <td class="entry_hal_version">
20725               <p>3.<wbr/>2</p>
20726             </td>
20727
20728             <td class="entry_tags">
20729               <ul class="entry_tags">
20730                   <li><a href="#tag_RAW">RAW</a></li>
20731               </ul>
20732             </td>
20733
20734           </tr>
20735           <tr class="entries_header">
20736             <th class="th_details" colspan="6">Details</th>
20737           </tr>
20738           <tr class="entry_cont">
20739             <td class="entry_details" colspan="6">
20740               <p>This is the rectangle representing the size of the active region of the sensor (i.<wbr/>e.<wbr/>
20741 the region that actually receives light from the scene) before any geometric correction
20742 has been applied,<wbr/> and should be treated as the active region rectangle for any of the
20743 raw formats.<wbr/>  All metadata associated with raw processing (e.<wbr/>g.<wbr/> the lens shading
20744 correction map,<wbr/> and radial distortion fields) treats the top,<wbr/> left of this rectangle as
20745 the origin,<wbr/> (0,<wbr/>0).<wbr/></p>
20746 <p>The size of this region determines the maximum field of view and the maximum number of
20747 pixels that an image from this sensor can contain,<wbr/> prior to the application of
20748 geometric distortion correction.<wbr/> The effective maximum pixel dimensions of a
20749 post-distortion-corrected image is given by the <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>
20750 field,<wbr/> and the effective maximum field of view for a post-distortion-corrected image
20751 can be calculated by applying the geometric distortion correction fields to this
20752 rectangle,<wbr/> and cropping to the rectangle given in <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20753 <p>E.<wbr/>g.<wbr/> to calculate position of a pixel,<wbr/> (x,<wbr/>y),<wbr/> in a processed YUV output image with the
20754 dimensions in <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> given the position of a pixel,<wbr/>
20755 (x',<wbr/> y'),<wbr/> in the raw pixel array with dimensions give in
20756 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>:</p>
20757 <ol>
20758 <li>Choose a pixel (x',<wbr/> y') within the active array region of the raw buffer given in
20759 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>,<wbr/> otherwise this pixel is considered
20760 to be outside of the FOV,<wbr/> and will not be shown in the processed output image.<wbr/></li>
20761 <li>Apply geometric distortion correction to get the post-distortion pixel coordinate,<wbr/>
20762 (x_<wbr/>i,<wbr/> y_<wbr/>i).<wbr/> When applying geometric correction metadata,<wbr/> note that metadata for raw
20763 buffers is defined relative to the top,<wbr/> left of the
20764 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> rectangle.<wbr/></li>
20765 <li>If the resulting corrected pixel coordinate is within the region given in
20766 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>,<wbr/> then the position of this pixel in the
20767 processed output image buffer is <code>(x_<wbr/>i - activeArray.<wbr/>left,<wbr/> y_<wbr/>i - activeArray.<wbr/>top)</code>,<wbr/>
20768 when the top,<wbr/> left coordinate of that buffer is treated as (0,<wbr/> 0).<wbr/></li>
20769 </ol>
20770 <p>Thus,<wbr/> for pixel x',<wbr/>y' = (25,<wbr/> 25) on a sensor where <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>
20771 is (100,<wbr/>100),<wbr/> <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a> is (10,<wbr/> 10,<wbr/> 100,<wbr/> 100),<wbr/>
20772 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a> is (20,<wbr/> 20,<wbr/> 80,<wbr/> 80),<wbr/> and the geometric distortion
20773 correction doesn't change the pixel coordinate,<wbr/> the resulting pixel selected in
20774 pixel coordinates would be x,<wbr/>y = (25,<wbr/> 25) relative to the top,<wbr/>left of the raw buffer
20775 with dimensions given in <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>,<wbr/> and would be (5,<wbr/> 5)
20776 relative to the top,<wbr/>left of post-processed YUV output buffer with dimensions given in
20777 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20778 <p>The currently supported fields that correct for geometric distortion are:</p>
20779 <ol>
20780 <li><a href="#static_android.lens.radialDistortion">android.<wbr/>lens.<wbr/>radial<wbr/>Distortion</a>.<wbr/></li>
20781 </ol>
20782 <p>If all of the geometric distortion fields are no-ops,<wbr/> this rectangle will be the same
20783 as the post-distortion-corrected rectangle given in
20784 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20785 <p>This rectangle is defined relative to the full pixel array; (0,<wbr/>0) is the top-left of
20786 the full pixel array,<wbr/> and the size of the full pixel array is given by
20787 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20788 <p>The pre-correction active array may be smaller than the full pixel array,<wbr/> since the
20789 full array may include black calibration pixels or other inactive regions.<wbr/></p>
20790             </td>
20791           </tr>
20792
20793           <tr class="entries_header">
20794             <th class="th_details" colspan="6">HAL Implementation Details</th>
20795           </tr>
20796           <tr class="entry_cont">
20797             <td class="entry_details" colspan="6">
20798               <p>This array contains <code>(xmin,<wbr/> ymin,<wbr/> width,<wbr/> height)</code>.<wbr/> The <code>(xmin,<wbr/> ymin)</code> must be
20799 &gt;= <code>(0,<wbr/>0)</code>.<wbr/>
20800 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>
20801 <p>If omitted by the HAL implementation,<wbr/> the camera framework will assume that this is
20802 the same as the post-correction active array region given in
20803 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
20804             </td>
20805           </tr>
20806
20807           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20808            <!-- end of entry -->
20809         
20810         
20811         
20812
20813                 
20814           <tr class="entry" id="static_android.sensor.referenceIlluminant1">
20815             <td class="entry_name
20816              " rowspan="5">
20817               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1
20818             </td>
20819             <td class="entry_type">
20820                 <span class="entry_type_name entry_type_name_enum">byte</span>
20821
20822               <span class="entry_type_visibility"> [public]</span>
20823
20824
20825
20826
20827
20828                 <ul class="entry_type_enum">
20829                   <li>
20830                     <span class="entry_type_enum_name">DAYLIGHT (v3.2)</span>
20831                     <span class="entry_type_enum_value">1</span>
20832                   </li>
20833                   <li>
20834                     <span class="entry_type_enum_name">FLUORESCENT (v3.2)</span>
20835                     <span class="entry_type_enum_value">2</span>
20836                   </li>
20837                   <li>
20838                     <span class="entry_type_enum_name">TUNGSTEN (v3.2)</span>
20839                     <span class="entry_type_enum_value">3</span>
20840                     <span class="entry_type_enum_notes"><p>Incandescent light</p></span>
20841                   </li>
20842                   <li>
20843                     <span class="entry_type_enum_name">FLASH (v3.2)</span>
20844                     <span class="entry_type_enum_value">4</span>
20845                   </li>
20846                   <li>
20847                     <span class="entry_type_enum_name">FINE_WEATHER (v3.2)</span>
20848                     <span class="entry_type_enum_value">9</span>
20849                   </li>
20850                   <li>
20851                     <span class="entry_type_enum_name">CLOUDY_WEATHER (v3.2)</span>
20852                     <span class="entry_type_enum_value">10</span>
20853                   </li>
20854                   <li>
20855                     <span class="entry_type_enum_name">SHADE (v3.2)</span>
20856                     <span class="entry_type_enum_value">11</span>
20857                   </li>
20858                   <li>
20859                     <span class="entry_type_enum_name">DAYLIGHT_FLUORESCENT (v3.2)</span>
20860                     <span class="entry_type_enum_value">12</span>
20861                     <span class="entry_type_enum_notes"><p>D 5700 - 7100K</p></span>
20862                   </li>
20863                   <li>
20864                     <span class="entry_type_enum_name">DAY_WHITE_FLUORESCENT (v3.2)</span>
20865                     <span class="entry_type_enum_value">13</span>
20866                     <span class="entry_type_enum_notes"><p>N 4600 - 5400K</p></span>
20867                   </li>
20868                   <li>
20869                     <span class="entry_type_enum_name">COOL_WHITE_FLUORESCENT (v3.2)</span>
20870                     <span class="entry_type_enum_value">14</span>
20871                     <span class="entry_type_enum_notes"><p>W 3900 - 4500K</p></span>
20872                   </li>
20873                   <li>
20874                     <span class="entry_type_enum_name">WHITE_FLUORESCENT (v3.2)</span>
20875                     <span class="entry_type_enum_value">15</span>
20876                     <span class="entry_type_enum_notes"><p>WW 3200 - 3700K</p></span>
20877                   </li>
20878                   <li>
20879                     <span class="entry_type_enum_name">STANDARD_A (v3.2)</span>
20880                     <span class="entry_type_enum_value">17</span>
20881                   </li>
20882                   <li>
20883                     <span class="entry_type_enum_name">STANDARD_B (v3.2)</span>
20884                     <span class="entry_type_enum_value">18</span>
20885                   </li>
20886                   <li>
20887                     <span class="entry_type_enum_name">STANDARD_C (v3.2)</span>
20888                     <span class="entry_type_enum_value">19</span>
20889                   </li>
20890                   <li>
20891                     <span class="entry_type_enum_name">D55 (v3.2)</span>
20892                     <span class="entry_type_enum_value">20</span>
20893                   </li>
20894                   <li>
20895                     <span class="entry_type_enum_name">D65 (v3.2)</span>
20896                     <span class="entry_type_enum_value">21</span>
20897                   </li>
20898                   <li>
20899                     <span class="entry_type_enum_name">D75 (v3.2)</span>
20900                     <span class="entry_type_enum_value">22</span>
20901                   </li>
20902                   <li>
20903                     <span class="entry_type_enum_name">D50 (v3.2)</span>
20904                     <span class="entry_type_enum_value">23</span>
20905                   </li>
20906                   <li>
20907                     <span class="entry_type_enum_name">ISO_STUDIO_TUNGSTEN (v3.2)</span>
20908                     <span class="entry_type_enum_value">24</span>
20909                   </li>
20910                 </ul>
20911
20912             </td> <!-- entry_type -->
20913
20914             <td class="entry_description">
20915               <p>The standard reference illuminant used as the scene light source when
20916 calculating the <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
20917 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
20918 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> matrices.<wbr/></p>
20919             </td>
20920
20921             <td class="entry_units">
20922             </td>
20923
20924             <td class="entry_range">
20925             </td>
20926
20927             <td class="entry_hal_version">
20928               <p>3.<wbr/>2</p>
20929             </td>
20930
20931             <td class="entry_tags">
20932               <ul class="entry_tags">
20933                   <li><a href="#tag_RAW">RAW</a></li>
20934               </ul>
20935             </td>
20936
20937           </tr>
20938           <tr class="entries_header">
20939             <th class="th_details" colspan="6">Details</th>
20940           </tr>
20941           <tr class="entry_cont">
20942             <td class="entry_details" colspan="6">
20943               <p>The values in this key correspond to the values defined for the
20944 EXIF LightSource tag.<wbr/> These illuminants are standard light sources
20945 that are often used calibrating camera devices.<wbr/></p>
20946 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform1">android.<wbr/>sensor.<wbr/>color<wbr/>Transform1</a>,<wbr/>
20947 <a href="#static_android.sensor.calibrationTransform1">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1</a>,<wbr/> and
20948 <a href="#static_android.sensor.forwardMatrix1">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1</a> will also be present.<wbr/></p>
20949 <p>Some devices may choose to provide a second set of calibration
20950 information for improved quality,<wbr/> including
20951 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> and its corresponding matrices.<wbr/></p>
20952             </td>
20953           </tr>
20954
20955           <tr class="entries_header">
20956             <th class="th_details" colspan="6">HAL Implementation Details</th>
20957           </tr>
20958           <tr class="entry_cont">
20959             <td class="entry_details" colspan="6">
20960               <p>The first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
20961 and corresponding matrices must be present to support the RAW capability
20962 and DNG output.<wbr/></p>
20963 <p>When producing raw images with a color profile that has only been
20964 calibrated against a single light source,<wbr/> it is valid to omit
20965 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> along with the
20966 <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/>
20967 and <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
20968 <p>If only <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> is included,<wbr/> it should be
20969 chosen so that it is representative of typical scene lighting.<wbr/>  In
20970 general,<wbr/> D50 or DAYLIGHT will be chosen for this case.<wbr/></p>
20971 <p>If both <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> and
20972 <a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a> are included,<wbr/> they should be
20973 chosen to represent the typical range of scene lighting conditions.<wbr/>
20974 In general,<wbr/> low color temperature illuminant such as Standard-A will
20975 be chosen for the first reference illuminant and a higher color
20976 temperature illuminant such as D65 will be chosen for the second
20977 reference illuminant.<wbr/></p>
20978             </td>
20979           </tr>
20980
20981           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
20982            <!-- end of entry -->
20983         
20984                 
20985           <tr class="entry" id="static_android.sensor.referenceIlluminant2">
20986             <td class="entry_name
20987              " rowspan="3">
20988               android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2
20989             </td>
20990             <td class="entry_type">
20991                 <span class="entry_type_name">byte</span>
20992
20993               <span class="entry_type_visibility"> [public]</span>
20994
20995
20996
20997
20998
20999
21000             </td> <!-- entry_type -->
21001
21002             <td class="entry_description">
21003               <p>The standard reference illuminant used as the scene light source when
21004 calculating the <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21005 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21006 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> matrices.<wbr/></p>
21007             </td>
21008
21009             <td class="entry_units">
21010             </td>
21011
21012             <td class="entry_range">
21013               <p>Any value listed in <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a></p>
21014             </td>
21015
21016             <td class="entry_hal_version">
21017               <p>3.<wbr/>2</p>
21018             </td>
21019
21020             <td class="entry_tags">
21021               <ul class="entry_tags">
21022                   <li><a href="#tag_RAW">RAW</a></li>
21023               </ul>
21024             </td>
21025
21026           </tr>
21027           <tr class="entries_header">
21028             <th class="th_details" colspan="6">Details</th>
21029           </tr>
21030           <tr class="entry_cont">
21031             <td class="entry_details" colspan="6">
21032               <p>See <a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a> for more details.<wbr/></p>
21033 <p>If this key is present,<wbr/> then <a href="#static_android.sensor.colorTransform2">android.<wbr/>sensor.<wbr/>color<wbr/>Transform2</a>,<wbr/>
21034 <a href="#static_android.sensor.calibrationTransform2">android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2</a>,<wbr/> and
21035 <a href="#static_android.sensor.forwardMatrix2">android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2</a> will also be present.<wbr/></p>
21036             </td>
21037           </tr>
21038
21039
21040           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21041            <!-- end of entry -->
21042         
21043                 
21044           <tr class="entry" id="static_android.sensor.calibrationTransform1">
21045             <td class="entry_name
21046              " rowspan="3">
21047               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform1
21048             </td>
21049             <td class="entry_type">
21050                 <span class="entry_type_name">rational</span>
21051                 <span class="entry_type_container">x</span>
21052
21053                 <span class="entry_type_array">
21054                   3 x 3
21055                 </span>
21056               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21057
21058
21059
21060
21061                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21062
21063
21064             </td> <!-- entry_type -->
21065
21066             <td class="entry_description">
21067               <p>A per-device calibration transform matrix that maps from the
21068 reference sensor colorspace to the actual device sensor colorspace.<wbr/></p>
21069             </td>
21070
21071             <td class="entry_units">
21072             </td>
21073
21074             <td class="entry_range">
21075             </td>
21076
21077             <td class="entry_hal_version">
21078               <p>3.<wbr/>2</p>
21079             </td>
21080
21081             <td class="entry_tags">
21082               <ul class="entry_tags">
21083                   <li><a href="#tag_RAW">RAW</a></li>
21084               </ul>
21085             </td>
21086
21087           </tr>
21088           <tr class="entries_header">
21089             <th class="th_details" colspan="6">Details</th>
21090           </tr>
21091           <tr class="entry_cont">
21092             <td class="entry_details" colspan="6">
21093               <p>This matrix is used to correct for per-device variations in the
21094 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21095 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21096 contains a per-device calibration transform that maps colors
21097 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21098 colorspace) into this camera device's native sensor color
21099 space under the first reference illuminant
21100 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21101             </td>
21102           </tr>
21103
21104
21105           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21106            <!-- end of entry -->
21107         
21108                 
21109           <tr class="entry" id="static_android.sensor.calibrationTransform2">
21110             <td class="entry_name
21111              " rowspan="3">
21112               android.<wbr/>sensor.<wbr/>calibration<wbr/>Transform2
21113             </td>
21114             <td class="entry_type">
21115                 <span class="entry_type_name">rational</span>
21116                 <span class="entry_type_container">x</span>
21117
21118                 <span class="entry_type_array">
21119                   3 x 3
21120                 </span>
21121               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21122
21123
21124
21125
21126                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21127
21128
21129             </td> <!-- entry_type -->
21130
21131             <td class="entry_description">
21132               <p>A per-device calibration transform matrix that maps from the
21133 reference sensor colorspace to the actual device sensor colorspace
21134 (this is the colorspace of the raw buffer data).<wbr/></p>
21135             </td>
21136
21137             <td class="entry_units">
21138             </td>
21139
21140             <td class="entry_range">
21141             </td>
21142
21143             <td class="entry_hal_version">
21144               <p>3.<wbr/>2</p>
21145             </td>
21146
21147             <td class="entry_tags">
21148               <ul class="entry_tags">
21149                   <li><a href="#tag_RAW">RAW</a></li>
21150               </ul>
21151             </td>
21152
21153           </tr>
21154           <tr class="entries_header">
21155             <th class="th_details" colspan="6">Details</th>
21156           </tr>
21157           <tr class="entry_cont">
21158             <td class="entry_details" colspan="6">
21159               <p>This matrix is used to correct for per-device variations in the
21160 sensor colorspace,<wbr/> and is used for processing raw buffer data.<wbr/></p>
21161 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21162 contains a per-device calibration transform that maps colors
21163 from reference sensor color space (i.<wbr/>e.<wbr/> the "golden module"
21164 colorspace) into this camera device's native sensor color
21165 space under the second reference illuminant
21166 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21167 <p>This matrix will only be present if the second reference
21168 illuminant is present.<wbr/></p>
21169             </td>
21170           </tr>
21171
21172
21173           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21174            <!-- end of entry -->
21175         
21176                 
21177           <tr class="entry" id="static_android.sensor.colorTransform1">
21178             <td class="entry_name
21179              " rowspan="3">
21180               android.<wbr/>sensor.<wbr/>color<wbr/>Transform1
21181             </td>
21182             <td class="entry_type">
21183                 <span class="entry_type_name">rational</span>
21184                 <span class="entry_type_container">x</span>
21185
21186                 <span class="entry_type_array">
21187                   3 x 3
21188                 </span>
21189               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21190
21191
21192
21193
21194                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21195
21196
21197             </td> <!-- entry_type -->
21198
21199             <td class="entry_description">
21200               <p>A matrix that transforms color values from CIE XYZ color space to
21201 reference sensor color space.<wbr/></p>
21202             </td>
21203
21204             <td class="entry_units">
21205             </td>
21206
21207             <td class="entry_range">
21208             </td>
21209
21210             <td class="entry_hal_version">
21211               <p>3.<wbr/>2</p>
21212             </td>
21213
21214             <td class="entry_tags">
21215               <ul class="entry_tags">
21216                   <li><a href="#tag_RAW">RAW</a></li>
21217               </ul>
21218             </td>
21219
21220           </tr>
21221           <tr class="entries_header">
21222             <th class="th_details" colspan="6">Details</th>
21223           </tr>
21224           <tr class="entry_cont">
21225             <td class="entry_details" colspan="6">
21226               <p>This matrix is used to convert from the standard CIE XYZ color
21227 space to the reference sensor colorspace,<wbr/> and is used when processing
21228 raw buffer data.<wbr/></p>
21229 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21230 contains a color transform matrix that maps colors from the CIE
21231 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21232 "golden module" colorspace) under the first reference illuminant
21233 (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>).<wbr/></p>
21234 <p>The white points chosen in both the reference sensor color space
21235 and the CIE XYZ colorspace when calculating this transform will
21236 match the standard white point for the first reference illuminant
21237 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21238             </td>
21239           </tr>
21240
21241
21242           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21243            <!-- end of entry -->
21244         
21245                 
21246           <tr class="entry" id="static_android.sensor.colorTransform2">
21247             <td class="entry_name
21248              " rowspan="3">
21249               android.<wbr/>sensor.<wbr/>color<wbr/>Transform2
21250             </td>
21251             <td class="entry_type">
21252                 <span class="entry_type_name">rational</span>
21253                 <span class="entry_type_container">x</span>
21254
21255                 <span class="entry_type_array">
21256                   3 x 3
21257                 </span>
21258               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21259
21260
21261
21262
21263                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21264
21265
21266             </td> <!-- entry_type -->
21267
21268             <td class="entry_description">
21269               <p>A matrix that transforms color values from CIE XYZ color space to
21270 reference sensor color space.<wbr/></p>
21271             </td>
21272
21273             <td class="entry_units">
21274             </td>
21275
21276             <td class="entry_range">
21277             </td>
21278
21279             <td class="entry_hal_version">
21280               <p>3.<wbr/>2</p>
21281             </td>
21282
21283             <td class="entry_tags">
21284               <ul class="entry_tags">
21285                   <li><a href="#tag_RAW">RAW</a></li>
21286               </ul>
21287             </td>
21288
21289           </tr>
21290           <tr class="entries_header">
21291             <th class="th_details" colspan="6">Details</th>
21292           </tr>
21293           <tr class="entry_cont">
21294             <td class="entry_details" colspan="6">
21295               <p>This matrix is used to convert from the standard CIE XYZ color
21296 space to the reference sensor colorspace,<wbr/> and is used when processing
21297 raw buffer data.<wbr/></p>
21298 <p>The matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and
21299 contains a color transform matrix that maps colors from the CIE
21300 XYZ color space to the reference sensor color space (i.<wbr/>e.<wbr/> the
21301 "golden module" colorspace) under the second reference illuminant
21302 (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>).<wbr/></p>
21303 <p>The white points chosen in both the reference sensor color space
21304 and the CIE XYZ colorspace when calculating this transform will
21305 match the standard white point for the second reference illuminant
21306 (i.<wbr/>e.<wbr/> no chromatic adaptation will be applied by this transform).<wbr/></p>
21307 <p>This matrix will only be present if the second reference
21308 illuminant is present.<wbr/></p>
21309             </td>
21310           </tr>
21311
21312
21313           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21314            <!-- end of entry -->
21315         
21316                 
21317           <tr class="entry" id="static_android.sensor.forwardMatrix1">
21318             <td class="entry_name
21319              " rowspan="3">
21320               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix1
21321             </td>
21322             <td class="entry_type">
21323                 <span class="entry_type_name">rational</span>
21324                 <span class="entry_type_container">x</span>
21325
21326                 <span class="entry_type_array">
21327                   3 x 3
21328                 </span>
21329               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21330
21331
21332
21333
21334                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21335
21336
21337             </td> <!-- entry_type -->
21338
21339             <td class="entry_description">
21340               <p>A matrix that transforms white balanced camera colors from the reference
21341 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21342             </td>
21343
21344             <td class="entry_units">
21345             </td>
21346
21347             <td class="entry_range">
21348             </td>
21349
21350             <td class="entry_hal_version">
21351               <p>3.<wbr/>2</p>
21352             </td>
21353
21354             <td class="entry_tags">
21355               <ul class="entry_tags">
21356                   <li><a href="#tag_RAW">RAW</a></li>
21357               </ul>
21358             </td>
21359
21360           </tr>
21361           <tr class="entries_header">
21362             <th class="th_details" colspan="6">Details</th>
21363           </tr>
21364           <tr class="entry_cont">
21365             <td class="entry_details" colspan="6">
21366               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21367 is used when processing raw buffer data.<wbr/></p>
21368 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21369 a color transform matrix that maps white balanced colors from the
21370 reference sensor color space to the CIE XYZ color space with a D50 white
21371 point.<wbr/></p>
21372 <p>Under the first reference illuminant (<a href="#static_android.sensor.referenceIlluminant1">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant1</a>)
21373 this matrix is chosen so that the standard white point for this reference
21374 illuminant in the reference sensor colorspace is mapped to D50 in the
21375 CIE XYZ colorspace.<wbr/></p>
21376             </td>
21377           </tr>
21378
21379
21380           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21381            <!-- end of entry -->
21382         
21383                 
21384           <tr class="entry" id="static_android.sensor.forwardMatrix2">
21385             <td class="entry_name
21386              " rowspan="3">
21387               android.<wbr/>sensor.<wbr/>forward<wbr/>Matrix2
21388             </td>
21389             <td class="entry_type">
21390                 <span class="entry_type_name">rational</span>
21391                 <span class="entry_type_container">x</span>
21392
21393                 <span class="entry_type_array">
21394                   3 x 3
21395                 </span>
21396               <span class="entry_type_visibility"> [public as colorSpaceTransform]</span>
21397
21398
21399
21400
21401                 <div class="entry_type_notes">3x3 matrix in row-major-order</div>
21402
21403
21404             </td> <!-- entry_type -->
21405
21406             <td class="entry_description">
21407               <p>A matrix that transforms white balanced camera colors from the reference
21408 sensor colorspace to the CIE XYZ colorspace with a D50 whitepoint.<wbr/></p>
21409             </td>
21410
21411             <td class="entry_units">
21412             </td>
21413
21414             <td class="entry_range">
21415             </td>
21416
21417             <td class="entry_hal_version">
21418               <p>3.<wbr/>2</p>
21419             </td>
21420
21421             <td class="entry_tags">
21422               <ul class="entry_tags">
21423                   <li><a href="#tag_RAW">RAW</a></li>
21424               </ul>
21425             </td>
21426
21427           </tr>
21428           <tr class="entries_header">
21429             <th class="th_details" colspan="6">Details</th>
21430           </tr>
21431           <tr class="entry_cont">
21432             <td class="entry_details" colspan="6">
21433               <p>This matrix is used to convert to the standard CIE XYZ colorspace,<wbr/> and
21434 is used when processing raw buffer data.<wbr/></p>
21435 <p>This matrix is expressed as a 3x3 matrix in row-major-order,<wbr/> and contains
21436 a color transform matrix that maps white balanced colors from the
21437 reference sensor color space to the CIE XYZ color space with a D50 white
21438 point.<wbr/></p>
21439 <p>Under the second reference illuminant (<a href="#static_android.sensor.referenceIlluminant2">android.<wbr/>sensor.<wbr/>reference<wbr/>Illuminant2</a>)
21440 this matrix is chosen so that the standard white point for this reference
21441 illuminant in the reference sensor colorspace is mapped to D50 in the
21442 CIE XYZ colorspace.<wbr/></p>
21443 <p>This matrix will only be present if the second reference
21444 illuminant is present.<wbr/></p>
21445             </td>
21446           </tr>
21447
21448
21449           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21450            <!-- end of entry -->
21451         
21452                 
21453           <tr class="entry" id="static_android.sensor.baseGainFactor">
21454             <td class="entry_name
21455              " rowspan="1">
21456               android.<wbr/>sensor.<wbr/>base<wbr/>Gain<wbr/>Factor
21457             </td>
21458             <td class="entry_type">
21459                 <span class="entry_type_name">rational</span>
21460
21461               <span class="entry_type_visibility"> [system]</span>
21462
21463
21464
21465
21466
21467
21468             </td> <!-- entry_type -->
21469
21470             <td class="entry_description">
21471               <p>Gain factor from electrons to raw units when
21472 ISO=100</p>
21473             </td>
21474
21475             <td class="entry_units">
21476             </td>
21477
21478             <td class="entry_range">
21479             </td>
21480
21481             <td class="entry_hal_version">
21482               <p>3.<wbr/>2</p>
21483             </td>
21484
21485             <td class="entry_tags">
21486               <ul class="entry_tags">
21487                   <li><a href="#tag_FUTURE">FUTURE</a></li>
21488               </ul>
21489             </td>
21490
21491           </tr>
21492
21493
21494           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21495            <!-- end of entry -->
21496         
21497                 
21498           <tr class="entry" id="static_android.sensor.blackLevelPattern">
21499             <td class="entry_name
21500              " rowspan="5">
21501               android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern
21502             </td>
21503             <td class="entry_type">
21504                 <span class="entry_type_name">int32</span>
21505                 <span class="entry_type_container">x</span>
21506
21507                 <span class="entry_type_array">
21508                   4
21509                 </span>
21510               <span class="entry_type_visibility"> [public as blackLevelPattern]</span>
21511
21512
21513
21514
21515                 <div class="entry_type_notes">2x2 raw count block</div>
21516
21517
21518             </td> <!-- entry_type -->
21519
21520             <td class="entry_description">
21521               <p>A fixed black level offset for each of the color filter arrangement
21522 (CFA) mosaic channels.<wbr/></p>
21523             </td>
21524
21525             <td class="entry_units">
21526             </td>
21527
21528             <td class="entry_range">
21529               <p>&gt;= 0 for each.<wbr/></p>
21530             </td>
21531
21532             <td class="entry_hal_version">
21533               <p>3.<wbr/>2</p>
21534             </td>
21535
21536             <td class="entry_tags">
21537               <ul class="entry_tags">
21538                   <li><a href="#tag_RAW">RAW</a></li>
21539               </ul>
21540             </td>
21541
21542           </tr>
21543           <tr class="entries_header">
21544             <th class="th_details" colspan="6">Details</th>
21545           </tr>
21546           <tr class="entry_cont">
21547             <td class="entry_details" colspan="6">
21548               <p>This key specifies the zero light value for each of the CFA mosaic
21549 channels in the camera sensor.<wbr/>  The maximal value output by the
21550 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>
21551 <p>The values are given in the same order as channels listed for the CFA
21552 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
21553 nth value given corresponds to the black level offset for the nth
21554 color channel listed in the CFA.<wbr/></p>
21555 <p>The black level values of captured images may vary for different
21556 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> This key
21557 represents a coarse approximation for such case.<wbr/> It is recommended to
21558 use <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> or use pixels from
21559 <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> directly for captures when
21560 supported by the camera device,<wbr/> which provides more accurate black
21561 level values.<wbr/> For raw capture in particular,<wbr/> it is recommended to use
21562 pixels from <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> to calculate black
21563 level values for each frame.<wbr/></p>
21564             </td>
21565           </tr>
21566
21567           <tr class="entries_header">
21568             <th class="th_details" colspan="6">HAL Implementation Details</th>
21569           </tr>
21570           <tr class="entry_cont">
21571             <td class="entry_details" colspan="6">
21572               <p>The values are given in row-column scan order,<wbr/> with the first value
21573 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
21574             </td>
21575           </tr>
21576
21577           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21578            <!-- end of entry -->
21579         
21580                 
21581           <tr class="entry" id="static_android.sensor.maxAnalogSensitivity">
21582             <td class="entry_name
21583              " rowspan="3">
21584               android.<wbr/>sensor.<wbr/>max<wbr/>Analog<wbr/>Sensitivity
21585             </td>
21586             <td class="entry_type">
21587                 <span class="entry_type_name">int32</span>
21588
21589               <span class="entry_type_visibility"> [public]</span>
21590
21591
21592               <span class="entry_type_hwlevel">[full] </span>
21593
21594
21595
21596
21597             </td> <!-- entry_type -->
21598
21599             <td class="entry_description">
21600               <p>Maximum sensitivity that is implemented
21601 purely through analog gain.<wbr/></p>
21602             </td>
21603
21604             <td class="entry_units">
21605             </td>
21606
21607             <td class="entry_range">
21608             </td>
21609
21610             <td class="entry_hal_version">
21611               <p>3.<wbr/>2</p>
21612             </td>
21613
21614             <td class="entry_tags">
21615               <ul class="entry_tags">
21616                   <li><a href="#tag_V1">V1</a></li>
21617                   <li><a href="#tag_FULL">FULL</a></li>
21618               </ul>
21619             </td>
21620
21621           </tr>
21622           <tr class="entries_header">
21623             <th class="th_details" colspan="6">Details</th>
21624           </tr>
21625           <tr class="entry_cont">
21626             <td class="entry_details" colspan="6">
21627               <p>For <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a> values less than or
21628 equal to this,<wbr/> all applied gain must be analog.<wbr/> For
21629 values above this,<wbr/> the gain applied can be a mix of analog and
21630 digital.<wbr/></p>
21631             </td>
21632           </tr>
21633
21634
21635           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21636            <!-- end of entry -->
21637         
21638                 
21639           <tr class="entry" id="static_android.sensor.orientation">
21640             <td class="entry_name
21641              " rowspan="3">
21642               android.<wbr/>sensor.<wbr/>orientation
21643             </td>
21644             <td class="entry_type">
21645                 <span class="entry_type_name">int32</span>
21646
21647               <span class="entry_type_visibility"> [public]</span>
21648
21649
21650               <span class="entry_type_hwlevel">[legacy] </span>
21651
21652
21653
21654
21655             </td> <!-- entry_type -->
21656
21657             <td class="entry_description">
21658               <p>Clockwise angle through which the output image needs to be rotated to be
21659 upright on the device screen in its native orientation.<wbr/></p>
21660             </td>
21661
21662             <td class="entry_units">
21663               Degrees of clockwise rotation; always a multiple of
21664           90
21665             </td>
21666
21667             <td class="entry_range">
21668               <p>0,<wbr/> 90,<wbr/> 180,<wbr/> 270</p>
21669             </td>
21670
21671             <td class="entry_hal_version">
21672               <p>3.<wbr/>2</p>
21673             </td>
21674
21675             <td class="entry_tags">
21676               <ul class="entry_tags">
21677                   <li><a href="#tag_BC">BC</a></li>
21678               </ul>
21679             </td>
21680
21681           </tr>
21682           <tr class="entries_header">
21683             <th class="th_details" colspan="6">Details</th>
21684           </tr>
21685           <tr class="entry_cont">
21686             <td class="entry_details" colspan="6">
21687               <p>Also defines the direction of rolling shutter readout,<wbr/> which is from top to bottom in
21688 the sensor's coordinate system.<wbr/></p>
21689             </td>
21690           </tr>
21691
21692
21693           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21694            <!-- end of entry -->
21695         
21696                 
21697           <tr class="entry" id="static_android.sensor.profileHueSatMapDimensions">
21698             <td class="entry_name
21699              " rowspan="3">
21700               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions
21701             </td>
21702             <td class="entry_type">
21703                 <span class="entry_type_name">int32</span>
21704                 <span class="entry_type_container">x</span>
21705
21706                 <span class="entry_type_array">
21707                   3
21708                 </span>
21709               <span class="entry_type_visibility"> [system]</span>
21710
21711
21712
21713
21714                 <div class="entry_type_notes">Number of samples for hue,<wbr/> saturation,<wbr/> and value</div>
21715
21716
21717             </td> <!-- entry_type -->
21718
21719             <td class="entry_description">
21720               <p>The number of input samples for each dimension of
21721 <a href="#dynamic_android.sensor.profileHueSatMap">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map</a>.<wbr/></p>
21722             </td>
21723
21724             <td class="entry_units">
21725             </td>
21726
21727             <td class="entry_range">
21728               <p>Hue &gt;= 1,<wbr/>
21729 Saturation &gt;= 2,<wbr/>
21730 Value &gt;= 1</p>
21731             </td>
21732
21733             <td class="entry_hal_version">
21734               <p>3.<wbr/>2</p>
21735             </td>
21736
21737             <td class="entry_tags">
21738               <ul class="entry_tags">
21739                   <li><a href="#tag_RAW">RAW</a></li>
21740               </ul>
21741             </td>
21742
21743           </tr>
21744           <tr class="entries_header">
21745             <th class="th_details" colspan="6">Details</th>
21746           </tr>
21747           <tr class="entry_cont">
21748             <td class="entry_details" colspan="6">
21749               <p>The number of input samples for the hue,<wbr/> saturation,<wbr/> and value
21750 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
21751 dimensions given is hue,<wbr/> saturation,<wbr/> value; where hue is the 0th
21752 element.<wbr/></p>
21753             </td>
21754           </tr>
21755
21756
21757           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21758            <!-- end of entry -->
21759         
21760                 
21761           <tr class="entry" id="static_android.sensor.availableTestPatternModes">
21762             <td class="entry_name
21763              " rowspan="5">
21764               android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes
21765             </td>
21766             <td class="entry_type">
21767                 <span class="entry_type_name">int32</span>
21768                 <span class="entry_type_container">x</span>
21769
21770                 <span class="entry_type_array">
21771                   n
21772                 </span>
21773               <span class="entry_type_visibility"> [public]</span>
21774
21775
21776
21777
21778                 <div class="entry_type_notes">list of enums</div>
21779
21780
21781             </td> <!-- entry_type -->
21782
21783             <td class="entry_description">
21784               <p>List of sensor test pattern modes for <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a>
21785 supported by this camera device.<wbr/></p>
21786             </td>
21787
21788             <td class="entry_units">
21789             </td>
21790
21791             <td class="entry_range">
21792               <p>Any value listed in <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a></p>
21793             </td>
21794
21795             <td class="entry_hal_version">
21796               <p>3.<wbr/>2</p>
21797             </td>
21798
21799             <td class="entry_tags">
21800             </td>
21801
21802           </tr>
21803           <tr class="entries_header">
21804             <th class="th_details" colspan="6">Details</th>
21805           </tr>
21806           <tr class="entry_cont">
21807             <td class="entry_details" colspan="6">
21808               <p>Defaults to OFF,<wbr/> and always includes OFF if defined.<wbr/></p>
21809             </td>
21810           </tr>
21811
21812           <tr class="entries_header">
21813             <th class="th_details" colspan="6">HAL Implementation Details</th>
21814           </tr>
21815           <tr class="entry_cont">
21816             <td class="entry_details" colspan="6">
21817               <p>All custom modes must be &gt;= CUSTOM1.<wbr/></p>
21818             </td>
21819           </tr>
21820
21821           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21822            <!-- end of entry -->
21823         
21824                 
21825           <tr class="entry" id="static_android.sensor.opticalBlackRegions">
21826             <td class="entry_name
21827              " rowspan="5">
21828               android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions
21829             </td>
21830             <td class="entry_type">
21831                 <span class="entry_type_name">int32</span>
21832                 <span class="entry_type_container">x</span>
21833
21834                 <span class="entry_type_array">
21835                   4 x num_regions
21836                 </span>
21837               <span class="entry_type_visibility"> [public as rectangle]</span>
21838
21839
21840
21841
21842
21843
21844             </td> <!-- entry_type -->
21845
21846             <td class="entry_description">
21847               <p>List of disjoint rectangles indicating the sensor
21848 optically shielded black pixel regions.<wbr/></p>
21849             </td>
21850
21851             <td class="entry_units">
21852             </td>
21853
21854             <td class="entry_range">
21855             </td>
21856
21857             <td class="entry_hal_version">
21858               <p>3.<wbr/>2</p>
21859             </td>
21860
21861             <td class="entry_tags">
21862             </td>
21863
21864           </tr>
21865           <tr class="entries_header">
21866             <th class="th_details" colspan="6">Details</th>
21867           </tr>
21868           <tr class="entry_cont">
21869             <td class="entry_details" colspan="6">
21870               <p>In most camera sensors,<wbr/> the active array is surrounded by some
21871 optically shielded pixel areas.<wbr/> By blocking light,<wbr/> these pixels
21872 provides a reliable black reference for black level compensation
21873 in active array region.<wbr/></p>
21874 <p>This key provides a list of disjoint rectangles specifying the
21875 regions of optically shielded (with metal shield) black pixel
21876 regions if the camera device is capable of reading out these black
21877 pixels in the output raw images.<wbr/> In comparison to the fixed black
21878 level values reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a>,<wbr/> this key
21879 may provide a more accurate way for the application to calculate
21880 black level of each captured raw images.<wbr/></p>
21881 <p>When this key is reported,<wbr/> the <a href="#dynamic_android.sensor.dynamicBlackLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level</a> and
21882 <a href="#dynamic_android.sensor.dynamicWhiteLevel">android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level</a> will also be reported.<wbr/></p>
21883             </td>
21884           </tr>
21885
21886           <tr class="entries_header">
21887             <th class="th_details" colspan="6">HAL Implementation Details</th>
21888           </tr>
21889           <tr class="entry_cont">
21890             <td class="entry_details" colspan="6">
21891               <p>This array contains (xmin,<wbr/> ymin,<wbr/> width,<wbr/> height).<wbr/> The (xmin,<wbr/> ymin)
21892 must be &gt;= (0,<wbr/>0) and &lt;=
21893 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> The (width,<wbr/> height) must be
21894 &lt;= <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/> Each region must be
21895 outside the region reported by
21896 <a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pre<wbr/>Correction<wbr/>Active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
21897 <p>The HAL must report minimal number of disjoint regions for the
21898 optically shielded back pixel regions.<wbr/> For example,<wbr/> if a region can
21899 be covered by one rectangle,<wbr/> the HAL must not split this region into
21900 multiple rectangles.<wbr/></p>
21901             </td>
21902           </tr>
21903
21904           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21905            <!-- end of entry -->
21906         
21907                 
21908           <tr class="entry" id="static_android.sensor.opaqueRawSize">
21909             <td class="entry_name
21910              " rowspan="5">
21911               android.<wbr/>sensor.<wbr/>opaque<wbr/>Raw<wbr/>Size
21912             </td>
21913             <td class="entry_type">
21914                 <span class="entry_type_name">int32</span>
21915                 <span class="entry_type_container">x</span>
21916
21917                 <span class="entry_type_array">
21918                   n x 3
21919                 </span>
21920               <span class="entry_type_visibility"> [system]</span>
21921
21922
21923
21924
21925
21926
21927             </td> <!-- entry_type -->
21928
21929             <td class="entry_description">
21930               <p>Size in bytes for all the listed opaque RAW buffer sizes</p>
21931             </td>
21932
21933             <td class="entry_units">
21934             </td>
21935
21936             <td class="entry_range">
21937               <p>Must be large enough to fit the opaque RAW of corresponding size produced by
21938 the camera</p>
21939             </td>
21940
21941             <td class="entry_hal_version">
21942               <p>3.<wbr/>2</p>
21943             </td>
21944
21945             <td class="entry_tags">
21946             </td>
21947
21948           </tr>
21949           <tr class="entries_header">
21950             <th class="th_details" colspan="6">Details</th>
21951           </tr>
21952           <tr class="entry_cont">
21953             <td class="entry_details" colspan="6">
21954               <p>This configurations are listed as <code>(width,<wbr/> height,<wbr/> size_<wbr/>in_<wbr/>bytes)</code> tuples.<wbr/>
21955 This is used for sizing the gralloc buffers for opaque RAW buffers.<wbr/>
21956 All RAW_<wbr/>OPAQUE output stream configuration listed in
21957 <a href="#static_android.scaler.availableStreamConfigurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stream<wbr/>Configurations</a> will have a corresponding tuple in
21958 this key.<wbr/></p>
21959             </td>
21960           </tr>
21961
21962           <tr class="entries_header">
21963             <th class="th_details" colspan="6">HAL Implementation Details</th>
21964           </tr>
21965           <tr class="entry_cont">
21966             <td class="entry_details" colspan="6">
21967               <p>This key is added in legacy HAL3.<wbr/>4.<wbr/></p>
21968 <p>For legacy HAL3.<wbr/>4 or above: devices advertising RAW_<wbr/>OPAQUE format output must list this
21969 key.<wbr/>  For legacy HAL3.<wbr/>3 or earlier devices: if RAW_<wbr/>OPAQUE ouput is advertised,<wbr/> camera
21970 framework will derive this key by assuming each pixel takes two bytes and no padding bytes
21971 between rows.<wbr/></p>
21972             </td>
21973           </tr>
21974
21975           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
21976            <!-- end of entry -->
21977         
21978         
21979
21980       <!-- end of kind -->
21981       </tbody>
21982       <tr><td colspan="7" class="kind">dynamic</td></tr>
21983
21984       <thead class="entries_header">
21985         <tr>
21986           <th class="th_name">Property Name</th>
21987           <th class="th_type">Type</th>
21988           <th class="th_description">Description</th>
21989           <th class="th_units">Units</th>
21990           <th class="th_range">Range</th>
21991           <th class="th_hal_version">Initial HIDL HAL version</th>
21992           <th class="th_tags">Tags</th>
21993         </tr>
21994       </thead>
21995
21996       <tbody>
21997
21998         
21999
22000         
22001
22002         
22003
22004         
22005
22006                 
22007           <tr class="entry" id="dynamic_android.sensor.exposureTime">
22008             <td class="entry_name
22009              " rowspan="3">
22010               android.<wbr/>sensor.<wbr/>exposure<wbr/>Time
22011             </td>
22012             <td class="entry_type">
22013                 <span class="entry_type_name">int64</span>
22014
22015               <span class="entry_type_visibility"> [public]</span>
22016
22017
22018               <span class="entry_type_hwlevel">[full] </span>
22019
22020
22021
22022
22023             </td> <!-- entry_type -->
22024
22025             <td class="entry_description">
22026               <p>Duration each pixel is exposed to
22027 light.<wbr/></p>
22028             </td>
22029
22030             <td class="entry_units">
22031               Nanoseconds
22032             </td>
22033
22034             <td class="entry_range">
22035               <p><a href="#static_android.sensor.info.exposureTimeRange">android.<wbr/>sensor.<wbr/>info.<wbr/>exposure<wbr/>Time<wbr/>Range</a></p>
22036             </td>
22037
22038             <td class="entry_hal_version">
22039               <p>3.<wbr/>2</p>
22040             </td>
22041
22042             <td class="entry_tags">
22043               <ul class="entry_tags">
22044                   <li><a href="#tag_V1">V1</a></li>
22045               </ul>
22046             </td>
22047
22048           </tr>
22049           <tr class="entries_header">
22050             <th class="th_details" colspan="6">Details</th>
22051           </tr>
22052           <tr class="entry_cont">
22053             <td class="entry_details" colspan="6">
22054               <p>If the sensor can't expose this exact duration,<wbr/> it will shorten the
22055 duration exposed to the nearest possible value (rather than expose longer).<wbr/>
22056 The final exposure time used will be available in the output capture result.<wbr/></p>
22057 <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
22058 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22059             </td>
22060           </tr>
22061
22062
22063           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22064            <!-- end of entry -->
22065         
22066                 
22067           <tr class="entry" id="dynamic_android.sensor.frameDuration">
22068             <td class="entry_name
22069              " rowspan="5">
22070               android.<wbr/>sensor.<wbr/>frame<wbr/>Duration
22071             </td>
22072             <td class="entry_type">
22073                 <span class="entry_type_name">int64</span>
22074
22075               <span class="entry_type_visibility"> [public]</span>
22076
22077
22078               <span class="entry_type_hwlevel">[full] </span>
22079
22080
22081
22082
22083             </td> <!-- entry_type -->
22084
22085             <td class="entry_description">
22086               <p>Duration from start of frame exposure to
22087 start of next frame exposure.<wbr/></p>
22088             </td>
22089
22090             <td class="entry_units">
22091               Nanoseconds
22092             </td>
22093
22094             <td class="entry_range">
22095               <p>See <a href="#static_android.sensor.info.maxFrameDuration">android.<wbr/>sensor.<wbr/>info.<wbr/>max<wbr/>Frame<wbr/>Duration</a>,<wbr/> <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html">StreamConfigurationMap</a>.<wbr/>
22096 The duration is capped to <code>max(duration,<wbr/> exposureTime + overhead)</code>.<wbr/></p>
22097             </td>
22098
22099             <td class="entry_hal_version">
22100               <p>3.<wbr/>2</p>
22101             </td>
22102
22103             <td class="entry_tags">
22104               <ul class="entry_tags">
22105                   <li><a href="#tag_V1">V1</a></li>
22106               </ul>
22107             </td>
22108
22109           </tr>
22110           <tr class="entries_header">
22111             <th class="th_details" colspan="6">Details</th>
22112           </tr>
22113           <tr class="entry_cont">
22114             <td class="entry_details" colspan="6">
22115               <p>The maximum frame rate that can be supported by a camera subsystem is
22116 a function of many factors:</p>
22117 <ul>
22118 <li>Requested resolutions of output image streams</li>
22119 <li>Availability of binning /<wbr/> skipping modes on the imager</li>
22120 <li>The bandwidth of the imager interface</li>
22121 <li>The bandwidth of the various ISP processing blocks</li>
22122 </ul>
22123 <p>Since these factors can vary greatly between different ISPs and
22124 sensors,<wbr/> the camera abstraction tries to represent the bandwidth
22125 restrictions with as simple a model as possible.<wbr/></p>
22126 <p>The model presented has the following characteristics:</p>
22127 <ul>
22128 <li>The image sensor is always configured to output the smallest
22129 resolution possible given the application's requested output stream
22130 sizes.<wbr/>  The smallest resolution is defined as being at least as large
22131 as the largest requested output stream size; the camera pipeline must
22132 never digitally upsample sensor data when the crop region covers the
22133 whole sensor.<wbr/> In general,<wbr/> this means that if only small output stream
22134 resolutions are configured,<wbr/> the sensor can provide a higher frame
22135 rate.<wbr/></li>
22136 <li>Since any request may use any or all the currently configured
22137 output streams,<wbr/> the sensor and ISP must be configured to support
22138 scaling a single capture to all the streams at the same time.<wbr/>  This
22139 means the camera pipeline must be ready to produce the largest
22140 requested output size without any delay.<wbr/>  Therefore,<wbr/> the overall
22141 frame rate of a given configured stream set is governed only by the
22142 largest requested stream resolution.<wbr/></li>
22143 <li>Using more than one output stream in a request does not affect the
22144 frame duration.<wbr/></li>
22145 <li>Certain format-streams may need to do additional background processing
22146 before data is consumed/<wbr/>produced by that stream.<wbr/> These processors
22147 can run concurrently to the rest of the camera pipeline,<wbr/> but
22148 cannot process more than 1 capture at a time.<wbr/></li>
22149 </ul>
22150 <p>The necessary information for the application,<wbr/> given the model above,<wbr/> is provided via
22151 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/>
22152 These are used to determine the maximum frame rate /<wbr/> minimum frame duration that is
22153 possible for a given stream configuration.<wbr/></p>
22154 <p>Specifically,<wbr/> the application can use the following rules to
22155 determine the minimum frame duration it can request from the camera
22156 device:</p>
22157 <ol>
22158 <li>Let the set of currently configured input/<wbr/>output streams be called <code>S</code>.<wbr/></li>
22159 <li>Find the minimum frame durations for each stream in <code>S</code>,<wbr/> by looking it up in <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>
22160 (with its respective size/<wbr/>format).<wbr/> Let this set of frame durations be called <code>F</code>.<wbr/></li>
22161 <li>For any given request <code>R</code>,<wbr/> the minimum frame duration allowed for <code>R</code> is the maximum
22162 out of all values in <code>F</code>.<wbr/> Let the streams used in <code>R</code> be called <code>S_<wbr/>r</code>.<wbr/></li>
22163 </ol>
22164 <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>
22165 using its respective size/<wbr/>format),<wbr/> then the frame duration in <code>F</code> determines the steady
22166 state frame rate that the application will get if it uses <code>R</code> as a repeating request.<wbr/> Let
22167 this special kind of request be called <code>Rsimple</code>.<wbr/></p>
22168 <p>A repeating request <code>Rsimple</code> can be <em>occasionally</em> interleaved by a single capture of a
22169 new request <code>Rstall</code> (which has at least one in-use stream with a non-0 stall time) and if
22170 <code>Rstall</code> has the same minimum frame duration this will not cause a frame rate loss if all
22171 buffers from the previous <code>Rstall</code> have already been delivered.<wbr/></p>
22172 <p>For more details about stalling,<wbr/> see <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputStallDuration">StreamConfigurationMap#getOutputStallDuration</a>.<wbr/></p>
22173 <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
22174 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22175             </td>
22176           </tr>
22177
22178           <tr class="entries_header">
22179             <th class="th_details" colspan="6">HAL Implementation Details</th>
22180           </tr>
22181           <tr class="entry_cont">
22182             <td class="entry_details" colspan="6">
22183               <p>For more details about stalling,<wbr/> see
22184 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a>.<wbr/></p>
22185             </td>
22186           </tr>
22187
22188           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22189            <!-- end of entry -->
22190         
22191                 
22192           <tr class="entry" id="dynamic_android.sensor.sensitivity">
22193             <td class="entry_name
22194              " rowspan="5">
22195               android.<wbr/>sensor.<wbr/>sensitivity
22196             </td>
22197             <td class="entry_type">
22198                 <span class="entry_type_name">int32</span>
22199
22200               <span class="entry_type_visibility"> [public]</span>
22201
22202
22203               <span class="entry_type_hwlevel">[full] </span>
22204
22205
22206
22207
22208             </td> <!-- entry_type -->
22209
22210             <td class="entry_description">
22211               <p>The amount of gain applied to sensor data
22212 before processing.<wbr/></p>
22213             </td>
22214
22215             <td class="entry_units">
22216               ISO arithmetic units
22217             </td>
22218
22219             <td class="entry_range">
22220               <p><a href="#static_android.sensor.info.sensitivityRange">android.<wbr/>sensor.<wbr/>info.<wbr/>sensitivity<wbr/>Range</a></p>
22221             </td>
22222
22223             <td class="entry_hal_version">
22224               <p>3.<wbr/>2</p>
22225             </td>
22226
22227             <td class="entry_tags">
22228               <ul class="entry_tags">
22229                   <li><a href="#tag_V1">V1</a></li>
22230               </ul>
22231             </td>
22232
22233           </tr>
22234           <tr class="entries_header">
22235             <th class="th_details" colspan="6">Details</th>
22236           </tr>
22237           <tr class="entry_cont">
22238             <td class="entry_details" colspan="6">
22239               <p>The sensitivity is the standard ISO sensitivity value,<wbr/>
22240 as defined in ISO 12232:2006.<wbr/></p>
22241 <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
22242 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
22243 is guaranteed to use only analog amplification for applying the gain.<wbr/></p>
22244 <p>If the camera device cannot apply the exact sensitivity
22245 requested,<wbr/> it will reduce the gain to the nearest supported
22246 value.<wbr/> The final sensitivity used will be available in the
22247 output capture result.<wbr/></p>
22248 <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
22249 OFF; otherwise the auto-exposure algorithm will override this value.<wbr/></p>
22250             </td>
22251           </tr>
22252
22253           <tr class="entries_header">
22254             <th class="th_details" colspan="6">HAL Implementation Details</th>
22255           </tr>
22256           <tr class="entry_cont">
22257             <td class="entry_details" colspan="6">
22258               <p>ISO 12232:2006 REI method is acceptable.<wbr/></p>
22259             </td>
22260           </tr>
22261
22262           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22263            <!-- end of entry -->
22264         
22265                 
22266           <tr class="entry" id="dynamic_android.sensor.timestamp">
22267             <td class="entry_name
22268              " rowspan="5">
22269               android.<wbr/>sensor.<wbr/>timestamp
22270             </td>
22271             <td class="entry_type">
22272                 <span class="entry_type_name">int64</span>
22273
22274               <span class="entry_type_visibility"> [public]</span>
22275
22276
22277               <span class="entry_type_hwlevel">[legacy] </span>
22278
22279
22280
22281
22282             </td> <!-- entry_type -->
22283
22284             <td class="entry_description">
22285               <p>Time at start of exposure of first
22286 row of the image sensor active array,<wbr/> in nanoseconds.<wbr/></p>
22287             </td>
22288
22289             <td class="entry_units">
22290               Nanoseconds
22291             </td>
22292
22293             <td class="entry_range">
22294               <p>&gt; 0</p>
22295             </td>
22296
22297             <td class="entry_hal_version">
22298               <p>3.<wbr/>2</p>
22299             </td>
22300
22301             <td class="entry_tags">
22302               <ul class="entry_tags">
22303                   <li><a href="#tag_BC">BC</a></li>
22304               </ul>
22305             </td>
22306
22307           </tr>
22308           <tr class="entries_header">
22309             <th class="th_details" colspan="6">Details</th>
22310           </tr>
22311           <tr class="entry_cont">
22312             <td class="entry_details" colspan="6">
22313               <p>The timestamps are also included in all image
22314 buffers produced for the same capture,<wbr/> and will be identical
22315 on all the outputs.<wbr/></p>
22316 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> UNKNOWN,<wbr/>
22317 the timestamps measure time since an unspecified starting point,<wbr/>
22318 and are monotonically increasing.<wbr/> They can be compared with the
22319 timestamps for other captures from the same camera device,<wbr/> but are
22320 not guaranteed to be comparable to any other time source.<wbr/></p>
22321 <p>When <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/> the
22322 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
22323 be compared to other timestamps from other subsystems that
22324 are using that base.<wbr/></p>
22325 <p>For reprocessing,<wbr/> the timestamp will match the start of exposure of
22326 the input image,<wbr/> i.<wbr/>e.<wbr/> <a href="https://developer.android.com/reference/CaptureResult.html#SENSOR_TIMESTAMP">the
22327 timestamp</a> in the TotalCaptureResult that was used to create the
22328 reprocess capture request.<wbr/></p>
22329             </td>
22330           </tr>
22331
22332           <tr class="entries_header">
22333             <th class="th_details" colspan="6">HAL Implementation Details</th>
22334           </tr>
22335           <tr class="entry_cont">
22336             <td class="entry_details" colspan="6">
22337               <p>All timestamps must be in reference to the kernel's
22338 CLOCK_<wbr/>BOOTTIME monotonic clock,<wbr/> which properly accounts for
22339 time spent asleep.<wbr/> This allows for synchronization with
22340 sensors that continue to operate while the system is
22341 otherwise asleep.<wbr/></p>
22342 <p>If <a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME,<wbr/>
22343 The timestamp must be synchronized with the timestamps from other
22344 sensor subsystems that are using the same timebase.<wbr/></p>
22345 <p>For reprocessing,<wbr/> the input image's start of exposure can be looked up
22346 with <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a> from the metadata included in the
22347 capture request.<wbr/></p>
22348             </td>
22349           </tr>
22350
22351           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22352            <!-- end of entry -->
22353         
22354                 
22355           <tr class="entry" id="dynamic_android.sensor.temperature">
22356             <td class="entry_name
22357              " rowspan="1">
22358               android.<wbr/>sensor.<wbr/>temperature
22359             </td>
22360             <td class="entry_type">
22361                 <span class="entry_type_name">float</span>
22362
22363               <span class="entry_type_visibility"> [system]</span>
22364
22365
22366
22367
22368
22369
22370             </td> <!-- entry_type -->
22371
22372             <td class="entry_description">
22373               <p>The temperature of the sensor,<wbr/> sampled at the time
22374 exposure began for this frame.<wbr/></p>
22375 <p>The thermal diode being queried should be inside the sensor PCB,<wbr/> or
22376 somewhere close to it.<wbr/></p>
22377             </td>
22378
22379             <td class="entry_units">
22380               Celsius
22381             </td>
22382
22383             <td class="entry_range">
22384               <p>Optional.<wbr/> This value is missing if no temperature is available.<wbr/></p>
22385             </td>
22386
22387             <td class="entry_hal_version">
22388               <p>3.<wbr/>2</p>
22389             </td>
22390
22391             <td class="entry_tags">
22392               <ul class="entry_tags">
22393                   <li><a href="#tag_FUTURE">FUTURE</a></li>
22394               </ul>
22395             </td>
22396
22397           </tr>
22398
22399
22400           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22401            <!-- end of entry -->
22402         
22403                 
22404           <tr class="entry" id="dynamic_android.sensor.neutralColorPoint">
22405             <td class="entry_name
22406              " rowspan="3">
22407               android.<wbr/>sensor.<wbr/>neutral<wbr/>Color<wbr/>Point
22408             </td>
22409             <td class="entry_type">
22410                 <span class="entry_type_name">rational</span>
22411                 <span class="entry_type_container">x</span>
22412
22413                 <span class="entry_type_array">
22414                   3
22415                 </span>
22416               <span class="entry_type_visibility"> [public]</span>
22417
22418
22419
22420
22421
22422
22423             </td> <!-- entry_type -->
22424
22425             <td class="entry_description">
22426               <p>The estimated camera neutral color in the native sensor colorspace at
22427 the time of capture.<wbr/></p>
22428             </td>
22429
22430             <td class="entry_units">
22431             </td>
22432
22433             <td class="entry_range">
22434             </td>
22435
22436             <td class="entry_hal_version">
22437               <p>3.<wbr/>2</p>
22438             </td>
22439
22440             <td class="entry_tags">
22441               <ul class="entry_tags">
22442                   <li><a href="#tag_RAW">RAW</a></li>
22443               </ul>
22444             </td>
22445
22446           </tr>
22447           <tr class="entries_header">
22448             <th class="th_details" colspan="6">Details</th>
22449           </tr>
22450           <tr class="entry_cont">
22451             <td class="entry_details" colspan="6">
22452               <p>This value gives the neutral color point encoded as an RGB value in the
22453 native sensor color space.<wbr/>  The neutral color point indicates the
22454 currently estimated white point of the scene illumination.<wbr/>  It can be
22455 used to interpolate between the provided color transforms when
22456 processing raw sensor data.<wbr/></p>
22457 <p>The order of the values is R,<wbr/> G,<wbr/> B; where R is in the lowest index.<wbr/></p>
22458             </td>
22459           </tr>
22460
22461
22462           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22463            <!-- end of entry -->
22464         
22465                 
22466           <tr class="entry" id="dynamic_android.sensor.noiseProfile">
22467             <td class="entry_name
22468              " rowspan="5">
22469               android.<wbr/>sensor.<wbr/>noise<wbr/>Profile
22470             </td>
22471             <td class="entry_type">
22472                 <span class="entry_type_name">double</span>
22473                 <span class="entry_type_container">x</span>
22474
22475                 <span class="entry_type_array">
22476                   2 x CFA Channels
22477                 </span>
22478               <span class="entry_type_visibility"> [public as pairDoubleDouble]</span>
22479
22480
22481
22482
22483                 <div class="entry_type_notes">Pairs of noise model coefficients</div>
22484
22485
22486             </td> <!-- entry_type -->
22487
22488             <td class="entry_description">
22489               <p>Noise model coefficients for each CFA mosaic channel.<wbr/></p>
22490             </td>
22491
22492             <td class="entry_units">
22493             </td>
22494
22495             <td class="entry_range">
22496             </td>
22497
22498             <td class="entry_hal_version">
22499               <p>3.<wbr/>2</p>
22500             </td>
22501
22502             <td class="entry_tags">
22503               <ul class="entry_tags">
22504                   <li><a href="#tag_RAW">RAW</a></li>
22505               </ul>
22506             </td>
22507
22508           </tr>
22509           <tr class="entries_header">
22510             <th class="th_details" colspan="6">Details</th>
22511           </tr>
22512           <tr class="entry_cont">
22513             <td class="entry_details" colspan="6">
22514               <p>This key contains two noise model coefficients for each CFA channel
22515 corresponding to the sensor amplification (S) and sensor readout
22516 noise (O).<wbr/>  These are given as pairs of coefficients for each channel
22517 in the same order as channels listed for the CFA layout key
22518 (see <a href="#static_android.sensor.info.colorFilterArrangement">android.<wbr/>sensor.<wbr/>info.<wbr/>color<wbr/>Filter<wbr/>Arrangement</a>).<wbr/>  This is
22519 represented as an array of Pair&lt;Double,<wbr/> Double&gt;,<wbr/> where
22520 the first member of the Pair at index n is the S coefficient and the
22521 second member is the O coefficient for the nth color channel in the CFA.<wbr/></p>
22522 <p>These coefficients are used in a two parameter noise model to describe
22523 the amount of noise present in the image for each CFA channel.<wbr/>  The
22524 noise model used here is:</p>
22525 <p>N(x) = sqrt(Sx + O)</p>
22526 <p>Where x represents the recorded signal of a CFA channel normalized to
22527 the range [0,<wbr/> 1],<wbr/> and S and O are the noise model coeffiecients for
22528 that channel.<wbr/></p>
22529 <p>A more detailed description of the noise model can be found in the
22530 Adobe DNG specification for the NoiseProfile tag.<wbr/></p>
22531             </td>
22532           </tr>
22533
22534           <tr class="entries_header">
22535             <th class="th_details" colspan="6">HAL Implementation Details</th>
22536           </tr>
22537           <tr class="entry_cont">
22538             <td class="entry_details" colspan="6">
22539               <p>For a CFA layout of RGGB,<wbr/> the list of coefficients would be given as
22540 an array of doubles S0,<wbr/>O0,<wbr/>S1,<wbr/>O1,...,<wbr/> where S0 and O0 are the coefficients
22541 for the red channel,<wbr/> S1 and O1 are the coefficients for the first green
22542 channel,<wbr/> etc.<wbr/></p>
22543             </td>
22544           </tr>
22545
22546           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22547            <!-- end of entry -->
22548         
22549                 
22550           <tr class="entry" id="dynamic_android.sensor.profileHueSatMap">
22551             <td class="entry_name
22552              " rowspan="3">
22553               android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map
22554             </td>
22555             <td class="entry_type">
22556                 <span class="entry_type_name">float</span>
22557                 <span class="entry_type_container">x</span>
22558
22559                 <span class="entry_type_array">
22560                   hue_samples x saturation_samples x value_samples x 3
22561                 </span>
22562               <span class="entry_type_visibility"> [system]</span>
22563
22564
22565
22566
22567                 <div class="entry_type_notes">Mapping for hue,<wbr/> saturation,<wbr/> and value</div>
22568
22569
22570             </td> <!-- entry_type -->
22571
22572             <td class="entry_description">
22573               <p>A mapping containing a hue shift,<wbr/> saturation scale,<wbr/> and value scale
22574 for each pixel.<wbr/></p>
22575             </td>
22576
22577             <td class="entry_units">
22578               
22579           The hue shift is given in degrees; saturation and value scale factors are
22580           unitless and are between 0 and 1 inclusive
22581           
22582             </td>
22583
22584             <td class="entry_range">
22585             </td>
22586
22587             <td class="entry_hal_version">
22588               <p>3.<wbr/>2</p>
22589             </td>
22590
22591             <td class="entry_tags">
22592               <ul class="entry_tags">
22593                   <li><a href="#tag_RAW">RAW</a></li>
22594               </ul>
22595             </td>
22596
22597           </tr>
22598           <tr class="entries_header">
22599             <th class="th_details" colspan="6">Details</th>
22600           </tr>
22601           <tr class="entry_cont">
22602             <td class="entry_details" colspan="6">
22603               <p>hue_<wbr/>samples,<wbr/> saturation_<wbr/>samples,<wbr/> and value_<wbr/>samples are given in
22604 <a href="#static_android.sensor.profileHueSatMapDimensions">android.<wbr/>sensor.<wbr/>profile<wbr/>Hue<wbr/>Sat<wbr/>Map<wbr/>Dimensions</a>.<wbr/></p>
22605 <p>Each entry of this map contains three floats corresponding to the
22606 hue shift,<wbr/> saturation scale,<wbr/> and value scale,<wbr/> respectively; where the
22607 hue shift has the lowest index.<wbr/> The map entries are stored in the key
22608 in nested loop order,<wbr/> with the value divisions in the outer loop,<wbr/> the
22609 hue divisions in the middle loop,<wbr/> and the saturation divisions in the
22610 inner loop.<wbr/> All zero input saturation entries are required to have a
22611 value scale factor of 1.<wbr/>0.<wbr/></p>
22612             </td>
22613           </tr>
22614
22615
22616           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22617            <!-- end of entry -->
22618         
22619                 
22620           <tr class="entry" id="dynamic_android.sensor.profileToneCurve">
22621             <td class="entry_name
22622              " rowspan="3">
22623               android.<wbr/>sensor.<wbr/>profile<wbr/>Tone<wbr/>Curve
22624             </td>
22625             <td class="entry_type">
22626                 <span class="entry_type_name">float</span>
22627                 <span class="entry_type_container">x</span>
22628
22629                 <span class="entry_type_array">
22630                   samples x 2
22631                 </span>
22632               <span class="entry_type_visibility"> [system]</span>
22633
22634
22635
22636
22637                 <div class="entry_type_notes">Samples defining a spline for a tone-mapping curve</div>
22638
22639
22640             </td> <!-- entry_type -->
22641
22642             <td class="entry_description">
22643               <p>A list of x,<wbr/>y samples defining a tone-mapping curve for gamma adjustment.<wbr/></p>
22644             </td>
22645
22646             <td class="entry_units">
22647             </td>
22648
22649             <td class="entry_range">
22650               <p>Each sample has an input range of <code>[0,<wbr/> 1]</code> and an output range of
22651 <code>[0,<wbr/> 1]</code>.<wbr/>  The first sample is required to be <code>(0,<wbr/> 0)</code>,<wbr/> and the last
22652 sample is required to be <code>(1,<wbr/> 1)</code>.<wbr/></p>
22653             </td>
22654
22655             <td class="entry_hal_version">
22656               <p>3.<wbr/>2</p>
22657             </td>
22658
22659             <td class="entry_tags">
22660               <ul class="entry_tags">
22661                   <li><a href="#tag_RAW">RAW</a></li>
22662               </ul>
22663             </td>
22664
22665           </tr>
22666           <tr class="entries_header">
22667             <th class="th_details" colspan="6">Details</th>
22668           </tr>
22669           <tr class="entry_cont">
22670             <td class="entry_details" colspan="6">
22671               <p>This key contains a default tone curve that can be applied while
22672 processing the image as a starting point for user adjustments.<wbr/>
22673 The curve is specified as a list of value pairs in linear gamma.<wbr/>
22674 The curve is interpolated using a cubic spline.<wbr/></p>
22675             </td>
22676           </tr>
22677
22678
22679           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22680            <!-- end of entry -->
22681         
22682                 
22683           <tr class="entry" id="dynamic_android.sensor.greenSplit">
22684             <td class="entry_name
22685              " rowspan="5">
22686               android.<wbr/>sensor.<wbr/>green<wbr/>Split
22687             </td>
22688             <td class="entry_type">
22689                 <span class="entry_type_name">float</span>
22690
22691               <span class="entry_type_visibility"> [public]</span>
22692
22693
22694
22695
22696
22697
22698             </td> <!-- entry_type -->
22699
22700             <td class="entry_description">
22701               <p>The worst-case divergence between Bayer green channels.<wbr/></p>
22702             </td>
22703
22704             <td class="entry_units">
22705             </td>
22706
22707             <td class="entry_range">
22708               <p>&gt;= 0</p>
22709             </td>
22710
22711             <td class="entry_hal_version">
22712               <p>3.<wbr/>2</p>
22713             </td>
22714
22715             <td class="entry_tags">
22716               <ul class="entry_tags">
22717                   <li><a href="#tag_RAW">RAW</a></li>
22718               </ul>
22719             </td>
22720
22721           </tr>
22722           <tr class="entries_header">
22723             <th class="th_details" colspan="6">Details</th>
22724           </tr>
22725           <tr class="entry_cont">
22726             <td class="entry_details" colspan="6">
22727               <p>This value is an estimate of the worst case split between the
22728 Bayer green channels in the red and blue rows in the sensor color
22729 filter array.<wbr/></p>
22730 <p>The green split is calculated as follows:</p>
22731 <ol>
22732 <li>A 5x5 pixel (or larger) window W within the active sensor array is
22733 chosen.<wbr/> The term 'pixel' here is taken to mean a group of 4 Bayer
22734 mosaic channels (R,<wbr/> Gr,<wbr/> Gb,<wbr/> B).<wbr/>  The location and size of the window
22735 chosen is implementation defined,<wbr/> and should be chosen to provide a
22736 green split estimate that is both representative of the entire image
22737 for this camera sensor,<wbr/> and can be calculated quickly.<wbr/></li>
22738 <li>The arithmetic mean of the green channels from the red
22739 rows (mean_<wbr/>Gr) within W is computed.<wbr/></li>
22740 <li>The arithmetic mean of the green channels from the blue
22741 rows (mean_<wbr/>Gb) within W is computed.<wbr/></li>
22742 <li>The maximum ratio R of the two means is computed as follows:
22743 <code>R = max((mean_<wbr/>Gr + 1)/<wbr/>(mean_<wbr/>Gb + 1),<wbr/> (mean_<wbr/>Gb + 1)/<wbr/>(mean_<wbr/>Gr + 1))</code></li>
22744 </ol>
22745 <p>The ratio R is the green split divergence reported for this property,<wbr/>
22746 which represents how much the green channels differ in the mosaic
22747 pattern.<wbr/>  This value is typically used to determine the treatment of
22748 the green mosaic channels when demosaicing.<wbr/></p>
22749 <p>The green split value can be roughly interpreted as follows:</p>
22750 <ul>
22751 <li>R &lt; 1.<wbr/>03 is a negligible split (&lt;3% divergence).<wbr/></li>
22752 <li>1.<wbr/>20 &lt;= R &gt;= 1.<wbr/>03 will require some software
22753 correction to avoid demosaic errors (3-20% divergence).<wbr/></li>
22754 <li>R &gt; 1.<wbr/>20 will require strong software correction to produce
22755 a usuable image (&gt;20% divergence).<wbr/></li>
22756 </ul>
22757             </td>
22758           </tr>
22759
22760           <tr class="entries_header">
22761             <th class="th_details" colspan="6">HAL Implementation Details</th>
22762           </tr>
22763           <tr class="entry_cont">
22764             <td class="entry_details" colspan="6">
22765               <p>The green split given may be a static value based on prior
22766 characterization of the camera sensor using the green split
22767 calculation method given here over a large,<wbr/> representative,<wbr/> sample
22768 set of images.<wbr/>  Other methods of calculation that produce equivalent
22769 results,<wbr/> and can be interpreted in the same manner,<wbr/> may be used.<wbr/></p>
22770             </td>
22771           </tr>
22772
22773           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22774            <!-- end of entry -->
22775         
22776                 
22777           <tr class="entry" id="dynamic_android.sensor.testPatternData">
22778             <td class="entry_name
22779              " rowspan="5">
22780               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data
22781             </td>
22782             <td class="entry_type">
22783                 <span class="entry_type_name">int32</span>
22784                 <span class="entry_type_container">x</span>
22785
22786                 <span class="entry_type_array">
22787                   4
22788                 </span>
22789               <span class="entry_type_visibility"> [public]</span>
22790
22791
22792
22793
22794
22795
22796             </td> <!-- entry_type -->
22797
22798             <td class="entry_description">
22799               <p>A pixel <code>[R,<wbr/> G_<wbr/>even,<wbr/> G_<wbr/>odd,<wbr/> B]</code> that supplies the test pattern
22800 when <a href="#controls_android.sensor.testPatternMode">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode</a> is SOLID_<wbr/>COLOR.<wbr/></p>
22801             </td>
22802
22803             <td class="entry_units">
22804             </td>
22805
22806             <td class="entry_range">
22807             </td>
22808
22809             <td class="entry_hal_version">
22810               <p>3.<wbr/>2</p>
22811             </td>
22812
22813             <td class="entry_tags">
22814             </td>
22815
22816           </tr>
22817           <tr class="entries_header">
22818             <th class="th_details" colspan="6">Details</th>
22819           </tr>
22820           <tr class="entry_cont">
22821             <td class="entry_details" colspan="6">
22822               <p>Each color channel is treated as an unsigned 32-bit integer.<wbr/>
22823 The camera device then uses the most significant X bits
22824 that correspond to how many bits are in its Bayer raw sensor
22825 output.<wbr/></p>
22826 <p>For example,<wbr/> a sensor with RAW10 Bayer output would use the
22827 10 most significant bits from each color channel.<wbr/></p>
22828             </td>
22829           </tr>
22830
22831           <tr class="entries_header">
22832             <th class="th_details" colspan="6">HAL Implementation Details</th>
22833           </tr>
22834           <tr class="entry_cont">
22835             <td class="entry_details" colspan="6">
22836               
22837             </td>
22838           </tr>
22839
22840           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
22841            <!-- end of entry -->
22842         
22843                 
22844           <tr class="entry" id="dynamic_android.sensor.testPatternMode">
22845             <td class="entry_name
22846              " rowspan="5">
22847               android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Mode
22848             </td>
22849             <td class="entry_type">
22850                 <span class="entry_type_name entry_type_name_enum">int32</span>
22851
22852               <span class="entry_type_visibility"> [public]</span>
22853
22854
22855
22856
22857
22858                 <ul class="entry_type_enum">
22859                   <li>
22860                     <span class="entry_type_enum_name">OFF (v3.2)</span>
22861                     <span class="entry_type_enum_notes"><p>No test pattern mode is used,<wbr/> and the camera
22862 device returns captures from the image sensor.<wbr/></p>
22863 <p>This is the default if the key is not set.<wbr/></p></span>
22864                   </li>
22865                   <li>
22866                     <span class="entry_type_enum_name">SOLID_COLOR (v3.2)</span>
22867                     <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
22868 respective color channel provided in
22869 <a href="#controls_android.sensor.testPatternData">android.<wbr/>sensor.<wbr/>test<wbr/>Pattern<wbr/>Data</a>.<wbr/></p>
22870 <p>For example:</p>
22871 <pre><code>android.<wbr/>testPatternData = [0,<wbr/> 0xFFFFFFFF,<wbr/> 0xFFFFFFFF,<wbr/> 0]
22872 </code></pre>
22873 <p>All green pixels are 100% green.<wbr/> All red/<wbr/>blue pixels are black.<wbr/></p>
22874 <pre><code>android.<wbr/>testPatternData = [0xFFFFFFFF,<wbr/> 0,<wbr/> 0xFFFFFFFF,<wbr/> 0]
22875 </code></pre>
22876 <p>All red pixels are 100% red.<wbr/> Only the odd green pixels
22877 are 100% green.<wbr/> All blue pixels are 100% black.<wbr/></p></span>
22878                   </li>
22879                   <li>
22880                     <span class="entry_type_enum_name">COLOR_BARS (v3.2)</span>
22881                     <span class="entry_type_enum_notes"><p>All pixel data is replaced with an 8-bar color pattern.<wbr/></p>
22882 <p>The vertical bars (left-to-right) are as follows:</p>
22883 <ul>
22884 <li>100% white</li>
22885 <li>yellow</li>
22886 <li>cyan</li>
22887 <li>green</li>
22888 <li>magenta</li>
22889 <li>red</li>
22890 <li>blue</li>
22891 <li>black</li>
22892 </ul>
22893 <p>In general the image would look like the following:</p>
22894 <pre><code>W Y C G M R B K
22895 W Y C G M R B K
22896 W Y C G M R B K
22897 W Y C G M R B K
22898 W Y C G M R B K
22899 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
22900 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
22901 .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/> .<wbr/>
22902
22903 (B = Blue,<wbr/> K = Black)
22904 </code></pre>
22905 <p>Each bar should take up 1/<wbr/>8 of the sensor pixel array width.<wbr/>
22906 When this is not possible,<wbr/> the bar size should be rounded
22907 down to the nearest integer and the pattern can repeat
22908 on the right side.<wbr/></p>
22909 <p>Each bar's height must always take up the full sensor
22910 pixel array height.<wbr/></p>
22911 <p>Each pixel in this test pattern must be set to either
22912 0% intensity or 100% intensity.<wbr/></p></span>
22913                   </li>
22914                   <li>
22915                     <span class="entry_type_enum_name">COLOR_BARS_FADE_TO_GRAY (v3.2)</span>
22916                     <span class="entry_type_enum_notes"><p>The test pattern is similar to COLOR_<wbr/>BARS,<wbr/> except that
22917 each bar should start at its specified color at the top,<wbr/>
22918 and fade to gray at the bottom.<wbr/></p>
22919 <p>Furthermore each bar is further subdivided into a left and
22920 right half.<wbr/> The left half should have a smooth gradient,<wbr/>
22921 and the right half should have a quantized gradient.<wbr/></p>
22922 <p>In particular,<wbr/> the right half's should consist of blocks of the
22923 same color for 1/<wbr/>16th active sensor pixel array width.<wbr/></p>
22924 <p>The least significant bits in the quantized gradient should
22925 be copied from the most significant bits of the smooth gradient.<wbr/></p>
22926 <p>The height of each bar should always be a multiple of 128.<wbr/>
22927 When this is not the case,<wbr/> the pattern should repeat at the bottom
22928 of the image.<wbr/></p></span>
22929                   </li>
22930                   <li>
22931                     <span class="entry_type_enum_name">PN9 (v3.2)</span>
22932                     <span class="entry_type_enum_notes"><p>All pixel data is replaced by a pseudo-random sequence
22933 generated from a PN9 512-bit sequence (typically implemented
22934 in hardware with a linear feedback shift register).<wbr/></p>
22935 <p>The generator should be reset at the beginning of each frame,<wbr/>
22936 and thus each subsequent raw frame with this test pattern should
22937 be exactly the same as the last.<wbr/></p></span>
22938                   </li>
22939                   <li>
22940                     <span class="entry_type_enum_name">CUSTOM1 (v3.2)</span>
22941                     <span class="entry_type_enum_value">256</span>
22942                     <span class="entry_type_enum_notes"><p>The first custom test pattern.<wbr/> All custom patterns that are
22943 available only on this camera device are at least this numeric
22944 value.<wbr/></p>
22945 <p>All of the custom test patterns will be static
22946 (that is the raw image must not vary from frame to frame).<wbr/></p></span>
22947                   </li>
22948                 </ul>
22949
22950             </td> <!-- entry_type -->
22951
22952             <td class="entry_description">
22953               <p>When enabled,<wbr/> the sensor sends a test pattern instead of
22954 doing a real exposure from the camera.<wbr/></p>
22955             </td>
22956
22957             <td class="entry_units">
22958             </td>
22959
22960             <td class="entry_range">
22961               <p><a href="#static_android.sensor.availableTestPatternModes">android.<wbr/>sensor.<wbr/>available<wbr/>Test<wbr/>Pattern<wbr/>Modes</a></p>
22962             </td>
22963
22964             <td class="entry_hal_version">
22965               <p>3.<wbr/>2</p>
22966             </td>
22967
22968             <td class="entry_tags">
22969             </td>
22970
22971           </tr>
22972           <tr class="entries_header">
22973             <th class="th_details" colspan="6">Details</th>
22974           </tr>
22975           <tr class="entry_cont">
22976             <td class="entry_details" colspan="6">
22977               <p>When a test pattern is enabled,<wbr/> all manual sensor controls specified
22978 by android.<wbr/>sensor.<wbr/>* will be ignored.<wbr/> All other controls should
22979 work as normal.<wbr/></p>
22980 <p>For example,<wbr/> if manual flash is enabled,<wbr/> flash firing should still
22981 occur (and that the test pattern remain unmodified,<wbr/> since the flash
22982 would not actually affect it).<wbr/></p>
22983 <p>Defaults to OFF.<wbr/></p>
22984             </td>
22985           </tr>
22986
22987           <tr class="entries_header">
22988             <th class="th_details" colspan="6">HAL Implementation Details</th>
22989           </tr>
22990           <tr class="entry_cont">
22991             <td class="entry_details" colspan="6">
22992               <p>All test patterns are specified in the Bayer domain.<wbr/></p>
22993 <p>The HAL may choose to substitute test patterns from the sensor
22994 with test patterns from on-device memory.<wbr/> In that case,<wbr/> it should be
22995 indistinguishable to the ISP whether the data came from the
22996 sensor interconnect bus (such as CSI2) or memory.<wbr/></p>
22997             </td>
22998           </tr>
22999
23000           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23001            <!-- end of entry -->
23002         
23003                 
23004           <tr class="entry" id="dynamic_android.sensor.rollingShutterSkew">
23005             <td class="entry_name
23006              " rowspan="5">
23007               android.<wbr/>sensor.<wbr/>rolling<wbr/>Shutter<wbr/>Skew
23008             </td>
23009             <td class="entry_type">
23010                 <span class="entry_type_name">int64</span>
23011
23012               <span class="entry_type_visibility"> [public]</span>
23013
23014
23015               <span class="entry_type_hwlevel">[limited] </span>
23016
23017
23018
23019
23020             </td> <!-- entry_type -->
23021
23022             <td class="entry_description">
23023               <p>Duration between the start of first row exposure
23024 and the start of last row exposure.<wbr/></p>
23025             </td>
23026
23027             <td class="entry_units">
23028               Nanoseconds
23029             </td>
23030
23031             <td class="entry_range">
23032               <p>&gt;= 0 and &lt;
23033 <a href="https://developer.android.com/reference/android/hardware/camera2/params/StreamConfigurationMap.html#getOutputMinFrameDuration">StreamConfigurationMap#getOutputMinFrameDuration</a>.<wbr/></p>
23034             </td>
23035
23036             <td class="entry_hal_version">
23037               <p>3.<wbr/>2</p>
23038             </td>
23039
23040             <td class="entry_tags">
23041               <ul class="entry_tags">
23042                   <li><a href="#tag_V1">V1</a></li>
23043               </ul>
23044             </td>
23045
23046           </tr>
23047           <tr class="entries_header">
23048             <th class="th_details" colspan="6">Details</th>
23049           </tr>
23050           <tr class="entry_cont">
23051             <td class="entry_details" colspan="6">
23052               <p>This is the exposure time skew between the first and last
23053 row exposure start times.<wbr/> The first row and the last row are
23054 the first and last rows inside of the
23055 <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
23056 <p>For typical camera sensors that use rolling shutters,<wbr/> this is also equivalent
23057 to the frame readout time.<wbr/></p>
23058             </td>
23059           </tr>
23060
23061           <tr class="entries_header">
23062             <th class="th_details" colspan="6">HAL Implementation Details</th>
23063           </tr>
23064           <tr class="entry_cont">
23065             <td class="entry_details" colspan="6">
23066               <p>The HAL must report <code>0</code> if the sensor is using global shutter,<wbr/> where all pixels begin
23067 exposure at the same time.<wbr/></p>
23068             </td>
23069           </tr>
23070
23071           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23072            <!-- end of entry -->
23073         
23074                 
23075           <tr class="entry" id="dynamic_android.sensor.dynamicBlackLevel">
23076             <td class="entry_name
23077              " rowspan="5">
23078               android.<wbr/>sensor.<wbr/>dynamic<wbr/>Black<wbr/>Level
23079             </td>
23080             <td class="entry_type">
23081                 <span class="entry_type_name">float</span>
23082                 <span class="entry_type_container">x</span>
23083
23084                 <span class="entry_type_array">
23085                   4
23086                 </span>
23087               <span class="entry_type_visibility"> [public]</span>
23088
23089
23090
23091
23092                 <div class="entry_type_notes">2x2 raw count block</div>
23093
23094
23095             </td> <!-- entry_type -->
23096
23097             <td class="entry_description">
23098               <p>A per-frame dynamic black level offset for each of the color filter
23099 arrangement (CFA) mosaic channels.<wbr/></p>
23100             </td>
23101
23102             <td class="entry_units">
23103             </td>
23104
23105             <td class="entry_range">
23106               <p>&gt;= 0 for each.<wbr/></p>
23107             </td>
23108
23109             <td class="entry_hal_version">
23110               <p>3.<wbr/>2</p>
23111             </td>
23112
23113             <td class="entry_tags">
23114               <ul class="entry_tags">
23115                   <li><a href="#tag_RAW">RAW</a></li>
23116               </ul>
23117             </td>
23118
23119           </tr>
23120           <tr class="entries_header">
23121             <th class="th_details" colspan="6">Details</th>
23122           </tr>
23123           <tr class="entry_cont">
23124             <td class="entry_details" colspan="6">
23125               <p>Camera sensor black levels may vary dramatically for different
23126 capture settings (e.<wbr/>g.<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>).<wbr/> The fixed black
23127 level reported by <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may be too
23128 inaccurate to represent the actual value on a per-frame basis.<wbr/> The
23129 camera device internal pipeline relies on reliable black level values
23130 to process the raw images appropriately.<wbr/> To get the best image
23131 quality,<wbr/> the camera device may choose to estimate the per frame black
23132 level values either based on optically shielded black regions
23133 (<a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>) or its internal model.<wbr/></p>
23134 <p>This key reports the camera device estimated per-frame zero light
23135 value for each of the CFA mosaic channels in the camera sensor.<wbr/> The
23136 <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may only represent a coarse
23137 approximation of the actual black level values.<wbr/> This value is the
23138 black level used in camera device internal image processing pipeline
23139 and generally more accurate than the fixed black level values.<wbr/>
23140 However,<wbr/> since they are estimated values by the camera device,<wbr/> they
23141 may not be as accurate as the black level values calculated from the
23142 optical black pixels reported by <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a>.<wbr/></p>
23143 <p>The values are given in the same order as channels listed for the CFA
23144 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
23145 nth value given corresponds to the black level offset for the nth
23146 color channel listed in the CFA.<wbr/></p>
23147 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is available or the
23148 camera device advertises this key via <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureResultKeys">CameraCharacteristics#getAvailableCaptureResultKeys</a>.<wbr/></p>
23149             </td>
23150           </tr>
23151
23152           <tr class="entries_header">
23153             <th class="th_details" colspan="6">HAL Implementation Details</th>
23154           </tr>
23155           <tr class="entry_cont">
23156             <td class="entry_details" colspan="6">
23157               <p>The values are given in row-column scan order,<wbr/> with the first value
23158 corresponding to the element of the CFA in row=0,<wbr/> column=0.<wbr/></p>
23159             </td>
23160           </tr>
23161
23162           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23163            <!-- end of entry -->
23164         
23165                 
23166           <tr class="entry" id="dynamic_android.sensor.dynamicWhiteLevel">
23167             <td class="entry_name
23168              " rowspan="5">
23169               android.<wbr/>sensor.<wbr/>dynamic<wbr/>White<wbr/>Level
23170             </td>
23171             <td class="entry_type">
23172                 <span class="entry_type_name">int32</span>
23173
23174               <span class="entry_type_visibility"> [public]</span>
23175
23176
23177
23178
23179
23180
23181             </td> <!-- entry_type -->
23182
23183             <td class="entry_description">
23184               <p>Maximum raw value output by sensor for this frame.<wbr/></p>
23185             </td>
23186
23187             <td class="entry_units">
23188             </td>
23189
23190             <td class="entry_range">
23191               <p>&gt;= 0</p>
23192             </td>
23193
23194             <td class="entry_hal_version">
23195               <p>3.<wbr/>2</p>
23196             </td>
23197
23198             <td class="entry_tags">
23199               <ul class="entry_tags">
23200                   <li><a href="#tag_RAW">RAW</a></li>
23201               </ul>
23202             </td>
23203
23204           </tr>
23205           <tr class="entries_header">
23206             <th class="th_details" colspan="6">Details</th>
23207           </tr>
23208           <tr class="entry_cont">
23209             <td class="entry_details" colspan="6">
23210               <p>Since the <a href="#static_android.sensor.blackLevelPattern">android.<wbr/>sensor.<wbr/>black<wbr/>Level<wbr/>Pattern</a> may change for different
23211 capture settings (e.<wbr/>g.,<wbr/> <a href="#controls_android.sensor.sensitivity">android.<wbr/>sensor.<wbr/>sensitivity</a>),<wbr/> the white
23212 level will change accordingly.<wbr/> This key is similar to
23213 <a href="#static_android.sensor.info.whiteLevel">android.<wbr/>sensor.<wbr/>info.<wbr/>white<wbr/>Level</a>,<wbr/> but specifies the camera device
23214 estimated white level for each frame.<wbr/></p>
23215 <p>This key will be available if <a href="#static_android.sensor.opticalBlackRegions">android.<wbr/>sensor.<wbr/>optical<wbr/>Black<wbr/>Regions</a> is
23216 available or the camera device advertises this key via
23217 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html#getAvailableCaptureRequestKeys">CameraCharacteristics#getAvailableCaptureRequestKeys</a>.<wbr/></p>
23218             </td>
23219           </tr>
23220
23221           <tr class="entries_header">
23222             <th class="th_details" colspan="6">HAL Implementation Details</th>
23223           </tr>
23224           <tr class="entry_cont">
23225             <td class="entry_details" colspan="6">
23226               <p>The full bit depth of the sensor must be available in the raw data,<wbr/>
23227 so the value for linear sensors should not be significantly lower
23228 than maximum raw value supported,<wbr/> i.<wbr/>e.<wbr/> 2^(sensor bits per pixel).<wbr/></p>
23229             </td>
23230           </tr>
23231
23232           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23233            <!-- end of entry -->
23234         
23235         
23236
23237       <!-- end of kind -->
23238       </tbody>
23239
23240   <!-- end of section -->
23241   <tr><td colspan="7" id="section_shading" class="section">shading</td></tr>
23242
23243
23244       <tr><td colspan="7" class="kind">controls</td></tr>
23245
23246       <thead class="entries_header">
23247         <tr>
23248           <th class="th_name">Property Name</th>
23249           <th class="th_type">Type</th>
23250           <th class="th_description">Description</th>
23251           <th class="th_units">Units</th>
23252           <th class="th_range">Range</th>
23253           <th class="th_hal_version">Initial HIDL HAL version</th>
23254           <th class="th_tags">Tags</th>
23255         </tr>
23256       </thead>
23257
23258       <tbody>
23259
23260         
23261
23262         
23263
23264         
23265
23266         
23267
23268                 
23269           <tr class="entry" id="controls_android.shading.mode">
23270             <td class="entry_name
23271              " rowspan="3">
23272               android.<wbr/>shading.<wbr/>mode
23273             </td>
23274             <td class="entry_type">
23275                 <span class="entry_type_name entry_type_name_enum">byte</span>
23276
23277               <span class="entry_type_visibility"> [public]</span>
23278
23279
23280               <span class="entry_type_hwlevel">[full] </span>
23281
23282
23283
23284                 <ul class="entry_type_enum">
23285                   <li>
23286                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23287                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23288                   </li>
23289                   <li>
23290                     <span class="entry_type_enum_name">FAST (v3.2)</span>
23291                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23292 frame rate relative to sensor raw output</p></span>
23293                   </li>
23294                   <li>
23295                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23296                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23297 cost of possibly reduced frame rate.<wbr/></p></span>
23298                   </li>
23299                 </ul>
23300
23301             </td> <!-- entry_type -->
23302
23303             <td class="entry_description">
23304               <p>Quality of lens shading correction applied
23305 to the image data.<wbr/></p>
23306             </td>
23307
23308             <td class="entry_units">
23309             </td>
23310
23311             <td class="entry_range">
23312               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23313             </td>
23314
23315             <td class="entry_hal_version">
23316               <p>3.<wbr/>2</p>
23317             </td>
23318
23319             <td class="entry_tags">
23320             </td>
23321
23322           </tr>
23323           <tr class="entries_header">
23324             <th class="th_details" colspan="6">Details</th>
23325           </tr>
23326           <tr class="entry_cont">
23327             <td class="entry_details" colspan="6">
23328               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23329 camera device,<wbr/> and an identity lens shading map data will be provided
23330 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
23331 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23332 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
23333 map shown below:</p>
23334 <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/>
23335  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/>
23336  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/>
23337  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/>
23338  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/>
23339  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 ]
23340 </code></pre>
23341 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23342 device.<wbr/> Applications can request lens shading map data by setting
23343 <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
23344 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
23345 data will be the one applied by the camera device for this capture request.<wbr/></p>
23346 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23347 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23348 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>
23349 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23350 to be converged before using the returned shading map data.<wbr/></p>
23351             </td>
23352           </tr>
23353
23354
23355           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23356            <!-- end of entry -->
23357         
23358                 
23359           <tr class="entry" id="controls_android.shading.strength">
23360             <td class="entry_name
23361              " rowspan="1">
23362               android.<wbr/>shading.<wbr/>strength
23363             </td>
23364             <td class="entry_type">
23365                 <span class="entry_type_name">byte</span>
23366
23367               <span class="entry_type_visibility"> [system]</span>
23368
23369
23370
23371
23372
23373
23374             </td> <!-- entry_type -->
23375
23376             <td class="entry_description">
23377               <p>Control the amount of shading correction
23378 applied to the images</p>
23379             </td>
23380
23381             <td class="entry_units">
23382               unitless: 1-10; 10 is full shading
23383           compensation
23384             </td>
23385
23386             <td class="entry_range">
23387             </td>
23388
23389             <td class="entry_hal_version">
23390               <p>3.<wbr/>2</p>
23391             </td>
23392
23393             <td class="entry_tags">
23394               <ul class="entry_tags">
23395                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23396               </ul>
23397             </td>
23398
23399           </tr>
23400
23401
23402           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23403            <!-- end of entry -->
23404         
23405         
23406
23407       <!-- end of kind -->
23408       </tbody>
23409       <tr><td colspan="7" class="kind">dynamic</td></tr>
23410
23411       <thead class="entries_header">
23412         <tr>
23413           <th class="th_name">Property Name</th>
23414           <th class="th_type">Type</th>
23415           <th class="th_description">Description</th>
23416           <th class="th_units">Units</th>
23417           <th class="th_range">Range</th>
23418           <th class="th_hal_version">Initial HIDL HAL version</th>
23419           <th class="th_tags">Tags</th>
23420         </tr>
23421       </thead>
23422
23423       <tbody>
23424
23425         
23426
23427         
23428
23429         
23430
23431         
23432
23433                 
23434           <tr class="entry" id="dynamic_android.shading.mode">
23435             <td class="entry_name
23436              " rowspan="3">
23437               android.<wbr/>shading.<wbr/>mode
23438             </td>
23439             <td class="entry_type">
23440                 <span class="entry_type_name entry_type_name_enum">byte</span>
23441
23442               <span class="entry_type_visibility"> [public]</span>
23443
23444
23445               <span class="entry_type_hwlevel">[full] </span>
23446
23447
23448
23449                 <ul class="entry_type_enum">
23450                   <li>
23451                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23452                     <span class="entry_type_enum_notes"><p>No lens shading correction is applied.<wbr/></p></span>
23453                   </li>
23454                   <li>
23455                     <span class="entry_type_enum_name">FAST (v3.2)</span>
23456                     <span class="entry_type_enum_notes"><p>Apply lens shading corrections,<wbr/> without slowing
23457 frame rate relative to sensor raw output</p></span>
23458                   </li>
23459                   <li>
23460                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
23461                     <span class="entry_type_enum_notes"><p>Apply high-quality lens shading correction,<wbr/> at the
23462 cost of possibly reduced frame rate.<wbr/></p></span>
23463                   </li>
23464                 </ul>
23465
23466             </td> <!-- entry_type -->
23467
23468             <td class="entry_description">
23469               <p>Quality of lens shading correction applied
23470 to the image data.<wbr/></p>
23471             </td>
23472
23473             <td class="entry_units">
23474             </td>
23475
23476             <td class="entry_range">
23477               <p><a href="#static_android.shading.availableModes">android.<wbr/>shading.<wbr/>available<wbr/>Modes</a></p>
23478             </td>
23479
23480             <td class="entry_hal_version">
23481               <p>3.<wbr/>2</p>
23482             </td>
23483
23484             <td class="entry_tags">
23485             </td>
23486
23487           </tr>
23488           <tr class="entries_header">
23489             <th class="th_details" colspan="6">Details</th>
23490           </tr>
23491           <tr class="entry_cont">
23492             <td class="entry_details" colspan="6">
23493               <p>When set to OFF mode,<wbr/> no lens shading correction will be applied by the
23494 camera device,<wbr/> and an identity lens shading map data will be provided
23495 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
23496 shading map with size of <code>[ 4,<wbr/> 3 ]</code>,<wbr/>
23497 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
23498 map shown below:</p>
23499 <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/>
23500  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/>
23501  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/>
23502  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/>
23503  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/>
23504  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 ]
23505 </code></pre>
23506 <p>When set to other modes,<wbr/> lens shading correction will be applied by the camera
23507 device.<wbr/> Applications can request lens shading map data by setting
23508 <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
23509 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
23510 data will be the one applied by the camera device for this capture request.<wbr/></p>
23511 <p>The shading map data may depend on the auto-exposure (AE) and AWB statistics,<wbr/> therefore
23512 the reliability of the map data may be affected by the AE and AWB algorithms.<wbr/> When AE and
23513 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>
23514 OFF),<wbr/> to get best results,<wbr/> it is recommended that the applications wait for the AE and AWB
23515 to be converged before using the returned shading map data.<wbr/></p>
23516             </td>
23517           </tr>
23518
23519
23520           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23521            <!-- end of entry -->
23522         
23523         
23524
23525       <!-- end of kind -->
23526       </tbody>
23527       <tr><td colspan="7" class="kind">static</td></tr>
23528
23529       <thead class="entries_header">
23530         <tr>
23531           <th class="th_name">Property Name</th>
23532           <th class="th_type">Type</th>
23533           <th class="th_description">Description</th>
23534           <th class="th_units">Units</th>
23535           <th class="th_range">Range</th>
23536           <th class="th_hal_version">Initial HIDL HAL version</th>
23537           <th class="th_tags">Tags</th>
23538         </tr>
23539       </thead>
23540
23541       <tbody>
23542
23543         
23544
23545         
23546
23547         
23548
23549         
23550
23551                 
23552           <tr class="entry" id="static_android.shading.availableModes">
23553             <td class="entry_name
23554              " rowspan="5">
23555               android.<wbr/>shading.<wbr/>available<wbr/>Modes
23556             </td>
23557             <td class="entry_type">
23558                 <span class="entry_type_name">byte</span>
23559                 <span class="entry_type_container">x</span>
23560
23561                 <span class="entry_type_array">
23562                   n
23563                 </span>
23564               <span class="entry_type_visibility"> [public as enumList]</span>
23565
23566
23567               <span class="entry_type_hwlevel">[legacy] </span>
23568
23569
23570                 <div class="entry_type_notes">List of enums (android.<wbr/>shading.<wbr/>mode).<wbr/></div>
23571
23572
23573             </td> <!-- entry_type -->
23574
23575             <td class="entry_description">
23576               <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>
23577             </td>
23578
23579             <td class="entry_units">
23580             </td>
23581
23582             <td class="entry_range">
23583               <p>Any value listed in <a href="#controls_android.shading.mode">android.<wbr/>shading.<wbr/>mode</a></p>
23584             </td>
23585
23586             <td class="entry_hal_version">
23587               <p>3.<wbr/>2</p>
23588             </td>
23589
23590             <td class="entry_tags">
23591             </td>
23592
23593           </tr>
23594           <tr class="entries_header">
23595             <th class="th_details" colspan="6">Details</th>
23596           </tr>
23597           <tr class="entry_cont">
23598             <td class="entry_details" colspan="6">
23599               <p>This list contains lens shading modes that can be set for the camera device.<wbr/>
23600 Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always
23601 list OFF and FAST mode.<wbr/> This includes all FULL level devices.<wbr/>
23602 LEGACY devices will always only support FAST mode.<wbr/></p>
23603             </td>
23604           </tr>
23605
23606           <tr class="entries_header">
23607             <th class="th_details" colspan="6">HAL Implementation Details</th>
23608           </tr>
23609           <tr class="entry_cont">
23610             <td class="entry_details" colspan="6">
23611               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if lens shading correction control is
23612 available on the camera device,<wbr/> but the underlying implementation can be the same for
23613 both modes.<wbr/> That is,<wbr/> if the highest quality implementation on the camera device does not
23614 slow down capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
23615             </td>
23616           </tr>
23617
23618           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23619            <!-- end of entry -->
23620         
23621         
23622
23623       <!-- end of kind -->
23624       </tbody>
23625
23626   <!-- end of section -->
23627   <tr><td colspan="7" id="section_statistics" class="section">statistics</td></tr>
23628
23629
23630       <tr><td colspan="7" class="kind">controls</td></tr>
23631
23632       <thead class="entries_header">
23633         <tr>
23634           <th class="th_name">Property Name</th>
23635           <th class="th_type">Type</th>
23636           <th class="th_description">Description</th>
23637           <th class="th_units">Units</th>
23638           <th class="th_range">Range</th>
23639           <th class="th_hal_version">Initial HIDL HAL version</th>
23640           <th class="th_tags">Tags</th>
23641         </tr>
23642       </thead>
23643
23644       <tbody>
23645
23646         
23647
23648         
23649
23650         
23651
23652         
23653
23654                 
23655           <tr class="entry" id="controls_android.statistics.faceDetectMode">
23656             <td class="entry_name
23657              " rowspan="5">
23658               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
23659             </td>
23660             <td class="entry_type">
23661                 <span class="entry_type_name entry_type_name_enum">byte</span>
23662
23663               <span class="entry_type_visibility"> [public]</span>
23664
23665
23666               <span class="entry_type_hwlevel">[legacy] </span>
23667
23668
23669
23670                 <ul class="entry_type_enum">
23671                   <li>
23672                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23673                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
23674 results.<wbr/></p></span>
23675                   </li>
23676                   <li>
23677                     <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
23678                     <span class="entry_type_enum_optional">[optional]</span>
23679                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
23680                   </li>
23681                   <li>
23682                     <span class="entry_type_enum_name">FULL (v3.2)</span>
23683                     <span class="entry_type_enum_optional">[optional]</span>
23684                     <span class="entry_type_enum_notes"><p>Return all face
23685 metadata.<wbr/></p>
23686 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
23687                   </li>
23688                 </ul>
23689
23690             </td> <!-- entry_type -->
23691
23692             <td class="entry_description">
23693               <p>Operating mode for the face detector
23694 unit.<wbr/></p>
23695             </td>
23696
23697             <td class="entry_units">
23698             </td>
23699
23700             <td class="entry_range">
23701               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
23702             </td>
23703
23704             <td class="entry_hal_version">
23705               <p>3.<wbr/>2</p>
23706             </td>
23707
23708             <td class="entry_tags">
23709               <ul class="entry_tags">
23710                   <li><a href="#tag_BC">BC</a></li>
23711               </ul>
23712             </td>
23713
23714           </tr>
23715           <tr class="entries_header">
23716             <th class="th_details" colspan="6">Details</th>
23717           </tr>
23718           <tr class="entry_cont">
23719             <td class="entry_details" colspan="6">
23720               <p>Whether face detection is enabled,<wbr/> and whether it
23721 should output just the basic fields or the full set of
23722 fields.<wbr/></p>
23723             </td>
23724           </tr>
23725
23726           <tr class="entries_header">
23727             <th class="th_details" colspan="6">HAL Implementation Details</th>
23728           </tr>
23729           <tr class="entry_cont">
23730             <td class="entry_details" colspan="6">
23731               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
23732 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
23733 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
23734 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
23735             </td>
23736           </tr>
23737
23738           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23739            <!-- end of entry -->
23740         
23741                 
23742           <tr class="entry" id="controls_android.statistics.histogramMode">
23743             <td class="entry_name
23744              " rowspan="1">
23745               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
23746             </td>
23747             <td class="entry_type">
23748                 <span class="entry_type_name entry_type_name_enum">byte</span>
23749
23750               <span class="entry_type_visibility"> [system as boolean]</span>
23751
23752
23753
23754
23755
23756                 <ul class="entry_type_enum">
23757                   <li>
23758                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23759                   </li>
23760                   <li>
23761                     <span class="entry_type_enum_name">ON (v3.2)</span>
23762                   </li>
23763                 </ul>
23764
23765             </td> <!-- entry_type -->
23766
23767             <td class="entry_description">
23768               <p>Operating mode for histogram
23769 generation</p>
23770             </td>
23771
23772             <td class="entry_units">
23773             </td>
23774
23775             <td class="entry_range">
23776             </td>
23777
23778             <td class="entry_hal_version">
23779               <p>3.<wbr/>2</p>
23780             </td>
23781
23782             <td class="entry_tags">
23783               <ul class="entry_tags">
23784                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23785               </ul>
23786             </td>
23787
23788           </tr>
23789
23790
23791           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23792            <!-- end of entry -->
23793         
23794                 
23795           <tr class="entry" id="controls_android.statistics.sharpnessMapMode">
23796             <td class="entry_name
23797              " rowspan="1">
23798               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
23799             </td>
23800             <td class="entry_type">
23801                 <span class="entry_type_name entry_type_name_enum">byte</span>
23802
23803               <span class="entry_type_visibility"> [system as boolean]</span>
23804
23805
23806
23807
23808
23809                 <ul class="entry_type_enum">
23810                   <li>
23811                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23812                   </li>
23813                   <li>
23814                     <span class="entry_type_enum_name">ON (v3.2)</span>
23815                   </li>
23816                 </ul>
23817
23818             </td> <!-- entry_type -->
23819
23820             <td class="entry_description">
23821               <p>Operating mode for sharpness map
23822 generation</p>
23823             </td>
23824
23825             <td class="entry_units">
23826             </td>
23827
23828             <td class="entry_range">
23829             </td>
23830
23831             <td class="entry_hal_version">
23832               <p>3.<wbr/>2</p>
23833             </td>
23834
23835             <td class="entry_tags">
23836               <ul class="entry_tags">
23837                   <li><a href="#tag_FUTURE">FUTURE</a></li>
23838               </ul>
23839             </td>
23840
23841           </tr>
23842
23843
23844           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23845            <!-- end of entry -->
23846         
23847                 
23848           <tr class="entry" id="controls_android.statistics.hotPixelMapMode">
23849             <td class="entry_name
23850              " rowspan="3">
23851               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
23852             </td>
23853             <td class="entry_type">
23854                 <span class="entry_type_name entry_type_name_enum">byte</span>
23855
23856               <span class="entry_type_visibility"> [public as boolean]</span>
23857
23858
23859
23860
23861
23862                 <ul class="entry_type_enum">
23863                   <li>
23864                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23865                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
23866                   </li>
23867                   <li>
23868                     <span class="entry_type_enum_name">ON (v3.2)</span>
23869                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
23870                   </li>
23871                 </ul>
23872
23873             </td> <!-- entry_type -->
23874
23875             <td class="entry_description">
23876               <p>Operating mode for hot pixel map generation.<wbr/></p>
23877             </td>
23878
23879             <td class="entry_units">
23880             </td>
23881
23882             <td class="entry_range">
23883               <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>
23884             </td>
23885
23886             <td class="entry_hal_version">
23887               <p>3.<wbr/>2</p>
23888             </td>
23889
23890             <td class="entry_tags">
23891               <ul class="entry_tags">
23892                   <li><a href="#tag_V1">V1</a></li>
23893                   <li><a href="#tag_RAW">RAW</a></li>
23894               </ul>
23895             </td>
23896
23897           </tr>
23898           <tr class="entries_header">
23899             <th class="th_details" colspan="6">Details</th>
23900           </tr>
23901           <tr class="entry_cont">
23902             <td class="entry_details" colspan="6">
23903               <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/>
23904 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
23905             </td>
23906           </tr>
23907
23908
23909           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23910            <!-- end of entry -->
23911         
23912                 
23913           <tr class="entry" id="controls_android.statistics.lensShadingMapMode">
23914             <td class="entry_name
23915              " rowspan="3">
23916               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
23917             </td>
23918             <td class="entry_type">
23919                 <span class="entry_type_name entry_type_name_enum">byte</span>
23920
23921               <span class="entry_type_visibility"> [public]</span>
23922
23923
23924               <span class="entry_type_hwlevel">[full] </span>
23925
23926
23927
23928                 <ul class="entry_type_enum">
23929                   <li>
23930                     <span class="entry_type_enum_name">OFF (v3.2)</span>
23931                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
23932                   </li>
23933                   <li>
23934                     <span class="entry_type_enum_name">ON (v3.2)</span>
23935                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
23936                   </li>
23937                 </ul>
23938
23939             </td> <!-- entry_type -->
23940
23941             <td class="entry_description">
23942               <p>Whether the camera device will output the lens
23943 shading map in output result metadata.<wbr/></p>
23944             </td>
23945
23946             <td class="entry_units">
23947             </td>
23948
23949             <td class="entry_range">
23950               <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>
23951             </td>
23952
23953             <td class="entry_hal_version">
23954               <p>3.<wbr/>2</p>
23955             </td>
23956
23957             <td class="entry_tags">
23958               <ul class="entry_tags">
23959                   <li><a href="#tag_RAW">RAW</a></li>
23960               </ul>
23961             </td>
23962
23963           </tr>
23964           <tr class="entries_header">
23965             <th class="th_details" colspan="6">Details</th>
23966           </tr>
23967           <tr class="entry_cont">
23968             <td class="entry_details" colspan="6">
23969               <p>When set to ON,<wbr/>
23970 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
23971 the output result metadata.<wbr/></p>
23972 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
23973             </td>
23974           </tr>
23975
23976
23977           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
23978            <!-- end of entry -->
23979         
23980                 
23981           <tr class="entry" id="controls_android.statistics.oisDataMode">
23982             <td class="entry_name
23983              " rowspan="3">
23984               android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
23985             </td>
23986             <td class="entry_type">
23987                 <span class="entry_type_name entry_type_name_enum">byte</span>
23988
23989               <span class="entry_type_visibility"> [public]</span>
23990
23991
23992
23993
23994
23995                 <ul class="entry_type_enum">
23996                   <li>
23997                     <span class="entry_type_enum_name">OFF (v3.3)</span>
23998                     <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
23999                   </li>
24000                   <li>
24001                     <span class="entry_type_enum_name">ON (v3.3)</span>
24002                     <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
24003                   </li>
24004                 </ul>
24005
24006             </td> <!-- entry_type -->
24007
24008             <td class="entry_description">
24009               <p>Whether the camera device will output the OIS data in output
24010 result metadata.<wbr/></p>
24011             </td>
24012
24013             <td class="entry_units">
24014             </td>
24015
24016             <td class="entry_range">
24017               <p>android.<wbr/>Statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</p>
24018             </td>
24019
24020             <td class="entry_hal_version">
24021               <p>3.<wbr/>3</p>
24022             </td>
24023
24024             <td class="entry_tags">
24025             </td>
24026
24027           </tr>
24028           <tr class="entries_header">
24029             <th class="th_details" colspan="6">Details</th>
24030           </tr>
24031           <tr class="entry_cont">
24032             <td class="entry_details" colspan="6">
24033               <p>When set to ON,<wbr/>
24034 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>,<wbr/> android.<wbr/>statistics.<wbr/>ois<wbr/>Shift<wbr/>Pixel<wbr/>X,<wbr/>
24035 android.<wbr/>statistics.<wbr/>ois<wbr/>Shift<wbr/>Pixel<wbr/>Y will provide OIS data in the output result metadata.<wbr/></p>
24036             </td>
24037           </tr>
24038
24039
24040           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24041            <!-- end of entry -->
24042         
24043         
24044
24045       <!-- end of kind -->
24046       </tbody>
24047       <tr><td colspan="7" class="kind">static</td></tr>
24048
24049       <thead class="entries_header">
24050         <tr>
24051           <th class="th_name">Property Name</th>
24052           <th class="th_type">Type</th>
24053           <th class="th_description">Description</th>
24054           <th class="th_units">Units</th>
24055           <th class="th_range">Range</th>
24056           <th class="th_hal_version">Initial HIDL HAL version</th>
24057           <th class="th_tags">Tags</th>
24058         </tr>
24059       </thead>
24060
24061       <tbody>
24062
24063         
24064
24065         
24066
24067         
24068
24069         
24070                 
24071             
24072
24073                 
24074           <tr class="entry" id="static_android.statistics.info.availableFaceDetectModes">
24075             <td class="entry_name
24076              " rowspan="3">
24077               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes
24078             </td>
24079             <td class="entry_type">
24080                 <span class="entry_type_name">byte</span>
24081                 <span class="entry_type_container">x</span>
24082
24083                 <span class="entry_type_array">
24084                   n
24085                 </span>
24086               <span class="entry_type_visibility"> [public as enumList]</span>
24087
24088
24089               <span class="entry_type_hwlevel">[legacy] </span>
24090
24091
24092                 <div class="entry_type_notes">List of enums from android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</div>
24093
24094
24095             </td> <!-- entry_type -->
24096
24097             <td class="entry_description">
24098               <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
24099 supported by this camera device.<wbr/></p>
24100             </td>
24101
24102             <td class="entry_units">
24103             </td>
24104
24105             <td class="entry_range">
24106               <p>Any value listed in <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a></p>
24107             </td>
24108
24109             <td class="entry_hal_version">
24110               <p>3.<wbr/>2</p>
24111             </td>
24112
24113             <td class="entry_tags">
24114             </td>
24115
24116           </tr>
24117           <tr class="entries_header">
24118             <th class="th_details" colspan="6">Details</th>
24119           </tr>
24120           <tr class="entry_cont">
24121             <td class="entry_details" colspan="6">
24122               <p>OFF is always supported.<wbr/></p>
24123             </td>
24124           </tr>
24125
24126
24127           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24128            <!-- end of entry -->
24129         
24130                 
24131           <tr class="entry" id="static_android.statistics.info.histogramBucketCount">
24132             <td class="entry_name
24133              " rowspan="1">
24134               android.<wbr/>statistics.<wbr/>info.<wbr/>histogram<wbr/>Bucket<wbr/>Count
24135             </td>
24136             <td class="entry_type">
24137                 <span class="entry_type_name">int32</span>
24138
24139               <span class="entry_type_visibility"> [system]</span>
24140
24141
24142
24143
24144
24145
24146             </td> <!-- entry_type -->
24147
24148             <td class="entry_description">
24149               <p>Number of histogram buckets
24150 supported</p>
24151             </td>
24152
24153             <td class="entry_units">
24154             </td>
24155
24156             <td class="entry_range">
24157               <p>&gt;= 64</p>
24158             </td>
24159
24160             <td class="entry_hal_version">
24161               <p>3.<wbr/>2</p>
24162             </td>
24163
24164             <td class="entry_tags">
24165               <ul class="entry_tags">
24166                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24167               </ul>
24168             </td>
24169
24170           </tr>
24171
24172
24173           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24174            <!-- end of entry -->
24175         
24176                 
24177           <tr class="entry" id="static_android.statistics.info.maxFaceCount">
24178             <td class="entry_name
24179              " rowspan="1">
24180               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Face<wbr/>Count
24181             </td>
24182             <td class="entry_type">
24183                 <span class="entry_type_name">int32</span>
24184
24185               <span class="entry_type_visibility"> [public]</span>
24186
24187
24188               <span class="entry_type_hwlevel">[legacy] </span>
24189
24190
24191
24192
24193             </td> <!-- entry_type -->
24194
24195             <td class="entry_description">
24196               <p>The maximum number of simultaneously detectable
24197 faces.<wbr/></p>
24198             </td>
24199
24200             <td class="entry_units">
24201             </td>
24202
24203             <td class="entry_range">
24204               <p>0 for cameras without available face detection; otherwise:
24205 <code>&gt;=4</code> for LIMITED or FULL hwlevel devices or
24206 <code>&gt;0</code> for LEGACY devices.<wbr/></p>
24207             </td>
24208
24209             <td class="entry_hal_version">
24210               <p>3.<wbr/>2</p>
24211             </td>
24212
24213             <td class="entry_tags">
24214               <ul class="entry_tags">
24215                   <li><a href="#tag_BC">BC</a></li>
24216               </ul>
24217             </td>
24218
24219           </tr>
24220
24221
24222           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24223            <!-- end of entry -->
24224         
24225                 
24226           <tr class="entry" id="static_android.statistics.info.maxHistogramCount">
24227             <td class="entry_name
24228              " rowspan="1">
24229               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Histogram<wbr/>Count
24230             </td>
24231             <td class="entry_type">
24232                 <span class="entry_type_name">int32</span>
24233
24234               <span class="entry_type_visibility"> [system]</span>
24235
24236
24237
24238
24239
24240
24241             </td> <!-- entry_type -->
24242
24243             <td class="entry_description">
24244               <p>Maximum value possible for a histogram
24245 bucket</p>
24246             </td>
24247
24248             <td class="entry_units">
24249             </td>
24250
24251             <td class="entry_range">
24252             </td>
24253
24254             <td class="entry_hal_version">
24255               <p>3.<wbr/>2</p>
24256             </td>
24257
24258             <td class="entry_tags">
24259               <ul class="entry_tags">
24260                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24261               </ul>
24262             </td>
24263
24264           </tr>
24265
24266
24267           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24268            <!-- end of entry -->
24269         
24270                 
24271           <tr class="entry" id="static_android.statistics.info.maxSharpnessMapValue">
24272             <td class="entry_name
24273              " rowspan="1">
24274               android.<wbr/>statistics.<wbr/>info.<wbr/>max<wbr/>Sharpness<wbr/>Map<wbr/>Value
24275             </td>
24276             <td class="entry_type">
24277                 <span class="entry_type_name">int32</span>
24278
24279               <span class="entry_type_visibility"> [system]</span>
24280
24281
24282
24283
24284
24285
24286             </td> <!-- entry_type -->
24287
24288             <td class="entry_description">
24289               <p>Maximum value possible for a sharpness map
24290 region.<wbr/></p>
24291             </td>
24292
24293             <td class="entry_units">
24294             </td>
24295
24296             <td class="entry_range">
24297             </td>
24298
24299             <td class="entry_hal_version">
24300               <p>3.<wbr/>2</p>
24301             </td>
24302
24303             <td class="entry_tags">
24304               <ul class="entry_tags">
24305                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24306               </ul>
24307             </td>
24308
24309           </tr>
24310
24311
24312           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24313            <!-- end of entry -->
24314         
24315                 
24316           <tr class="entry" id="static_android.statistics.info.sharpnessMapSize">
24317             <td class="entry_name
24318              " rowspan="1">
24319               android.<wbr/>statistics.<wbr/>info.<wbr/>sharpness<wbr/>Map<wbr/>Size
24320             </td>
24321             <td class="entry_type">
24322                 <span class="entry_type_name">int32</span>
24323                 <span class="entry_type_container">x</span>
24324
24325                 <span class="entry_type_array">
24326                   2
24327                 </span>
24328               <span class="entry_type_visibility"> [system as size]</span>
24329
24330
24331
24332
24333                 <div class="entry_type_notes">width x height</div>
24334
24335
24336             </td> <!-- entry_type -->
24337
24338             <td class="entry_description">
24339               <p>Dimensions of the sharpness
24340 map</p>
24341             </td>
24342
24343             <td class="entry_units">
24344             </td>
24345
24346             <td class="entry_range">
24347               <p>Must be at least 32 x 32</p>
24348             </td>
24349
24350             <td class="entry_hal_version">
24351               <p>3.<wbr/>2</p>
24352             </td>
24353
24354             <td class="entry_tags">
24355               <ul class="entry_tags">
24356                   <li><a href="#tag_FUTURE">FUTURE</a></li>
24357               </ul>
24358             </td>
24359
24360           </tr>
24361
24362
24363           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24364            <!-- end of entry -->
24365         
24366                 
24367           <tr class="entry" id="static_android.statistics.info.availableHotPixelMapModes">
24368             <td class="entry_name
24369              " rowspan="3">
24370               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Hot<wbr/>Pixel<wbr/>Map<wbr/>Modes
24371             </td>
24372             <td class="entry_type">
24373                 <span class="entry_type_name">byte</span>
24374                 <span class="entry_type_container">x</span>
24375
24376                 <span class="entry_type_array">
24377                   n
24378                 </span>
24379               <span class="entry_type_visibility"> [public as boolean]</span>
24380
24381
24382
24383
24384                 <div class="entry_type_notes">list of enums</div>
24385
24386
24387             </td> <!-- entry_type -->
24388
24389             <td class="entry_description">
24390               <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
24391 supported by this camera device.<wbr/></p>
24392             </td>
24393
24394             <td class="entry_units">
24395             </td>
24396
24397             <td class="entry_range">
24398               <p>Any value listed in <a href="#controls_android.statistics.hotPixelMapMode">android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode</a></p>
24399             </td>
24400
24401             <td class="entry_hal_version">
24402               <p>3.<wbr/>2</p>
24403             </td>
24404
24405             <td class="entry_tags">
24406               <ul class="entry_tags">
24407                   <li><a href="#tag_V1">V1</a></li>
24408                   <li><a href="#tag_RAW">RAW</a></li>
24409               </ul>
24410             </td>
24411
24412           </tr>
24413           <tr class="entries_header">
24414             <th class="th_details" colspan="6">Details</th>
24415           </tr>
24416           <tr class="entry_cont">
24417             <td class="entry_details" colspan="6">
24418               <p>If no hotpixel map output is available for this camera device,<wbr/> this will contain only
24419 <code>false</code>.<wbr/></p>
24420 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
24421             </td>
24422           </tr>
24423
24424
24425           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24426            <!-- end of entry -->
24427         
24428                 
24429           <tr class="entry" id="static_android.statistics.info.availableLensShadingMapModes">
24430             <td class="entry_name
24431              " rowspan="3">
24432               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Lens<wbr/>Shading<wbr/>Map<wbr/>Modes
24433             </td>
24434             <td class="entry_type">
24435                 <span class="entry_type_name">byte</span>
24436                 <span class="entry_type_container">x</span>
24437
24438                 <span class="entry_type_array">
24439                   n
24440                 </span>
24441               <span class="entry_type_visibility"> [public as enumList]</span>
24442
24443
24444
24445
24446                 <div class="entry_type_notes">list of enums</div>
24447
24448
24449             </td> <!-- entry_type -->
24450
24451             <td class="entry_description">
24452               <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
24453 are supported by this camera device.<wbr/></p>
24454             </td>
24455
24456             <td class="entry_units">
24457             </td>
24458
24459             <td class="entry_range">
24460               <p>Any value listed in <a href="#controls_android.statistics.lensShadingMapMode">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode</a></p>
24461             </td>
24462
24463             <td class="entry_hal_version">
24464               <p>3.<wbr/>2</p>
24465             </td>
24466
24467             <td class="entry_tags">
24468             </td>
24469
24470           </tr>
24471           <tr class="entries_header">
24472             <th class="th_details" colspan="6">Details</th>
24473           </tr>
24474           <tr class="entry_cont">
24475             <td class="entry_details" colspan="6">
24476               <p>If no lens shading map output is available for this camera device,<wbr/> this key will
24477 contain only OFF.<wbr/></p>
24478 <p>ON is always supported on devices with the RAW capability.<wbr/>
24479 LEGACY mode devices will always only support OFF.<wbr/></p>
24480             </td>
24481           </tr>
24482
24483
24484           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24485            <!-- end of entry -->
24486         
24487                 
24488           <tr class="entry" id="static_android.statistics.info.availableOisDataModes">
24489             <td class="entry_name
24490              " rowspan="3">
24491               android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes
24492             </td>
24493             <td class="entry_type">
24494                 <span class="entry_type_name">byte</span>
24495                 <span class="entry_type_container">x</span>
24496
24497                 <span class="entry_type_array">
24498                   n
24499                 </span>
24500               <span class="entry_type_visibility"> [public as enumList]</span>
24501
24502
24503
24504
24505                 <div class="entry_type_notes">list of enums</div>
24506
24507
24508             </td> <!-- entry_type -->
24509
24510             <td class="entry_description">
24511               <p>List of OIS data output modes for <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a> that
24512 are supported by this camera device.<wbr/></p>
24513             </td>
24514
24515             <td class="entry_units">
24516             </td>
24517
24518             <td class="entry_range">
24519               <p>Any value listed in <a href="#controls_android.statistics.oisDataMode">android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode</a></p>
24520             </td>
24521
24522             <td class="entry_hal_version">
24523               <p>3.<wbr/>3</p>
24524             </td>
24525
24526             <td class="entry_tags">
24527             </td>
24528
24529           </tr>
24530           <tr class="entries_header">
24531             <th class="th_details" colspan="6">Details</th>
24532           </tr>
24533           <tr class="entry_cont">
24534             <td class="entry_details" colspan="6">
24535               <p>If no OIS data output is available for this camera device,<wbr/> this key will
24536 contain only OFF.<wbr/></p>
24537             </td>
24538           </tr>
24539
24540
24541           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24542            <!-- end of entry -->
24543         
24544         
24545         
24546
24547         
24548
24549       <!-- end of kind -->
24550       </tbody>
24551       <tr><td colspan="7" class="kind">dynamic</td></tr>
24552
24553       <thead class="entries_header">
24554         <tr>
24555           <th class="th_name">Property Name</th>
24556           <th class="th_type">Type</th>
24557           <th class="th_description">Description</th>
24558           <th class="th_units">Units</th>
24559           <th class="th_range">Range</th>
24560           <th class="th_hal_version">Initial HIDL HAL version</th>
24561           <th class="th_tags">Tags</th>
24562         </tr>
24563       </thead>
24564
24565       <tbody>
24566
24567         
24568
24569         
24570
24571         
24572
24573         
24574
24575                 
24576           <tr class="entry" id="dynamic_android.statistics.faceDetectMode">
24577             <td class="entry_name
24578              " rowspan="5">
24579               android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode
24580             </td>
24581             <td class="entry_type">
24582                 <span class="entry_type_name entry_type_name_enum">byte</span>
24583
24584               <span class="entry_type_visibility"> [public]</span>
24585
24586
24587               <span class="entry_type_hwlevel">[legacy] </span>
24588
24589
24590
24591                 <ul class="entry_type_enum">
24592                   <li>
24593                     <span class="entry_type_enum_name">OFF (v3.2)</span>
24594                     <span class="entry_type_enum_notes"><p>Do not include face detection statistics in capture
24595 results.<wbr/></p></span>
24596                   </li>
24597                   <li>
24598                     <span class="entry_type_enum_name">SIMPLE (v3.2)</span>
24599                     <span class="entry_type_enum_optional">[optional]</span>
24600                     <span class="entry_type_enum_notes"><p>Return face rectangle and confidence values only.<wbr/></p></span>
24601                   </li>
24602                   <li>
24603                     <span class="entry_type_enum_name">FULL (v3.2)</span>
24604                     <span class="entry_type_enum_optional">[optional]</span>
24605                     <span class="entry_type_enum_notes"><p>Return all face
24606 metadata.<wbr/></p>
24607 <p>In this mode,<wbr/> face rectangles,<wbr/> scores,<wbr/> landmarks,<wbr/> and face IDs are all valid.<wbr/></p></span>
24608                   </li>
24609                 </ul>
24610
24611             </td> <!-- entry_type -->
24612
24613             <td class="entry_description">
24614               <p>Operating mode for the face detector
24615 unit.<wbr/></p>
24616             </td>
24617
24618             <td class="entry_units">
24619             </td>
24620
24621             <td class="entry_range">
24622               <p><a href="#static_android.statistics.info.availableFaceDetectModes">android.<wbr/>statistics.<wbr/>info.<wbr/>available<wbr/>Face<wbr/>Detect<wbr/>Modes</a></p>
24623             </td>
24624
24625             <td class="entry_hal_version">
24626               <p>3.<wbr/>2</p>
24627             </td>
24628
24629             <td class="entry_tags">
24630               <ul class="entry_tags">
24631                   <li><a href="#tag_BC">BC</a></li>
24632               </ul>
24633             </td>
24634
24635           </tr>
24636           <tr class="entries_header">
24637             <th class="th_details" colspan="6">Details</th>
24638           </tr>
24639           <tr class="entry_cont">
24640             <td class="entry_details" colspan="6">
24641               <p>Whether face detection is enabled,<wbr/> and whether it
24642 should output just the basic fields or the full set of
24643 fields.<wbr/></p>
24644             </td>
24645           </tr>
24646
24647           <tr class="entries_header">
24648             <th class="th_details" colspan="6">HAL Implementation Details</th>
24649           </tr>
24650           <tr class="entry_cont">
24651             <td class="entry_details" colspan="6">
24652               <p>SIMPLE mode must fill in <a href="#dynamic_android.statistics.faceRectangles">android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles</a> and
24653 <a href="#dynamic_android.statistics.faceScores">android.<wbr/>statistics.<wbr/>face<wbr/>Scores</a>.<wbr/>
24654 FULL mode must also fill in <a href="#dynamic_android.statistics.faceIds">android.<wbr/>statistics.<wbr/>face<wbr/>Ids</a>,<wbr/> and
24655 <a href="#dynamic_android.statistics.faceLandmarks">android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks</a>.<wbr/></p>
24656             </td>
24657           </tr>
24658
24659           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24660            <!-- end of entry -->
24661         
24662                 
24663           <tr class="entry" id="dynamic_android.statistics.faceIds">
24664             <td class="entry_name
24665              " rowspan="3">
24666               android.<wbr/>statistics.<wbr/>face<wbr/>Ids
24667             </td>
24668             <td class="entry_type">
24669                 <span class="entry_type_name">int32</span>
24670                 <span class="entry_type_container">x</span>
24671
24672                 <span class="entry_type_array">
24673                   n
24674                 </span>
24675               <span class="entry_type_visibility"> [ndk_public]</span>
24676
24677
24678               <span class="entry_type_hwlevel">[legacy] </span>
24679
24680
24681
24682
24683             </td> <!-- entry_type -->
24684
24685             <td class="entry_description">
24686               <p>List of unique IDs for detected faces.<wbr/></p>
24687             </td>
24688
24689             <td class="entry_units">
24690             </td>
24691
24692             <td class="entry_range">
24693             </td>
24694
24695             <td class="entry_hal_version">
24696               <p>3.<wbr/>2</p>
24697             </td>
24698
24699             <td class="entry_tags">
24700               <ul class="entry_tags">
24701                   <li><a href="#tag_BC">BC</a></li>
24702               </ul>
24703             </td>
24704
24705           </tr>
24706           <tr class="entries_header">
24707             <th class="th_details" colspan="6">Details</th>
24708           </tr>
24709           <tr class="entry_cont">
24710             <td class="entry_details" colspan="6">
24711               <p>Each detected face is given a unique ID that is valid for as long as the face is visible
24712 to the camera device.<wbr/>  A face that leaves the field of view and later returns may be
24713 assigned a new ID.<wbr/></p>
24714 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
24715             </td>
24716           </tr>
24717
24718
24719           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24720            <!-- end of entry -->
24721         
24722                 
24723           <tr class="entry" id="dynamic_android.statistics.faceLandmarks">
24724             <td class="entry_name
24725              " rowspan="3">
24726               android.<wbr/>statistics.<wbr/>face<wbr/>Landmarks
24727             </td>
24728             <td class="entry_type">
24729                 <span class="entry_type_name">int32</span>
24730                 <span class="entry_type_container">x</span>
24731
24732                 <span class="entry_type_array">
24733                   n x 6
24734                 </span>
24735               <span class="entry_type_visibility"> [ndk_public]</span>
24736
24737
24738               <span class="entry_type_hwlevel">[legacy] </span>
24739
24740
24741                 <div class="entry_type_notes">(leftEyeX,<wbr/> leftEyeY,<wbr/> rightEyeX,<wbr/> rightEyeY,<wbr/> mouthX,<wbr/> mouthY)</div>
24742
24743
24744             </td> <!-- entry_type -->
24745
24746             <td class="entry_description">
24747               <p>List of landmarks for detected
24748 faces.<wbr/></p>
24749             </td>
24750
24751             <td class="entry_units">
24752             </td>
24753
24754             <td class="entry_range">
24755             </td>
24756
24757             <td class="entry_hal_version">
24758               <p>3.<wbr/>2</p>
24759             </td>
24760
24761             <td class="entry_tags">
24762               <ul class="entry_tags">
24763                   <li><a href="#tag_BC">BC</a></li>
24764               </ul>
24765             </td>
24766
24767           </tr>
24768           <tr class="entries_header">
24769             <th class="th_details" colspan="6">Details</th>
24770           </tr>
24771           <tr class="entry_cont">
24772             <td class="entry_details" colspan="6">
24773               <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
24774 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
24775 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> == FULL</p>
24776             </td>
24777           </tr>
24778
24779
24780           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24781            <!-- end of entry -->
24782         
24783                 
24784           <tr class="entry" id="dynamic_android.statistics.faceRectangles">
24785             <td class="entry_name
24786              " rowspan="3">
24787               android.<wbr/>statistics.<wbr/>face<wbr/>Rectangles
24788             </td>
24789             <td class="entry_type">
24790                 <span class="entry_type_name">int32</span>
24791                 <span class="entry_type_container">x</span>
24792
24793                 <span class="entry_type_array">
24794                   n x 4
24795                 </span>
24796               <span class="entry_type_visibility"> [ndk_public as rectangle]</span>
24797
24798
24799               <span class="entry_type_hwlevel">[legacy] </span>
24800
24801
24802                 <div class="entry_type_notes">(xmin,<wbr/> ymin,<wbr/> xmax,<wbr/> ymax).<wbr/> (0,<wbr/>0) is top-left of active pixel area</div>
24803
24804
24805             </td> <!-- entry_type -->
24806
24807             <td class="entry_description">
24808               <p>List of the bounding rectangles for detected
24809 faces.<wbr/></p>
24810             </td>
24811
24812             <td class="entry_units">
24813             </td>
24814
24815             <td class="entry_range">
24816             </td>
24817
24818             <td class="entry_hal_version">
24819               <p>3.<wbr/>2</p>
24820             </td>
24821
24822             <td class="entry_tags">
24823               <ul class="entry_tags">
24824                   <li><a href="#tag_BC">BC</a></li>
24825               </ul>
24826             </td>
24827
24828           </tr>
24829           <tr class="entries_header">
24830             <th class="th_details" colspan="6">Details</th>
24831           </tr>
24832           <tr class="entry_cont">
24833             <td class="entry_details" colspan="6">
24834               <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
24835 <code>(0,<wbr/> 0)</code> being the top-left pixel of the active array.<wbr/></p>
24836 <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF</p>
24837             </td>
24838           </tr>
24839
24840
24841           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24842            <!-- end of entry -->
24843         
24844                 
24845           <tr class="entry" id="dynamic_android.statistics.faceScores">
24846             <td class="entry_name
24847              " rowspan="5">
24848               android.<wbr/>statistics.<wbr/>face<wbr/>Scores
24849             </td>
24850             <td class="entry_type">
24851                 <span class="entry_type_name">byte</span>
24852                 <span class="entry_type_container">x</span>
24853
24854                 <span class="entry_type_array">
24855                   n
24856                 </span>
24857               <span class="entry_type_visibility"> [ndk_public]</span>
24858
24859
24860               <span class="entry_type_hwlevel">[legacy] </span>
24861
24862
24863
24864
24865             </td> <!-- entry_type -->
24866
24867             <td class="entry_description">
24868               <p>List of the face confidence scores for
24869 detected faces</p>
24870             </td>
24871
24872             <td class="entry_units">
24873             </td>
24874
24875             <td class="entry_range">
24876               <p>1-100</p>
24877             </td>
24878
24879             <td class="entry_hal_version">
24880               <p>3.<wbr/>2</p>
24881             </td>
24882
24883             <td class="entry_tags">
24884               <ul class="entry_tags">
24885                   <li><a href="#tag_BC">BC</a></li>
24886               </ul>
24887             </td>
24888
24889           </tr>
24890           <tr class="entries_header">
24891             <th class="th_details" colspan="6">Details</th>
24892           </tr>
24893           <tr class="entry_cont">
24894             <td class="entry_details" colspan="6">
24895               <p>Only available if <a href="#controls_android.statistics.faceDetectMode">android.<wbr/>statistics.<wbr/>face<wbr/>Detect<wbr/>Mode</a> != OFF.<wbr/></p>
24896             </td>
24897           </tr>
24898
24899           <tr class="entries_header">
24900             <th class="th_details" colspan="6">HAL Implementation Details</th>
24901           </tr>
24902           <tr class="entry_cont">
24903             <td class="entry_details" colspan="6">
24904               <p>The value should be meaningful (for example,<wbr/> setting 100 at
24905 all times is illegal).<wbr/></p>
24906             </td>
24907           </tr>
24908
24909           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24910            <!-- end of entry -->
24911         
24912                 
24913           <tr class="entry" id="dynamic_android.statistics.faces">
24914             <td class="entry_name
24915              " rowspan="3">
24916               android.<wbr/>statistics.<wbr/>faces
24917             </td>
24918             <td class="entry_type">
24919                 <span class="entry_type_name">int32</span>
24920                 <span class="entry_type_container">x</span>
24921
24922                 <span class="entry_type_array">
24923                   n
24924                 </span>
24925               <span class="entry_type_visibility"> [java_public as face]</span>
24926
24927               <span class="entry_type_synthetic">[synthetic] </span>
24928
24929               <span class="entry_type_hwlevel">[legacy] </span>
24930
24931
24932
24933
24934             </td> <!-- entry_type -->
24935
24936             <td class="entry_description">
24937               <p>List of the faces detected through camera face detection
24938 in this capture.<wbr/></p>
24939             </td>
24940
24941             <td class="entry_units">
24942             </td>
24943
24944             <td class="entry_range">
24945             </td>
24946
24947             <td class="entry_hal_version">
24948               <p>3.<wbr/>2</p>
24949             </td>
24950
24951             <td class="entry_tags">
24952             </td>
24953
24954           </tr>
24955           <tr class="entries_header">
24956             <th class="th_details" colspan="6">Details</th>
24957           </tr>
24958           <tr class="entry_cont">
24959             <td class="entry_details" colspan="6">
24960               <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>
24961             </td>
24962           </tr>
24963
24964
24965           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
24966            <!-- end of entry -->
24967         
24968                 
24969           <tr class="entry" id="dynamic_android.statistics.histogram">
24970             <td class="entry_name
24971              " rowspan="3">
24972               android.<wbr/>statistics.<wbr/>histogram
24973             </td>
24974             <td class="entry_type">
24975                 <span class="entry_type_name">int32</span>
24976                 <span class="entry_type_container">x</span>
24977
24978                 <span class="entry_type_array">
24979                   n x 3
24980                 </span>
24981               <span class="entry_type_visibility"> [system]</span>
24982
24983
24984
24985
24986                 <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>
24987
24988
24989             </td> <!-- entry_type -->
24990
24991             <td class="entry_description">
24992               <p>A 3-channel histogram based on the raw
24993 sensor data</p>
24994             </td>
24995
24996             <td class="entry_units">
24997             </td>
24998
24999             <td class="entry_range">
25000             </td>
25001
25002             <td class="entry_hal_version">
25003               <p>3.<wbr/>2</p>
25004             </td>
25005
25006             <td class="entry_tags">
25007               <ul class="entry_tags">
25008                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25009               </ul>
25010             </td>
25011
25012           </tr>
25013           <tr class="entries_header">
25014             <th class="th_details" colspan="6">Details</th>
25015           </tr>
25016           <tr class="entry_cont">
25017             <td class="entry_details" colspan="6">
25018               <p>The k'th bucket (0-based) covers the input range
25019 (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/>
25020 (k + 1) * w /<wbr/> N ).<wbr/> If only a monochrome sharpness map is
25021 supported,<wbr/> all channels should have the same data</p>
25022             </td>
25023           </tr>
25024
25025
25026           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25027            <!-- end of entry -->
25028         
25029                 
25030           <tr class="entry" id="dynamic_android.statistics.histogramMode">
25031             <td class="entry_name
25032              " rowspan="1">
25033               android.<wbr/>statistics.<wbr/>histogram<wbr/>Mode
25034             </td>
25035             <td class="entry_type">
25036                 <span class="entry_type_name entry_type_name_enum">byte</span>
25037
25038               <span class="entry_type_visibility"> [system as boolean]</span>
25039
25040
25041
25042
25043
25044                 <ul class="entry_type_enum">
25045                   <li>
25046                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25047                   </li>
25048                   <li>
25049                     <span class="entry_type_enum_name">ON (v3.2)</span>
25050                   </li>
25051                 </ul>
25052
25053             </td> <!-- entry_type -->
25054
25055             <td class="entry_description">
25056               <p>Operating mode for histogram
25057 generation</p>
25058             </td>
25059
25060             <td class="entry_units">
25061             </td>
25062
25063             <td class="entry_range">
25064             </td>
25065
25066             <td class="entry_hal_version">
25067               <p>3.<wbr/>2</p>
25068             </td>
25069
25070             <td class="entry_tags">
25071               <ul class="entry_tags">
25072                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25073               </ul>
25074             </td>
25075
25076           </tr>
25077
25078
25079           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25080            <!-- end of entry -->
25081         
25082                 
25083           <tr class="entry" id="dynamic_android.statistics.sharpnessMap">
25084             <td class="entry_name
25085              " rowspan="3">
25086               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map
25087             </td>
25088             <td class="entry_type">
25089                 <span class="entry_type_name">int32</span>
25090                 <span class="entry_type_container">x</span>
25091
25092                 <span class="entry_type_array">
25093                   n x m x 3
25094                 </span>
25095               <span class="entry_type_visibility"> [system]</span>
25096
25097
25098
25099
25100                 <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>
25101
25102
25103             </td> <!-- entry_type -->
25104
25105             <td class="entry_description">
25106               <p>A 3-channel sharpness map,<wbr/> based on the raw
25107 sensor data</p>
25108             </td>
25109
25110             <td class="entry_units">
25111             </td>
25112
25113             <td class="entry_range">
25114             </td>
25115
25116             <td class="entry_hal_version">
25117               <p>3.<wbr/>2</p>
25118             </td>
25119
25120             <td class="entry_tags">
25121               <ul class="entry_tags">
25122                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25123               </ul>
25124             </td>
25125
25126           </tr>
25127           <tr class="entries_header">
25128             <th class="th_details" colspan="6">Details</th>
25129           </tr>
25130           <tr class="entry_cont">
25131             <td class="entry_details" colspan="6">
25132               <p>If only a monochrome sharpness map is supported,<wbr/>
25133 all channels should have the same data</p>
25134             </td>
25135           </tr>
25136
25137
25138           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25139            <!-- end of entry -->
25140         
25141                 
25142           <tr class="entry" id="dynamic_android.statistics.sharpnessMapMode">
25143             <td class="entry_name
25144              " rowspan="1">
25145               android.<wbr/>statistics.<wbr/>sharpness<wbr/>Map<wbr/>Mode
25146             </td>
25147             <td class="entry_type">
25148                 <span class="entry_type_name entry_type_name_enum">byte</span>
25149
25150               <span class="entry_type_visibility"> [system as boolean]</span>
25151
25152
25153
25154
25155
25156                 <ul class="entry_type_enum">
25157                   <li>
25158                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25159                   </li>
25160                   <li>
25161                     <span class="entry_type_enum_name">ON (v3.2)</span>
25162                   </li>
25163                 </ul>
25164
25165             </td> <!-- entry_type -->
25166
25167             <td class="entry_description">
25168               <p>Operating mode for sharpness map
25169 generation</p>
25170             </td>
25171
25172             <td class="entry_units">
25173             </td>
25174
25175             <td class="entry_range">
25176             </td>
25177
25178             <td class="entry_hal_version">
25179               <p>3.<wbr/>2</p>
25180             </td>
25181
25182             <td class="entry_tags">
25183               <ul class="entry_tags">
25184                   <li><a href="#tag_FUTURE">FUTURE</a></li>
25185               </ul>
25186             </td>
25187
25188           </tr>
25189
25190
25191           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25192            <!-- end of entry -->
25193         
25194                 
25195           <tr class="entry" id="dynamic_android.statistics.lensShadingCorrectionMap">
25196             <td class="entry_name
25197              " rowspan="3">
25198               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Correction<wbr/>Map
25199             </td>
25200             <td class="entry_type">
25201                 <span class="entry_type_name">byte</span>
25202
25203               <span class="entry_type_visibility"> [java_public as lensShadingMap]</span>
25204
25205
25206               <span class="entry_type_hwlevel">[full] </span>
25207
25208
25209
25210
25211             </td> <!-- entry_type -->
25212
25213             <td class="entry_description">
25214               <p>The shading map is a low-resolution floating-point map
25215 that lists the coefficients used to correct for vignetting,<wbr/> for each
25216 Bayer color channel.<wbr/></p>
25217             </td>
25218
25219             <td class="entry_units">
25220             </td>
25221
25222             <td class="entry_range">
25223               <p>Each gain factor is &gt;= 1</p>
25224             </td>
25225
25226             <td class="entry_hal_version">
25227               <p>3.<wbr/>2</p>
25228             </td>
25229
25230             <td class="entry_tags">
25231             </td>
25232
25233           </tr>
25234           <tr class="entries_header">
25235             <th class="th_details" colspan="6">Details</th>
25236           </tr>
25237           <tr class="entry_cont">
25238             <td class="entry_details" colspan="6">
25239               <p>The map provided here is the same map that is used by the camera device to
25240 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25241 <p>When there is no lens shading correction applied to RAW
25242 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25243 false),<wbr/> this map is the complete lens shading correction
25244 map; when there is some lens shading correction applied to
25245 the RAW output image (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a><code>==</code> true),<wbr/> this map reports the remaining lens shading
25246 correction map that needs to be applied to get shading
25247 corrected images that match the camera device's output for
25248 non-RAW formats.<wbr/></p>
25249 <p>For a complete shading correction map,<wbr/> the least shaded
25250 section of the image will have a gain factor of 1; all
25251 other sections will have gains above 1.<wbr/></p>
25252 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25253 will take into account the colorCorrection settings.<wbr/></p>
25254 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25255 affected by the crop region specified in the request.<wbr/> Each shading map
25256 entry is the value of the shading compensation map over a specific
25257 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
25258 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25259 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25260 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25261 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25262 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25263 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25264 The shading map is stored in a fully interleaved format.<wbr/></p>
25265 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25266 and will be smaller than 64x64.<wbr/></p>
25267 <p>As an example,<wbr/> given a very small map defined as:</p>
25268 <pre><code>width,<wbr/>height = [ 4,<wbr/> 3 ]
25269 values =
25270 [ 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/>
25271     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/>
25272   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/>
25273     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/>
25274   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/>
25275     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 ]
25276 </code></pre>
25277 <p>The low-resolution scaling map images for each channel are
25278 (displayed using nearest-neighbor interpolation):</p>
25279 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25280 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25281 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25282 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25283 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25284 image of a gray wall (using bicubic interpolation for visual quality) as captured by the sensor gives:</p>
25285 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25286             </td>
25287           </tr>
25288
25289
25290           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25291            <!-- end of entry -->
25292         
25293                 
25294           <tr class="entry" id="dynamic_android.statistics.lensShadingMap">
25295             <td class="entry_name
25296              " rowspan="5">
25297               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map
25298             </td>
25299             <td class="entry_type">
25300                 <span class="entry_type_name">float</span>
25301                 <span class="entry_type_container">x</span>
25302
25303                 <span class="entry_type_array">
25304                   4 x n x m
25305                 </span>
25306               <span class="entry_type_visibility"> [ndk_public]</span>
25307
25308
25309               <span class="entry_type_hwlevel">[full] </span>
25310
25311
25312                 <div class="entry_type_notes">2D array of float gain factors per channel to correct lens shading</div>
25313
25314
25315             </td> <!-- entry_type -->
25316
25317             <td class="entry_description">
25318               <p>The shading map is a low-resolution floating-point map
25319 that lists the coefficients used to correct for vignetting and color shading,<wbr/>
25320 for each Bayer color channel of RAW image data.<wbr/></p>
25321             </td>
25322
25323             <td class="entry_units">
25324             </td>
25325
25326             <td class="entry_range">
25327               <p>Each gain factor is &gt;= 1</p>
25328             </td>
25329
25330             <td class="entry_hal_version">
25331               <p>3.<wbr/>2</p>
25332             </td>
25333
25334             <td class="entry_tags">
25335             </td>
25336
25337           </tr>
25338           <tr class="entries_header">
25339             <th class="th_details" colspan="6">Details</th>
25340           </tr>
25341           <tr class="entry_cont">
25342             <td class="entry_details" colspan="6">
25343               <p>The map provided here is the same map that is used by the camera device to
25344 correct both color shading and vignetting for output non-RAW images.<wbr/></p>
25345 <p>When there is no lens shading correction applied to RAW
25346 output images (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a> <code>==</code>
25347 false),<wbr/> this map is the complete lens shading correction
25348 map; when there is some lens shading correction applied to
25349 the RAW output image (<a href="#static_android.sensor.info.lensShadingApplied">android.<wbr/>sensor.<wbr/>info.<wbr/>lens<wbr/>Shading<wbr/>Applied</a><code>==</code> true),<wbr/> this map reports the remaining lens shading
25350 correction map that needs to be applied to get shading
25351 corrected images that match the camera device's output for
25352 non-RAW formats.<wbr/></p>
25353 <p>For a complete shading correction map,<wbr/> the least shaded
25354 section of the image will have a gain factor of 1; all
25355 other sections will have gains above 1.<wbr/></p>
25356 <p>When <a href="#controls_android.colorCorrection.mode">android.<wbr/>color<wbr/>Correction.<wbr/>mode</a> = TRANSFORM_<wbr/>MATRIX,<wbr/> the map
25357 will take into account the colorCorrection settings.<wbr/></p>
25358 <p>The shading map is for the entire active pixel array,<wbr/> and is not
25359 affected by the crop region specified in the request.<wbr/> Each shading map
25360 entry is the value of the shading compensation map over a specific
25361 pixel on the sensor.<wbr/>  Specifically,<wbr/> with a (N x M) resolution shading
25362 map,<wbr/> and an active pixel array size (W x H),<wbr/> shading map entry
25363 (x,<wbr/>y) Ïµ (0 ...<wbr/> N-1,<wbr/> 0 ...<wbr/> M-1) is the value of the shading map at
25364 pixel ( ((W-1)/<wbr/>(N-1)) * x,<wbr/> ((H-1)/<wbr/>(M-1)) * y) for the four color channels.<wbr/>
25365 The map is assumed to be bilinearly interpolated between the sample points.<wbr/></p>
25366 <p>The channel order is [R,<wbr/> Geven,<wbr/> Godd,<wbr/> B],<wbr/> where Geven is the green
25367 channel for the even rows of a Bayer pattern,<wbr/> and Godd is the odd rows.<wbr/>
25368 The shading map is stored in a fully interleaved format,<wbr/> and its size
25369 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>
25370 <p>The shading map will generally have on the order of 30-40 rows and columns,<wbr/>
25371 and will be smaller than 64x64.<wbr/></p>
25372 <p>As an example,<wbr/> given a very small map defined as:</p>
25373 <pre><code><a href="#static_android.lens.info.shadingMapSize">android.<wbr/>lens.<wbr/>info.<wbr/>shading<wbr/>Map<wbr/>Size</a> = [ 4,<wbr/> 3 ]
25374 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> =
25375 [ 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/>
25376     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/>
25377   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/>
25378     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/>
25379   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/>
25380     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 ]
25381 </code></pre>
25382 <p>The low-resolution scaling map images for each channel are
25383 (displayed using nearest-neighbor interpolation):</p>
25384 <p><img alt="Red lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/red_shading.png"/>
25385 <img alt="Green (even rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_e_shading.png"/>
25386 <img alt="Green (odd rows) lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/green_o_shading.png"/>
25387 <img alt="Blue lens shading map" src="images/camera2/metadata/android.statistics.lensShadingMap/blue_shading.png"/></p>
25388 <p>As a visualization only,<wbr/> inverting the full-color map to recover an
25389 image of a gray wall (using bicubic interpolation for visual quality)
25390 as captured by the sensor gives:</p>
25391 <p><img alt="Image of a uniform white wall (inverse shading map)" src="images/camera2/metadata/android.statistics.lensShadingMap/inv_shading.png"/></p>
25392 <p>Note that the RAW image data might be subject to lens shading
25393 correction not reported on this map.<wbr/> Query
25394 <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
25395 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>
25396 is TRUE,<wbr/> the RAW image data is subject to partial or full lens shading
25397 correction.<wbr/> In the case full lens shading correction is applied to RAW
25398 images,<wbr/> the gain factor map reported in this key will contain all 1.<wbr/>0 gains.<wbr/>
25399 In other words,<wbr/> the map reported in this key is the remaining lens shading
25400 that needs to be applied on the RAW image to get images without lens shading
25401 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
25402 formats.<wbr/></p>
25403             </td>
25404           </tr>
25405
25406           <tr class="entries_header">
25407             <th class="th_details" colspan="6">HAL Implementation Details</th>
25408           </tr>
25409           <tr class="entry_cont">
25410             <td class="entry_details" colspan="6">
25411               <p>The lens shading map calculation may depend on exposure and white balance statistics.<wbr/>
25412 When AE and AWB are in AUTO modes
25413 (<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
25414 may have all the information it need to generate most accurate lens shading map.<wbr/> When
25415 AE or AWB are in manual mode
25416 (<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
25417 may be adversely impacted by manual exposure or white balance parameters.<wbr/> To avoid
25418 generating unreliable shading map data,<wbr/> the HAL may choose to lock the shading map with
25419 the latest known good map generated when the AE and AWB are in AUTO modes.<wbr/></p>
25420             </td>
25421           </tr>
25422
25423           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25424            <!-- end of entry -->
25425         
25426                 
25427           <tr class="entry" id="dynamic_android.statistics.predictedColorGains">
25428             <td class="entry_name
25429                 entry_name_deprecated
25430              " rowspan="3">
25431               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Gains
25432             </td>
25433             <td class="entry_type">
25434                 <span class="entry_type_name">float</span>
25435                 <span class="entry_type_container">x</span>
25436
25437                 <span class="entry_type_array">
25438                   4
25439                 </span>
25440               <span class="entry_type_visibility"> [hidden]</span>
25441
25442
25443
25444               <span class="entry_type_deprecated">[deprecated] </span>
25445
25446                 <div class="entry_type_notes">A 1D array of floats for 4 color channel gains</div>
25447
25448
25449             </td> <!-- entry_type -->
25450
25451             <td class="entry_description">
25452               <p>The best-fit color channel gains calculated
25453 by the camera device's statistics units for the current output frame.<wbr/></p>
25454             </td>
25455
25456             <td class="entry_units">
25457             </td>
25458
25459             <td class="entry_range">
25460               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25461             </td>
25462
25463             <td class="entry_hal_version">
25464               <p>3.<wbr/>2</p>
25465             </td>
25466
25467             <td class="entry_tags">
25468             </td>
25469
25470           </tr>
25471           <tr class="entries_header">
25472             <th class="th_details" colspan="6">Details</th>
25473           </tr>
25474           <tr class="entry_cont">
25475             <td class="entry_details" colspan="6">
25476               <p>This may be different than the gains used for this frame,<wbr/>
25477 since statistics processing on data from a new frame
25478 typically completes after the transform has already been
25479 applied to that frame.<wbr/></p>
25480 <p>The 4 channel gains are defined in Bayer domain,<wbr/>
25481 see <a href="#controls_android.colorCorrection.gains">android.<wbr/>color<wbr/>Correction.<wbr/>gains</a> for details.<wbr/></p>
25482 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25483 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25484             </td>
25485           </tr>
25486
25487
25488           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25489            <!-- end of entry -->
25490         
25491                 
25492           <tr class="entry" id="dynamic_android.statistics.predictedColorTransform">
25493             <td class="entry_name
25494                 entry_name_deprecated
25495              " rowspan="3">
25496               android.<wbr/>statistics.<wbr/>predicted<wbr/>Color<wbr/>Transform
25497             </td>
25498             <td class="entry_type">
25499                 <span class="entry_type_name">rational</span>
25500                 <span class="entry_type_container">x</span>
25501
25502                 <span class="entry_type_array">
25503                   3 x 3
25504                 </span>
25505               <span class="entry_type_visibility"> [hidden]</span>
25506
25507
25508
25509               <span class="entry_type_deprecated">[deprecated] </span>
25510
25511                 <div class="entry_type_notes">3x3 rational matrix in row-major order</div>
25512
25513
25514             </td> <!-- entry_type -->
25515
25516             <td class="entry_description">
25517               <p>The best-fit color transform matrix estimate
25518 calculated by the camera device's statistics units for the current
25519 output frame.<wbr/></p>
25520             </td>
25521
25522             <td class="entry_units">
25523             </td>
25524
25525             <td class="entry_range">
25526               <p><span class="entry_range_deprecated">Deprecated</span>. Do not use.</p>
25527             </td>
25528
25529             <td class="entry_hal_version">
25530               <p>3.<wbr/>2</p>
25531             </td>
25532
25533             <td class="entry_tags">
25534             </td>
25535
25536           </tr>
25537           <tr class="entries_header">
25538             <th class="th_details" colspan="6">Details</th>
25539           </tr>
25540           <tr class="entry_cont">
25541             <td class="entry_details" colspan="6">
25542               <p>The camera device will provide the estimate from its
25543 statistics unit on the white balance transforms to use
25544 for the next frame.<wbr/> These are the values the camera device believes
25545 are the best fit for the current output frame.<wbr/> This may
25546 be different than the transform used for this frame,<wbr/> since
25547 statistics processing on data from a new frame typically
25548 completes after the transform has already been applied to
25549 that frame.<wbr/></p>
25550 <p>These estimates must be provided for all frames,<wbr/> even if
25551 capture settings and color transforms are set by the application.<wbr/></p>
25552 <p>This value should always be calculated by the auto-white balance (AWB) block,<wbr/>
25553 regardless of the android.<wbr/>control.<wbr/>* current values.<wbr/></p>
25554             </td>
25555           </tr>
25556
25557
25558           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25559            <!-- end of entry -->
25560         
25561                 
25562           <tr class="entry" id="dynamic_android.statistics.sceneFlicker">
25563             <td class="entry_name
25564              " rowspan="3">
25565               android.<wbr/>statistics.<wbr/>scene<wbr/>Flicker
25566             </td>
25567             <td class="entry_type">
25568                 <span class="entry_type_name entry_type_name_enum">byte</span>
25569
25570               <span class="entry_type_visibility"> [public]</span>
25571
25572
25573               <span class="entry_type_hwlevel">[full] </span>
25574
25575
25576
25577                 <ul class="entry_type_enum">
25578                   <li>
25579                     <span class="entry_type_enum_name">NONE (v3.2)</span>
25580                     <span class="entry_type_enum_notes"><p>The camera device does not detect any flickering illumination
25581 in the current scene.<wbr/></p></span>
25582                   </li>
25583                   <li>
25584                     <span class="entry_type_enum_name">50HZ (v3.2)</span>
25585                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 50Hz
25586 in the current scene.<wbr/></p></span>
25587                   </li>
25588                   <li>
25589                     <span class="entry_type_enum_name">60HZ (v3.2)</span>
25590                     <span class="entry_type_enum_notes"><p>The camera device detects illumination flickering at 60Hz
25591 in the current scene.<wbr/></p></span>
25592                   </li>
25593                 </ul>
25594
25595             </td> <!-- entry_type -->
25596
25597             <td class="entry_description">
25598               <p>The camera device estimated scene illumination lighting
25599 frequency.<wbr/></p>
25600             </td>
25601
25602             <td class="entry_units">
25603             </td>
25604
25605             <td class="entry_range">
25606             </td>
25607
25608             <td class="entry_hal_version">
25609               <p>3.<wbr/>2</p>
25610             </td>
25611
25612             <td class="entry_tags">
25613             </td>
25614
25615           </tr>
25616           <tr class="entries_header">
25617             <th class="th_details" colspan="6">Details</th>
25618           </tr>
25619           <tr class="entry_cont">
25620             <td class="entry_details" colspan="6">
25621               <p>Many light sources,<wbr/> such as most fluorescent lights,<wbr/> flicker at a rate
25622 that depends on the local utility power standards.<wbr/> This flicker must be
25623 accounted for by auto-exposure routines to avoid artifacts in captured images.<wbr/>
25624 The camera device uses this entry to tell the application what the scene
25625 illuminant frequency is.<wbr/></p>
25626 <p>When manual exposure control is enabled
25627 (<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> ==
25628 OFF</code>),<wbr/> the <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> doesn't perform
25629 antibanding,<wbr/> and the application can ensure it selects
25630 exposure times that do not cause banding issues by looking
25631 into this metadata field.<wbr/> See
25632 <a href="#controls_android.control.aeAntibandingMode">android.<wbr/>control.<wbr/>ae<wbr/>Antibanding<wbr/>Mode</a> for more details.<wbr/></p>
25633 <p>Reports NONE if there doesn't appear to be flickering illumination.<wbr/></p>
25634             </td>
25635           </tr>
25636
25637
25638           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25639            <!-- end of entry -->
25640         
25641                 
25642           <tr class="entry" id="dynamic_android.statistics.hotPixelMapMode">
25643             <td class="entry_name
25644              " rowspan="3">
25645               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map<wbr/>Mode
25646             </td>
25647             <td class="entry_type">
25648                 <span class="entry_type_name entry_type_name_enum">byte</span>
25649
25650               <span class="entry_type_visibility"> [public as boolean]</span>
25651
25652
25653
25654
25655
25656                 <ul class="entry_type_enum">
25657                   <li>
25658                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25659                     <span class="entry_type_enum_notes"><p>Hot pixel map production is disabled.<wbr/></p></span>
25660                   </li>
25661                   <li>
25662                     <span class="entry_type_enum_name">ON (v3.2)</span>
25663                     <span class="entry_type_enum_notes"><p>Hot pixel map production is enabled.<wbr/></p></span>
25664                   </li>
25665                 </ul>
25666
25667             </td> <!-- entry_type -->
25668
25669             <td class="entry_description">
25670               <p>Operating mode for hot pixel map generation.<wbr/></p>
25671             </td>
25672
25673             <td class="entry_units">
25674             </td>
25675
25676             <td class="entry_range">
25677               <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>
25678             </td>
25679
25680             <td class="entry_hal_version">
25681               <p>3.<wbr/>2</p>
25682             </td>
25683
25684             <td class="entry_tags">
25685               <ul class="entry_tags">
25686                   <li><a href="#tag_V1">V1</a></li>
25687                   <li><a href="#tag_RAW">RAW</a></li>
25688               </ul>
25689             </td>
25690
25691           </tr>
25692           <tr class="entries_header">
25693             <th class="th_details" colspan="6">Details</th>
25694           </tr>
25695           <tr class="entry_cont">
25696             <td class="entry_details" colspan="6">
25697               <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/>
25698 If set to <code>false</code>,<wbr/> no hot pixel map will be returned.<wbr/></p>
25699             </td>
25700           </tr>
25701
25702
25703           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25704            <!-- end of entry -->
25705         
25706                 
25707           <tr class="entry" id="dynamic_android.statistics.hotPixelMap">
25708             <td class="entry_name
25709              " rowspan="5">
25710               android.<wbr/>statistics.<wbr/>hot<wbr/>Pixel<wbr/>Map
25711             </td>
25712             <td class="entry_type">
25713                 <span class="entry_type_name">int32</span>
25714                 <span class="entry_type_container">x</span>
25715
25716                 <span class="entry_type_array">
25717                   2 x n
25718                 </span>
25719               <span class="entry_type_visibility"> [public as point]</span>
25720
25721
25722
25723
25724                 <div class="entry_type_notes">list of coordinates based on android.<wbr/>sensor.<wbr/>pixel<wbr/>Array<wbr/>Size</div>
25725
25726
25727             </td> <!-- entry_type -->
25728
25729             <td class="entry_description">
25730               <p>List of <code>(x,<wbr/> y)</code> coordinates of hot/<wbr/>defective pixels on the sensor.<wbr/></p>
25731             </td>
25732
25733             <td class="entry_units">
25734             </td>
25735
25736             <td class="entry_range">
25737               <p>n &lt;= number of pixels on the sensor.<wbr/>
25738 The <code>(x,<wbr/> y)</code> coordinates must be bounded by
25739 <a href="#static_android.sensor.info.pixelArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>pixel<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25740             </td>
25741
25742             <td class="entry_hal_version">
25743               <p>3.<wbr/>2</p>
25744             </td>
25745
25746             <td class="entry_tags">
25747               <ul class="entry_tags">
25748                   <li><a href="#tag_V1">V1</a></li>
25749                   <li><a href="#tag_RAW">RAW</a></li>
25750               </ul>
25751             </td>
25752
25753           </tr>
25754           <tr class="entries_header">
25755             <th class="th_details" colspan="6">Details</th>
25756           </tr>
25757           <tr class="entry_cont">
25758             <td class="entry_details" colspan="6">
25759               <p>A coordinate <code>(x,<wbr/> y)</code> must lie between <code>(0,<wbr/> 0)</code>,<wbr/> and
25760 <code>(width - 1,<wbr/> height - 1)</code> (inclusive),<wbr/> which are the top-left and
25761 bottom-right of the pixel array,<wbr/> respectively.<wbr/> The width and
25762 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/>
25763 This may include hot pixels that lie outside of the active array
25764 bounds given by <a href="#static_android.sensor.info.activeArraySize">android.<wbr/>sensor.<wbr/>info.<wbr/>active<wbr/>Array<wbr/>Size</a>.<wbr/></p>
25765             </td>
25766           </tr>
25767
25768           <tr class="entries_header">
25769             <th class="th_details" colspan="6">HAL Implementation Details</th>
25770           </tr>
25771           <tr class="entry_cont">
25772             <td class="entry_details" colspan="6">
25773               <p>A hotpixel map contains the coordinates of pixels on the camera
25774 sensor that do report valid values (usually due to defects in
25775 the camera sensor).<wbr/> This includes pixels that are stuck at certain
25776 values,<wbr/> or have a response that does not accuractly encode the
25777 incoming light from the scene.<wbr/></p>
25778 <p>To avoid performance issues,<wbr/> there should be significantly fewer hot
25779 pixels than actual pixels on the camera sensor.<wbr/></p>
25780             </td>
25781           </tr>
25782
25783           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25784            <!-- end of entry -->
25785         
25786                 
25787           <tr class="entry" id="dynamic_android.statistics.lensShadingMapMode">
25788             <td class="entry_name
25789              " rowspan="3">
25790               android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map<wbr/>Mode
25791             </td>
25792             <td class="entry_type">
25793                 <span class="entry_type_name entry_type_name_enum">byte</span>
25794
25795               <span class="entry_type_visibility"> [public]</span>
25796
25797
25798               <span class="entry_type_hwlevel">[full] </span>
25799
25800
25801
25802                 <ul class="entry_type_enum">
25803                   <li>
25804                     <span class="entry_type_enum_name">OFF (v3.2)</span>
25805                     <span class="entry_type_enum_notes"><p>Do not include a lens shading map in the capture result.<wbr/></p></span>
25806                   </li>
25807                   <li>
25808                     <span class="entry_type_enum_name">ON (v3.2)</span>
25809                     <span class="entry_type_enum_notes"><p>Include a lens shading map in the capture result.<wbr/></p></span>
25810                   </li>
25811                 </ul>
25812
25813             </td> <!-- entry_type -->
25814
25815             <td class="entry_description">
25816               <p>Whether the camera device will output the lens
25817 shading map in output result metadata.<wbr/></p>
25818             </td>
25819
25820             <td class="entry_units">
25821             </td>
25822
25823             <td class="entry_range">
25824               <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>
25825             </td>
25826
25827             <td class="entry_hal_version">
25828               <p>3.<wbr/>2</p>
25829             </td>
25830
25831             <td class="entry_tags">
25832               <ul class="entry_tags">
25833                   <li><a href="#tag_RAW">RAW</a></li>
25834               </ul>
25835             </td>
25836
25837           </tr>
25838           <tr class="entries_header">
25839             <th class="th_details" colspan="6">Details</th>
25840           </tr>
25841           <tr class="entry_cont">
25842             <td class="entry_details" colspan="6">
25843               <p>When set to ON,<wbr/>
25844 <a href="#dynamic_android.statistics.lensShadingMap">android.<wbr/>statistics.<wbr/>lens<wbr/>Shading<wbr/>Map</a> will be provided in
25845 the output result metadata.<wbr/></p>
25846 <p>ON is always supported on devices with the RAW capability.<wbr/></p>
25847             </td>
25848           </tr>
25849
25850
25851           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25852            <!-- end of entry -->
25853         
25854                 
25855           <tr class="entry" id="dynamic_android.statistics.oisDataMode">
25856             <td class="entry_name
25857              " rowspan="3">
25858               android.<wbr/>statistics.<wbr/>ois<wbr/>Data<wbr/>Mode
25859             </td>
25860             <td class="entry_type">
25861                 <span class="entry_type_name entry_type_name_enum">byte</span>
25862
25863               <span class="entry_type_visibility"> [public]</span>
25864
25865
25866
25867
25868
25869                 <ul class="entry_type_enum">
25870                   <li>
25871                     <span class="entry_type_enum_name">OFF (v3.3)</span>
25872                     <span class="entry_type_enum_notes"><p>Do not include OIS data in the capture result.<wbr/></p></span>
25873                   </li>
25874                   <li>
25875                     <span class="entry_type_enum_name">ON (v3.3)</span>
25876                     <span class="entry_type_enum_notes"><p>Include OIS data in the capture result.<wbr/></p></span>
25877                   </li>
25878                 </ul>
25879
25880             </td> <!-- entry_type -->
25881
25882             <td class="entry_description">
25883               <p>Whether the camera device will output the OIS data in output
25884 result metadata.<wbr/></p>
25885             </td>
25886
25887             <td class="entry_units">
25888             </td>
25889
25890             <td class="entry_range">
25891               <p>android.<wbr/>Statistics.<wbr/>info.<wbr/>available<wbr/>Ois<wbr/>Data<wbr/>Modes</p>
25892             </td>
25893
25894             <td class="entry_hal_version">
25895               <p>3.<wbr/>3</p>
25896             </td>
25897
25898             <td class="entry_tags">
25899             </td>
25900
25901           </tr>
25902           <tr class="entries_header">
25903             <th class="th_details" colspan="6">Details</th>
25904           </tr>
25905           <tr class="entry_cont">
25906             <td class="entry_details" colspan="6">
25907               <p>When set to ON,<wbr/>
25908 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>,<wbr/> android.<wbr/>statistics.<wbr/>ois<wbr/>Shift<wbr/>Pixel<wbr/>X,<wbr/>
25909 android.<wbr/>statistics.<wbr/>ois<wbr/>Shift<wbr/>Pixel<wbr/>Y will provide OIS data in the output result metadata.<wbr/></p>
25910             </td>
25911           </tr>
25912
25913
25914           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25915            <!-- end of entry -->
25916         
25917                 
25918           <tr class="entry" id="dynamic_android.statistics.oisTimestamps">
25919             <td class="entry_name
25920              " rowspan="3">
25921               android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps
25922             </td>
25923             <td class="entry_type">
25924                 <span class="entry_type_name">int64</span>
25925                 <span class="entry_type_container">x</span>
25926
25927                 <span class="entry_type_array">
25928                   n
25929                 </span>
25930               <span class="entry_type_visibility"> [public]</span>
25931
25932
25933
25934
25935
25936
25937             </td> <!-- entry_type -->
25938
25939             <td class="entry_description">
25940               <p>An array of timestamps of OIS samples,<wbr/> in nanoseconds.<wbr/></p>
25941             </td>
25942
25943             <td class="entry_units">
25944               nanoseconds
25945             </td>
25946
25947             <td class="entry_range">
25948             </td>
25949
25950             <td class="entry_hal_version">
25951               <p>3.<wbr/>3</p>
25952             </td>
25953
25954             <td class="entry_tags">
25955             </td>
25956
25957           </tr>
25958           <tr class="entries_header">
25959             <th class="th_details" colspan="6">Details</th>
25960           </tr>
25961           <tr class="entry_cont">
25962             <td class="entry_details" colspan="6">
25963               <p>The array contains the timestamps of OIS samples.<wbr/> The timestamps are in the same
25964 timebase as and comparable to <a href="#dynamic_android.sensor.timestamp">android.<wbr/>sensor.<wbr/>timestamp</a>.<wbr/></p>
25965             </td>
25966           </tr>
25967
25968
25969           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
25970            <!-- end of entry -->
25971         
25972                 
25973           <tr class="entry" id="dynamic_android.statistics.oisXShifts">
25974             <td class="entry_name
25975              " rowspan="3">
25976               android.<wbr/>statistics.<wbr/>ois<wbr/>XShifts
25977             </td>
25978             <td class="entry_type">
25979                 <span class="entry_type_name">float</span>
25980                 <span class="entry_type_container">x</span>
25981
25982                 <span class="entry_type_array">
25983                   n
25984                 </span>
25985               <span class="entry_type_visibility"> [public]</span>
25986
25987
25988
25989
25990
25991
25992             </td> <!-- entry_type -->
25993
25994             <td class="entry_description">
25995               <p>An array of shifts of OIS samples,<wbr/> in x direction.<wbr/></p>
25996             </td>
25997
25998             <td class="entry_units">
25999               Pixels in active array.<wbr/>
26000             </td>
26001
26002             <td class="entry_range">
26003             </td>
26004
26005             <td class="entry_hal_version">
26006               <p>3.<wbr/>3</p>
26007             </td>
26008
26009             <td class="entry_tags">
26010             </td>
26011
26012           </tr>
26013           <tr class="entries_header">
26014             <th class="th_details" colspan="6">Details</th>
26015           </tr>
26016           <tr class="entry_cont">
26017             <td class="entry_details" colspan="6">
26018               <p>The array contains the amount of shifts in x direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26019 A positive value is a shift from left to right in active array coordinate system.<wbr/> For
26020 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> an shift of
26021 (3,<wbr/> 0) puts the new optical center at (1003,<wbr/> 500).<wbr/></p>
26022 <p>The number of shifts must match the number of timestamps in
26023 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26024             </td>
26025           </tr>
26026
26027
26028           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26029            <!-- end of entry -->
26030         
26031                 
26032           <tr class="entry" id="dynamic_android.statistics.oisYShifts">
26033             <td class="entry_name
26034              " rowspan="3">
26035               android.<wbr/>statistics.<wbr/>ois<wbr/>YShifts
26036             </td>
26037             <td class="entry_type">
26038                 <span class="entry_type_name">float</span>
26039                 <span class="entry_type_container">x</span>
26040
26041                 <span class="entry_type_array">
26042                   n
26043                 </span>
26044               <span class="entry_type_visibility"> [public]</span>
26045
26046
26047
26048
26049
26050
26051             </td> <!-- entry_type -->
26052
26053             <td class="entry_description">
26054               <p>An array of shifts of OIS samples,<wbr/> in y direction.<wbr/></p>
26055             </td>
26056
26057             <td class="entry_units">
26058               Pixels in active array.<wbr/>
26059             </td>
26060
26061             <td class="entry_range">
26062             </td>
26063
26064             <td class="entry_hal_version">
26065               <p>3.<wbr/>3</p>
26066             </td>
26067
26068             <td class="entry_tags">
26069             </td>
26070
26071           </tr>
26072           <tr class="entries_header">
26073             <th class="th_details" colspan="6">Details</th>
26074           </tr>
26075           <tr class="entry_cont">
26076             <td class="entry_details" colspan="6">
26077               <p>The array contains the amount of shifts in y direction,<wbr/> in pixels,<wbr/> based on OIS samples.<wbr/>
26078 A positive value is a shift from top to bottom in active array coordinate system.<wbr/> For
26079 example,<wbr/> if the optical center is (1000,<wbr/> 500) in active array coordinates,<wbr/> an shift of
26080 (0,<wbr/> 5) puts the new optical center at (1000,<wbr/> 505).<wbr/></p>
26081 <p>The number of shifts must match the number of timestamps in
26082 <a href="#dynamic_android.statistics.oisTimestamps">android.<wbr/>statistics.<wbr/>ois<wbr/>Timestamps</a>.<wbr/></p>
26083             </td>
26084           </tr>
26085
26086
26087           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26088            <!-- end of entry -->
26089         
26090         
26091
26092       <!-- end of kind -->
26093       </tbody>
26094
26095   <!-- end of section -->
26096   <tr><td colspan="7" id="section_tonemap" class="section">tonemap</td></tr>
26097
26098
26099       <tr><td colspan="7" class="kind">controls</td></tr>
26100
26101       <thead class="entries_header">
26102         <tr>
26103           <th class="th_name">Property Name</th>
26104           <th class="th_type">Type</th>
26105           <th class="th_description">Description</th>
26106           <th class="th_units">Units</th>
26107           <th class="th_range">Range</th>
26108           <th class="th_hal_version">Initial HIDL HAL version</th>
26109           <th class="th_tags">Tags</th>
26110         </tr>
26111       </thead>
26112
26113       <tbody>
26114
26115         
26116
26117         
26118
26119         
26120
26121         
26122
26123                 
26124           <tr class="entry" id="controls_android.tonemap.curveBlue">
26125             <td class="entry_name
26126              " rowspan="3">
26127               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26128             </td>
26129             <td class="entry_type">
26130                 <span class="entry_type_name">float</span>
26131                 <span class="entry_type_container">x</span>
26132
26133                 <span class="entry_type_array">
26134                   n x 2
26135                 </span>
26136               <span class="entry_type_visibility"> [ndk_public]</span>
26137
26138
26139               <span class="entry_type_hwlevel">[full] </span>
26140
26141
26142                 <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>
26143
26144
26145             </td> <!-- entry_type -->
26146
26147             <td class="entry_description">
26148               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
26149 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26150 CONTRAST_<wbr/>CURVE.<wbr/></p>
26151             </td>
26152
26153             <td class="entry_units">
26154             </td>
26155
26156             <td class="entry_range">
26157             </td>
26158
26159             <td class="entry_hal_version">
26160               <p>3.<wbr/>2</p>
26161             </td>
26162
26163             <td class="entry_tags">
26164             </td>
26165
26166           </tr>
26167           <tr class="entries_header">
26168             <th class="th_details" colspan="6">Details</th>
26169           </tr>
26170           <tr class="entry_cont">
26171             <td class="entry_details" colspan="6">
26172               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26173             </td>
26174           </tr>
26175
26176
26177           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26178            <!-- end of entry -->
26179         
26180                 
26181           <tr class="entry" id="controls_android.tonemap.curveGreen">
26182             <td class="entry_name
26183              " rowspan="3">
26184               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
26185             </td>
26186             <td class="entry_type">
26187                 <span class="entry_type_name">float</span>
26188                 <span class="entry_type_container">x</span>
26189
26190                 <span class="entry_type_array">
26191                   n x 2
26192                 </span>
26193               <span class="entry_type_visibility"> [ndk_public]</span>
26194
26195
26196               <span class="entry_type_hwlevel">[full] </span>
26197
26198
26199                 <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>
26200
26201
26202             </td> <!-- entry_type -->
26203
26204             <td class="entry_description">
26205               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
26206 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26207 CONTRAST_<wbr/>CURVE.<wbr/></p>
26208             </td>
26209
26210             <td class="entry_units">
26211             </td>
26212
26213             <td class="entry_range">
26214             </td>
26215
26216             <td class="entry_hal_version">
26217               <p>3.<wbr/>2</p>
26218             </td>
26219
26220             <td class="entry_tags">
26221             </td>
26222
26223           </tr>
26224           <tr class="entries_header">
26225             <th class="th_details" colspan="6">Details</th>
26226           </tr>
26227           <tr class="entry_cont">
26228             <td class="entry_details" colspan="6">
26229               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26230             </td>
26231           </tr>
26232
26233
26234           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26235            <!-- end of entry -->
26236         
26237                 
26238           <tr class="entry" id="controls_android.tonemap.curveRed">
26239             <td class="entry_name
26240              " rowspan="5">
26241               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
26242             </td>
26243             <td class="entry_type">
26244                 <span class="entry_type_name">float</span>
26245                 <span class="entry_type_container">x</span>
26246
26247                 <span class="entry_type_array">
26248                   n x 2
26249                 </span>
26250               <span class="entry_type_visibility"> [ndk_public]</span>
26251
26252
26253               <span class="entry_type_hwlevel">[full] </span>
26254
26255
26256                 <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>
26257
26258
26259             </td> <!-- entry_type -->
26260
26261             <td class="entry_description">
26262               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
26263 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26264 CONTRAST_<wbr/>CURVE.<wbr/></p>
26265             </td>
26266
26267             <td class="entry_units">
26268             </td>
26269
26270             <td class="entry_range">
26271               <p>0-1 on both input and output coordinates,<wbr/> normalized
26272 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
26273             </td>
26274
26275             <td class="entry_hal_version">
26276               <p>3.<wbr/>2</p>
26277             </td>
26278
26279             <td class="entry_tags">
26280             </td>
26281
26282           </tr>
26283           <tr class="entries_header">
26284             <th class="th_details" colspan="6">Details</th>
26285           </tr>
26286           <tr class="entry_cont">
26287             <td class="entry_details" colspan="6">
26288               <p>Each channel's curve is defined by an array of control points:</p>
26289 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
26290   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
26291 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26292 <p>These are sorted in order of increasing <code>Pin</code>; it is
26293 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26294 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26295 the camera device must linearly interpolate between the control
26296 points.<wbr/></p>
26297 <p>Each curve can have an independent number of points,<wbr/> and the number
26298 of points can be less than max (that is,<wbr/> the request doesn't have to
26299 always provide a curve with number of points equivalent to
26300 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26301 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26302 only specify the red channel and the precision is limited to 4
26303 digits,<wbr/> for conciseness.<wbr/></p>
26304 <p>Linear mapping:</p>
26305 <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 ]
26306 </code></pre>
26307 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26308 <p>Invert mapping:</p>
26309 <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 ]
26310 </code></pre>
26311 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26312 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26313 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26314   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/>
26315   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/>
26316   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/>
26317   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 ]
26318 </code></pre>
26319 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26320 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26321 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
26322   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/>
26323   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/>
26324   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/>
26325   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 ]
26326 </code></pre>
26327 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26328             </td>
26329           </tr>
26330
26331           <tr class="entries_header">
26332             <th class="th_details" colspan="6">HAL Implementation Details</th>
26333           </tr>
26334           <tr class="entry_cont">
26335             <td class="entry_details" colspan="6">
26336               <p>For good quality of mapping,<wbr/> at least 128 control points are
26337 preferred.<wbr/></p>
26338 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
26339 control points used as are available.<wbr/></p>
26340             </td>
26341           </tr>
26342
26343           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26344            <!-- end of entry -->
26345         
26346                 
26347           <tr class="entry" id="controls_android.tonemap.curve">
26348             <td class="entry_name
26349              " rowspan="5">
26350               android.<wbr/>tonemap.<wbr/>curve
26351             </td>
26352             <td class="entry_type">
26353                 <span class="entry_type_name">float</span>
26354
26355               <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
26356
26357               <span class="entry_type_synthetic">[synthetic] </span>
26358
26359               <span class="entry_type_hwlevel">[full] </span>
26360
26361
26362
26363
26364             </td> <!-- entry_type -->
26365
26366             <td class="entry_description">
26367               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
26368 is CONTRAST_<wbr/>CURVE.<wbr/></p>
26369             </td>
26370
26371             <td class="entry_units">
26372             </td>
26373
26374             <td class="entry_range">
26375             </td>
26376
26377             <td class="entry_hal_version">
26378               <p>3.<wbr/>2</p>
26379             </td>
26380
26381             <td class="entry_tags">
26382             </td>
26383
26384           </tr>
26385           <tr class="entries_header">
26386             <th class="th_details" colspan="6">Details</th>
26387           </tr>
26388           <tr class="entry_cont">
26389             <td class="entry_details" colspan="6">
26390               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
26391 channels respectively.<wbr/> The following example uses the red channel as an
26392 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
26393 Each channel's curve is defined by an array of control points:</p>
26394 <pre><code>curveRed =
26395   [ 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) ]
26396 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
26397 <p>These are sorted in order of increasing <code>Pin</code>; it is always
26398 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
26399 define a complete mapping.<wbr/> For input values between control points,<wbr/>
26400 the camera device must linearly interpolate between the control
26401 points.<wbr/></p>
26402 <p>Each curve can have an independent number of points,<wbr/> and the number
26403 of points can be less than max (that is,<wbr/> the request doesn't have to
26404 always provide a curve with number of points equivalent to
26405 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
26406 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
26407 only specify the red channel and the precision is limited to 4
26408 digits,<wbr/> for conciseness.<wbr/></p>
26409 <p>Linear mapping:</p>
26410 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
26411 </code></pre>
26412 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
26413 <p>Invert mapping:</p>
26414 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
26415 </code></pre>
26416 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
26417 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
26418 <pre><code>curveRed = [
26419   (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/>
26420   (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/>
26421   (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/>
26422   (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) ]
26423 </code></pre>
26424 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
26425 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
26426 <pre><code>curveRed = [
26427   (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/>
26428   (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/>
26429   (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/>
26430   (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) ]
26431 </code></pre>
26432 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26433             </td>
26434           </tr>
26435
26436           <tr class="entries_header">
26437             <th class="th_details" colspan="6">HAL Implementation Details</th>
26438           </tr>
26439           <tr class="entry_cont">
26440             <td class="entry_details" colspan="6">
26441               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
26442 curveBlue entries.<wbr/></p>
26443             </td>
26444           </tr>
26445
26446           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26447            <!-- end of entry -->
26448         
26449                 
26450           <tr class="entry" id="controls_android.tonemap.mode">
26451             <td class="entry_name
26452              " rowspan="3">
26453               android.<wbr/>tonemap.<wbr/>mode
26454             </td>
26455             <td class="entry_type">
26456                 <span class="entry_type_name entry_type_name_enum">byte</span>
26457
26458               <span class="entry_type_visibility"> [public]</span>
26459
26460
26461               <span class="entry_type_hwlevel">[full] </span>
26462
26463
26464
26465                 <ul class="entry_type_enum">
26466                   <li>
26467                     <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
26468                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
26469 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
26470 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26471 for applying the tonemapping curve specified by
26472 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26473 <p>Must not slow down frame rate relative to raw
26474 sensor output.<wbr/></p></span>
26475                   </li>
26476                   <li>
26477                     <span class="entry_type_enum_name">FAST (v3.2)</span>
26478                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
26479 reducing frame rate compared to raw sensor output.<wbr/></p></span>
26480                   </li>
26481                   <li>
26482                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
26483                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
26484 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
26485                   </li>
26486                   <li>
26487                     <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
26488                     <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform
26489 tonemapping.<wbr/></p>
26490 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26491 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
26492 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26493                   </li>
26494                   <li>
26495                     <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
26496                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
26497 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
26498 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
26499 for applying the tonemapping curve specified by
26500 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
26501 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
26502                   </li>
26503                 </ul>
26504
26505             </td> <!-- entry_type -->
26506
26507             <td class="entry_description">
26508               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
26509             </td>
26510
26511             <td class="entry_units">
26512             </td>
26513
26514             <td class="entry_range">
26515               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
26516             </td>
26517
26518             <td class="entry_hal_version">
26519               <p>3.<wbr/>2</p>
26520             </td>
26521
26522             <td class="entry_tags">
26523             </td>
26524
26525           </tr>
26526           <tr class="entries_header">
26527             <th class="th_details" colspan="6">Details</th>
26528           </tr>
26529           <tr class="entry_cont">
26530             <td class="entry_details" colspan="6">
26531               <p>When switching to an application-defined contrast curve by setting
26532 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
26533 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
26534 mapping from input high-bit-depth pixel value to the output
26535 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
26536 and output may change depending on the camera pipeline,<wbr/> the values
26537 are specified by normalized floating-point numbers.<wbr/></p>
26538 <p>More-complex color mapping operations such as 3D color look-up
26539 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
26540 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26541 CONTRAST_<wbr/>CURVE.<wbr/></p>
26542 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
26543 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
26544 These values are always available,<wbr/> and as close as possible to the
26545 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
26546 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
26547 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
26548 roughly the same.<wbr/></p>
26549             </td>
26550           </tr>
26551
26552
26553           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26554            <!-- end of entry -->
26555         
26556                 
26557           <tr class="entry" id="controls_android.tonemap.gamma">
26558             <td class="entry_name
26559              " rowspan="3">
26560               android.<wbr/>tonemap.<wbr/>gamma
26561             </td>
26562             <td class="entry_type">
26563                 <span class="entry_type_name">float</span>
26564
26565               <span class="entry_type_visibility"> [public]</span>
26566
26567
26568
26569
26570
26571
26572             </td> <!-- entry_type -->
26573
26574             <td class="entry_description">
26575               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26576 GAMMA_<wbr/>VALUE</p>
26577             </td>
26578
26579             <td class="entry_units">
26580             </td>
26581
26582             <td class="entry_range">
26583             </td>
26584
26585             <td class="entry_hal_version">
26586               <p>3.<wbr/>2</p>
26587             </td>
26588
26589             <td class="entry_tags">
26590             </td>
26591
26592           </tr>
26593           <tr class="entries_header">
26594             <th class="th_details" colspan="6">Details</th>
26595           </tr>
26596           <tr class="entry_cont">
26597             <td class="entry_details" colspan="6">
26598               <p>The tonemap curve will be defined the following formula:
26599 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
26600 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
26601 pow is the power function and gamma is the gamma value specified by this
26602 key.<wbr/></p>
26603 <p>The same curve will be applied to all color channels.<wbr/> The camera device
26604 may clip the input gamma value to its supported range.<wbr/> The actual applied
26605 value will be returned in capture result.<wbr/></p>
26606 <p>The valid range of gamma value varies on different devices,<wbr/> but values
26607 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
26608             </td>
26609           </tr>
26610
26611
26612           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26613            <!-- end of entry -->
26614         
26615                 
26616           <tr class="entry" id="controls_android.tonemap.presetCurve">
26617             <td class="entry_name
26618              " rowspan="3">
26619               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
26620             </td>
26621             <td class="entry_type">
26622                 <span class="entry_type_name entry_type_name_enum">byte</span>
26623
26624               <span class="entry_type_visibility"> [public]</span>
26625
26626
26627
26628
26629
26630                 <ul class="entry_type_enum">
26631                   <li>
26632                     <span class="entry_type_enum_name">SRGB (v3.2)</span>
26633                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
26634                   </li>
26635                   <li>
26636                     <span class="entry_type_enum_name">REC709 (v3.2)</span>
26637                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
26638                   </li>
26639                 </ul>
26640
26641             </td> <!-- entry_type -->
26642
26643             <td class="entry_description">
26644               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26645 PRESET_<wbr/>CURVE</p>
26646             </td>
26647
26648             <td class="entry_units">
26649             </td>
26650
26651             <td class="entry_range">
26652             </td>
26653
26654             <td class="entry_hal_version">
26655               <p>3.<wbr/>2</p>
26656             </td>
26657
26658             <td class="entry_tags">
26659             </td>
26660
26661           </tr>
26662           <tr class="entries_header">
26663             <th class="th_details" colspan="6">Details</th>
26664           </tr>
26665           <tr class="entry_cont">
26666             <td class="entry_details" colspan="6">
26667               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
26668 <p>sRGB (approximated by 16 control points):</p>
26669 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
26670 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
26671 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
26672 <p>Note that above figures show a 16 control points approximation of preset
26673 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
26674             </td>
26675           </tr>
26676
26677
26678           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26679            <!-- end of entry -->
26680         
26681         
26682
26683       <!-- end of kind -->
26684       </tbody>
26685       <tr><td colspan="7" class="kind">static</td></tr>
26686
26687       <thead class="entries_header">
26688         <tr>
26689           <th class="th_name">Property Name</th>
26690           <th class="th_type">Type</th>
26691           <th class="th_description">Description</th>
26692           <th class="th_units">Units</th>
26693           <th class="th_range">Range</th>
26694           <th class="th_hal_version">Initial HIDL HAL version</th>
26695           <th class="th_tags">Tags</th>
26696         </tr>
26697       </thead>
26698
26699       <tbody>
26700
26701         
26702
26703         
26704
26705         
26706
26707         
26708
26709                 
26710           <tr class="entry" id="static_android.tonemap.maxCurvePoints">
26711             <td class="entry_name
26712              " rowspan="5">
26713               android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points
26714             </td>
26715             <td class="entry_type">
26716                 <span class="entry_type_name">int32</span>
26717
26718               <span class="entry_type_visibility"> [public]</span>
26719
26720
26721               <span class="entry_type_hwlevel">[full] </span>
26722
26723
26724
26725
26726             </td> <!-- entry_type -->
26727
26728             <td class="entry_description">
26729               <p>Maximum number of supported points in the
26730 tonemap curve that can be used for <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
26731             </td>
26732
26733             <td class="entry_units">
26734             </td>
26735
26736             <td class="entry_range">
26737             </td>
26738
26739             <td class="entry_hal_version">
26740               <p>3.<wbr/>2</p>
26741             </td>
26742
26743             <td class="entry_tags">
26744             </td>
26745
26746           </tr>
26747           <tr class="entries_header">
26748             <th class="th_details" colspan="6">Details</th>
26749           </tr>
26750           <tr class="entry_cont">
26751             <td class="entry_details" colspan="6">
26752               <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
26753 less than this maximum,<wbr/> the camera device will resample the curve to its internal
26754 representation,<wbr/> using linear interpolation.<wbr/></p>
26755 <p>The output curves in the result metadata may have a different number
26756 of points than the input curves,<wbr/> and will represent the actual
26757 hardware curves used as closely as possible when linearly interpolated.<wbr/></p>
26758             </td>
26759           </tr>
26760
26761           <tr class="entries_header">
26762             <th class="th_details" colspan="6">HAL Implementation Details</th>
26763           </tr>
26764           <tr class="entry_cont">
26765             <td class="entry_details" colspan="6">
26766               <p>This value must be at least 64.<wbr/> This should be at least 128.<wbr/></p>
26767             </td>
26768           </tr>
26769
26770           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26771            <!-- end of entry -->
26772         
26773                 
26774           <tr class="entry" id="static_android.tonemap.availableToneMapModes">
26775             <td class="entry_name
26776              " rowspan="5">
26777               android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes
26778             </td>
26779             <td class="entry_type">
26780                 <span class="entry_type_name">byte</span>
26781                 <span class="entry_type_container">x</span>
26782
26783                 <span class="entry_type_array">
26784                   n
26785                 </span>
26786               <span class="entry_type_visibility"> [public as enumList]</span>
26787
26788
26789               <span class="entry_type_hwlevel">[full] </span>
26790
26791
26792                 <div class="entry_type_notes">list of enums</div>
26793
26794
26795             </td> <!-- entry_type -->
26796
26797             <td class="entry_description">
26798               <p>List of tonemapping modes for <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> that are supported by this camera
26799 device.<wbr/></p>
26800             </td>
26801
26802             <td class="entry_units">
26803             </td>
26804
26805             <td class="entry_range">
26806               <p>Any value listed in <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a></p>
26807             </td>
26808
26809             <td class="entry_hal_version">
26810               <p>3.<wbr/>2</p>
26811             </td>
26812
26813             <td class="entry_tags">
26814             </td>
26815
26816           </tr>
26817           <tr class="entries_header">
26818             <th class="th_details" colspan="6">Details</th>
26819           </tr>
26820           <tr class="entry_cont">
26821             <td class="entry_details" colspan="6">
26822               <p>Camera devices that support the MANUAL_<wbr/>POST_<wbr/>PROCESSING capability will always contain
26823 at least one of below mode combinations:</p>
26824 <ul>
26825 <li>CONTRAST_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
26826 <li>GAMMA_<wbr/>VALUE,<wbr/> PRESET_<wbr/>CURVE,<wbr/> FAST and HIGH_<wbr/>QUALITY</li>
26827 </ul>
26828 <p>This includes all FULL level devices.<wbr/></p>
26829             </td>
26830           </tr>
26831
26832           <tr class="entries_header">
26833             <th class="th_details" colspan="6">HAL Implementation Details</th>
26834           </tr>
26835           <tr class="entry_cont">
26836             <td class="entry_details" colspan="6">
26837               <p>HAL must support both FAST and HIGH_<wbr/>QUALITY if automatic tonemap control is available
26838 on the camera device,<wbr/> but the underlying implementation can be the same for both modes.<wbr/>
26839 That is,<wbr/> if the highest quality implementation on the camera device does not slow down
26840 capture rate,<wbr/> then FAST and HIGH_<wbr/>QUALITY will generate the same output.<wbr/></p>
26841             </td>
26842           </tr>
26843
26844           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26845            <!-- end of entry -->
26846         
26847         
26848
26849       <!-- end of kind -->
26850       </tbody>
26851       <tr><td colspan="7" class="kind">dynamic</td></tr>
26852
26853       <thead class="entries_header">
26854         <tr>
26855           <th class="th_name">Property Name</th>
26856           <th class="th_type">Type</th>
26857           <th class="th_description">Description</th>
26858           <th class="th_units">Units</th>
26859           <th class="th_range">Range</th>
26860           <th class="th_hal_version">Initial HIDL HAL version</th>
26861           <th class="th_tags">Tags</th>
26862         </tr>
26863       </thead>
26864
26865       <tbody>
26866
26867         
26868
26869         
26870
26871         
26872
26873         
26874
26875                 
26876           <tr class="entry" id="dynamic_android.tonemap.curveBlue">
26877             <td class="entry_name
26878              " rowspan="3">
26879               android.<wbr/>tonemap.<wbr/>curve<wbr/>Blue
26880             </td>
26881             <td class="entry_type">
26882                 <span class="entry_type_name">float</span>
26883                 <span class="entry_type_container">x</span>
26884
26885                 <span class="entry_type_array">
26886                   n x 2
26887                 </span>
26888               <span class="entry_type_visibility"> [ndk_public]</span>
26889
26890
26891               <span class="entry_type_hwlevel">[full] </span>
26892
26893
26894                 <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>
26895
26896
26897             </td> <!-- entry_type -->
26898
26899             <td class="entry_description">
26900               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the blue
26901 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26902 CONTRAST_<wbr/>CURVE.<wbr/></p>
26903             </td>
26904
26905             <td class="entry_units">
26906             </td>
26907
26908             <td class="entry_range">
26909             </td>
26910
26911             <td class="entry_hal_version">
26912               <p>3.<wbr/>2</p>
26913             </td>
26914
26915             <td class="entry_tags">
26916             </td>
26917
26918           </tr>
26919           <tr class="entries_header">
26920             <th class="th_details" colspan="6">Details</th>
26921           </tr>
26922           <tr class="entry_cont">
26923             <td class="entry_details" colspan="6">
26924               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26925             </td>
26926           </tr>
26927
26928
26929           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26930            <!-- end of entry -->
26931         
26932                 
26933           <tr class="entry" id="dynamic_android.tonemap.curveGreen">
26934             <td class="entry_name
26935              " rowspan="3">
26936               android.<wbr/>tonemap.<wbr/>curve<wbr/>Green
26937             </td>
26938             <td class="entry_type">
26939                 <span class="entry_type_name">float</span>
26940                 <span class="entry_type_container">x</span>
26941
26942                 <span class="entry_type_array">
26943                   n x 2
26944                 </span>
26945               <span class="entry_type_visibility"> [ndk_public]</span>
26946
26947
26948               <span class="entry_type_hwlevel">[full] </span>
26949
26950
26951                 <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>
26952
26953
26954             </td> <!-- entry_type -->
26955
26956             <td class="entry_description">
26957               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the green
26958 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
26959 CONTRAST_<wbr/>CURVE.<wbr/></p>
26960             </td>
26961
26962             <td class="entry_units">
26963             </td>
26964
26965             <td class="entry_range">
26966             </td>
26967
26968             <td class="entry_hal_version">
26969               <p>3.<wbr/>2</p>
26970             </td>
26971
26972             <td class="entry_tags">
26973             </td>
26974
26975           </tr>
26976           <tr class="entries_header">
26977             <th class="th_details" colspan="6">Details</th>
26978           </tr>
26979           <tr class="entry_cont">
26980             <td class="entry_details" colspan="6">
26981               <p>See <a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> for more details.<wbr/></p>
26982             </td>
26983           </tr>
26984
26985
26986           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
26987            <!-- end of entry -->
26988         
26989                 
26990           <tr class="entry" id="dynamic_android.tonemap.curveRed">
26991             <td class="entry_name
26992              " rowspan="5">
26993               android.<wbr/>tonemap.<wbr/>curve<wbr/>Red
26994             </td>
26995             <td class="entry_type">
26996                 <span class="entry_type_name">float</span>
26997                 <span class="entry_type_container">x</span>
26998
26999                 <span class="entry_type_array">
27000                   n x 2
27001                 </span>
27002               <span class="entry_type_visibility"> [ndk_public]</span>
27003
27004
27005               <span class="entry_type_hwlevel">[full] </span>
27006
27007
27008                 <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>
27009
27010
27011             </td> <!-- entry_type -->
27012
27013             <td class="entry_description">
27014               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve for the red
27015 channel,<wbr/> to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27016 CONTRAST_<wbr/>CURVE.<wbr/></p>
27017             </td>
27018
27019             <td class="entry_units">
27020             </td>
27021
27022             <td class="entry_range">
27023               <p>0-1 on both input and output coordinates,<wbr/> normalized
27024 as a floating-point value such that 0 == black and 1 == white.<wbr/></p>
27025             </td>
27026
27027             <td class="entry_hal_version">
27028               <p>3.<wbr/>2</p>
27029             </td>
27030
27031             <td class="entry_tags">
27032             </td>
27033
27034           </tr>
27035           <tr class="entries_header">
27036             <th class="th_details" colspan="6">Details</th>
27037           </tr>
27038           <tr class="entry_cont">
27039             <td class="entry_details" colspan="6">
27040               <p>Each channel's curve is defined by an array of control points:</p>
27041 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> =
27042   [ P0in,<wbr/> P0out,<wbr/> P1in,<wbr/> P1out,<wbr/> P2in,<wbr/> P2out,<wbr/> P3in,<wbr/> P3out,<wbr/> ...,<wbr/> PNin,<wbr/> PNout ]
27043 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27044 <p>These are sorted in order of increasing <code>Pin</code>; it is
27045 required that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27046 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27047 the camera device must linearly interpolate between the control
27048 points.<wbr/></p>
27049 <p>Each curve can have an independent number of points,<wbr/> and the number
27050 of points can be less than max (that is,<wbr/> the request doesn't have to
27051 always provide a curve with number of points equivalent to
27052 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27053 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27054 only specify the red channel and the precision is limited to 4
27055 digits,<wbr/> for conciseness.<wbr/></p>
27056 <p>Linear mapping:</p>
27057 <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 ]
27058 </code></pre>
27059 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27060 <p>Invert mapping:</p>
27061 <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 ]
27062 </code></pre>
27063 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27064 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27065 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27066   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/>
27067   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/>
27068   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/>
27069   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 ]
27070 </code></pre>
27071 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27072 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27073 <pre><code><a href="#controls_android.tonemap.curveRed">android.<wbr/>tonemap.<wbr/>curve<wbr/>Red</a> = [
27074   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/>
27075   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/>
27076   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/>
27077   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 ]
27078 </code></pre>
27079 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27080             </td>
27081           </tr>
27082
27083           <tr class="entries_header">
27084             <th class="th_details" colspan="6">HAL Implementation Details</th>
27085           </tr>
27086           <tr class="entry_cont">
27087             <td class="entry_details" colspan="6">
27088               <p>For good quality of mapping,<wbr/> at least 128 control points are
27089 preferred.<wbr/></p>
27090 <p>A typical use case of this would be a gamma-1/<wbr/>2.<wbr/>2 curve,<wbr/> with as many
27091 control points used as are available.<wbr/></p>
27092             </td>
27093           </tr>
27094
27095           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27096            <!-- end of entry -->
27097         
27098                 
27099           <tr class="entry" id="dynamic_android.tonemap.curve">
27100             <td class="entry_name
27101              " rowspan="5">
27102               android.<wbr/>tonemap.<wbr/>curve
27103             </td>
27104             <td class="entry_type">
27105                 <span class="entry_type_name">float</span>
27106
27107               <span class="entry_type_visibility"> [java_public as tonemapCurve]</span>
27108
27109               <span class="entry_type_synthetic">[synthetic] </span>
27110
27111               <span class="entry_type_hwlevel">[full] </span>
27112
27113
27114
27115
27116             </td> <!-- entry_type -->
27117
27118             <td class="entry_description">
27119               <p>Tonemapping /<wbr/> contrast /<wbr/> gamma curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a>
27120 is CONTRAST_<wbr/>CURVE.<wbr/></p>
27121             </td>
27122
27123             <td class="entry_units">
27124             </td>
27125
27126             <td class="entry_range">
27127             </td>
27128
27129             <td class="entry_hal_version">
27130               <p>3.<wbr/>2</p>
27131             </td>
27132
27133             <td class="entry_tags">
27134             </td>
27135
27136           </tr>
27137           <tr class="entries_header">
27138             <th class="th_details" colspan="6">Details</th>
27139           </tr>
27140           <tr class="entry_cont">
27141             <td class="entry_details" colspan="6">
27142               <p>The tonemapCurve consist of three curves for each of red,<wbr/> green,<wbr/> and blue
27143 channels respectively.<wbr/> The following example uses the red channel as an
27144 example.<wbr/> The same logic applies to green and blue channel.<wbr/>
27145 Each channel's curve is defined by an array of control points:</p>
27146 <pre><code>curveRed =
27147   [ 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) ]
27148 2 &lt;= N &lt;= <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a></code></pre>
27149 <p>These are sorted in order of increasing <code>Pin</code>; it is always
27150 guaranteed that input values 0.<wbr/>0 and 1.<wbr/>0 are included in the list to
27151 define a complete mapping.<wbr/> For input values between control points,<wbr/>
27152 the camera device must linearly interpolate between the control
27153 points.<wbr/></p>
27154 <p>Each curve can have an independent number of points,<wbr/> and the number
27155 of points can be less than max (that is,<wbr/> the request doesn't have to
27156 always provide a curve with number of points equivalent to
27157 <a href="#static_android.tonemap.maxCurvePoints">android.<wbr/>tonemap.<wbr/>max<wbr/>Curve<wbr/>Points</a>).<wbr/></p>
27158 <p>A few examples,<wbr/> and their corresponding graphical mappings; these
27159 only specify the red channel and the precision is limited to 4
27160 digits,<wbr/> for conciseness.<wbr/></p>
27161 <p>Linear mapping:</p>
27162 <pre><code>curveRed = [ (0,<wbr/> 0),<wbr/> (1.<wbr/>0,<wbr/> 1.<wbr/>0) ]
27163 </code></pre>
27164 <p><img alt="Linear mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/linear_tonemap.png"/></p>
27165 <p>Invert mapping:</p>
27166 <pre><code>curveRed = [ (0,<wbr/> 1.<wbr/>0),<wbr/> (1.<wbr/>0,<wbr/> 0) ]
27167 </code></pre>
27168 <p><img alt="Inverting mapping curve" src="images/camera2/metadata/android.tonemap.curveRed/inverse_tonemap.png"/></p>
27169 <p>Gamma 1/<wbr/>2.<wbr/>2 mapping,<wbr/> with 16 control points:</p>
27170 <pre><code>curveRed = [
27171   (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/>
27172   (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/>
27173   (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/>
27174   (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) ]
27175 </code></pre>
27176 <p><img alt="Gamma = 1/2.2 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/gamma_tonemap.png"/></p>
27177 <p>Standard sRGB gamma mapping,<wbr/> per IEC 61966-2-1:1999,<wbr/> with 16 control points:</p>
27178 <pre><code>curveRed = [
27179   (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/>
27180   (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/>
27181   (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/>
27182   (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) ]
27183 </code></pre>
27184 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27185             </td>
27186           </tr>
27187
27188           <tr class="entries_header">
27189             <th class="th_details" colspan="6">HAL Implementation Details</th>
27190           </tr>
27191           <tr class="entry_cont">
27192             <td class="entry_details" colspan="6">
27193               <p>This entry is created by the framework from the curveRed,<wbr/> curveGreen and
27194 curveBlue entries.<wbr/></p>
27195             </td>
27196           </tr>
27197
27198           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27199            <!-- end of entry -->
27200         
27201                 
27202           <tr class="entry" id="dynamic_android.tonemap.mode">
27203             <td class="entry_name
27204              " rowspan="3">
27205               android.<wbr/>tonemap.<wbr/>mode
27206             </td>
27207             <td class="entry_type">
27208                 <span class="entry_type_name entry_type_name_enum">byte</span>
27209
27210               <span class="entry_type_visibility"> [public]</span>
27211
27212
27213               <span class="entry_type_hwlevel">[full] </span>
27214
27215
27216
27217                 <ul class="entry_type_enum">
27218                   <li>
27219                     <span class="entry_type_enum_name">CONTRAST_CURVE (v3.2)</span>
27220                     <span class="entry_type_enum_notes"><p>Use the tone mapping curve specified in
27221 the <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>* entries.<wbr/></p>
27222 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27223 for applying the tonemapping curve specified by
27224 <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/></p>
27225 <p>Must not slow down frame rate relative to raw
27226 sensor output.<wbr/></p></span>
27227                   </li>
27228                   <li>
27229                     <span class="entry_type_enum_name">FAST (v3.2)</span>
27230                     <span class="entry_type_enum_notes"><p>Advanced gamma mapping and color enhancement may be applied,<wbr/> without
27231 reducing frame rate compared to raw sensor output.<wbr/></p></span>
27232                   </li>
27233                   <li>
27234                     <span class="entry_type_enum_name">HIGH_QUALITY (v3.2)</span>
27235                     <span class="entry_type_enum_notes"><p>High-quality gamma mapping and color enhancement will be applied,<wbr/> at
27236 the cost of possibly reduced frame rate compared to raw sensor output.<wbr/></p></span>
27237                   </li>
27238                   <li>
27239                     <span class="entry_type_enum_name">GAMMA_VALUE (v3.2)</span>
27240                     <span class="entry_type_enum_notes"><p>Use the gamma value specified in <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a> to peform
27241 tonemapping.<wbr/></p>
27242 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27243 for applying the tonemapping curve specified by <a href="#controls_android.tonemap.gamma">android.<wbr/>tonemap.<wbr/>gamma</a>.<wbr/></p>
27244 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27245                   </li>
27246                   <li>
27247                     <span class="entry_type_enum_name">PRESET_CURVE (v3.2)</span>
27248                     <span class="entry_type_enum_notes"><p>Use the preset tonemapping curve specified in
27249 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a> to peform tonemapping.<wbr/></p>
27250 <p>All color enhancement and tonemapping must be disabled,<wbr/> except
27251 for applying the tonemapping curve specified by
27252 <a href="#controls_android.tonemap.presetCurve">android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve</a>.<wbr/></p>
27253 <p>Must not slow down frame rate relative to raw sensor output.<wbr/></p></span>
27254                   </li>
27255                 </ul>
27256
27257             </td> <!-- entry_type -->
27258
27259             <td class="entry_description">
27260               <p>High-level global contrast/<wbr/>gamma/<wbr/>tonemapping control.<wbr/></p>
27261             </td>
27262
27263             <td class="entry_units">
27264             </td>
27265
27266             <td class="entry_range">
27267               <p><a href="#static_android.tonemap.availableToneMapModes">android.<wbr/>tonemap.<wbr/>available<wbr/>Tone<wbr/>Map<wbr/>Modes</a></p>
27268             </td>
27269
27270             <td class="entry_hal_version">
27271               <p>3.<wbr/>2</p>
27272             </td>
27273
27274             <td class="entry_tags">
27275             </td>
27276
27277           </tr>
27278           <tr class="entries_header">
27279             <th class="th_details" colspan="6">Details</th>
27280           </tr>
27281           <tr class="entry_cont">
27282             <td class="entry_details" colspan="6">
27283               <p>When switching to an application-defined contrast curve by setting
27284 <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> to CONTRAST_<wbr/>CURVE,<wbr/> the curve is defined
27285 per-channel with a set of <code>(in,<wbr/> out)</code> points that specify the
27286 mapping from input high-bit-depth pixel value to the output
27287 low-bit-depth value.<wbr/>  Since the actual pixel ranges of both input
27288 and output may change depending on the camera pipeline,<wbr/> the values
27289 are specified by normalized floating-point numbers.<wbr/></p>
27290 <p>More-complex color mapping operations such as 3D color look-up
27291 tables,<wbr/> selective chroma enhancement,<wbr/> or other non-linear color
27292 transforms will be disabled when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27293 CONTRAST_<wbr/>CURVE.<wbr/></p>
27294 <p>When using either FAST or HIGH_<wbr/>QUALITY,<wbr/> the camera device will
27295 emit its own tonemap curve in <a href="#controls_android.tonemap.curve">android.<wbr/>tonemap.<wbr/>curve</a>.<wbr/>
27296 These values are always available,<wbr/> and as close as possible to the
27297 actually used nonlinear/<wbr/>nonglobal transforms.<wbr/></p>
27298 <p>If a request is sent with CONTRAST_<wbr/>CURVE with the camera device's
27299 provided curve in FAST or HIGH_<wbr/>QUALITY,<wbr/> the image's tonemap will be
27300 roughly the same.<wbr/></p>
27301             </td>
27302           </tr>
27303
27304
27305           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27306            <!-- end of entry -->
27307         
27308                 
27309           <tr class="entry" id="dynamic_android.tonemap.gamma">
27310             <td class="entry_name
27311              " rowspan="3">
27312               android.<wbr/>tonemap.<wbr/>gamma
27313             </td>
27314             <td class="entry_type">
27315                 <span class="entry_type_name">float</span>
27316
27317               <span class="entry_type_visibility"> [public]</span>
27318
27319
27320
27321
27322
27323
27324             </td> <!-- entry_type -->
27325
27326             <td class="entry_description">
27327               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27328 GAMMA_<wbr/>VALUE</p>
27329             </td>
27330
27331             <td class="entry_units">
27332             </td>
27333
27334             <td class="entry_range">
27335             </td>
27336
27337             <td class="entry_hal_version">
27338               <p>3.<wbr/>2</p>
27339             </td>
27340
27341             <td class="entry_tags">
27342             </td>
27343
27344           </tr>
27345           <tr class="entries_header">
27346             <th class="th_details" colspan="6">Details</th>
27347           </tr>
27348           <tr class="entry_cont">
27349             <td class="entry_details" colspan="6">
27350               <p>The tonemap curve will be defined the following formula:
27351 * OUT = pow(IN,<wbr/> 1.<wbr/>0 /<wbr/> gamma)
27352 where IN and OUT is the input pixel value scaled to range [0.<wbr/>0,<wbr/> 1.<wbr/>0],<wbr/>
27353 pow is the power function and gamma is the gamma value specified by this
27354 key.<wbr/></p>
27355 <p>The same curve will be applied to all color channels.<wbr/> The camera device
27356 may clip the input gamma value to its supported range.<wbr/> The actual applied
27357 value will be returned in capture result.<wbr/></p>
27358 <p>The valid range of gamma value varies on different devices,<wbr/> but values
27359 within [1.<wbr/>0,<wbr/> 5.<wbr/>0] are guaranteed not to be clipped.<wbr/></p>
27360             </td>
27361           </tr>
27362
27363
27364           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27365            <!-- end of entry -->
27366         
27367                 
27368           <tr class="entry" id="dynamic_android.tonemap.presetCurve">
27369             <td class="entry_name
27370              " rowspan="3">
27371               android.<wbr/>tonemap.<wbr/>preset<wbr/>Curve
27372             </td>
27373             <td class="entry_type">
27374                 <span class="entry_type_name entry_type_name_enum">byte</span>
27375
27376               <span class="entry_type_visibility"> [public]</span>
27377
27378
27379
27380
27381
27382                 <ul class="entry_type_enum">
27383                   <li>
27384                     <span class="entry_type_enum_name">SRGB (v3.2)</span>
27385                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by sRGB</p></span>
27386                   </li>
27387                   <li>
27388                     <span class="entry_type_enum_name">REC709 (v3.2)</span>
27389                     <span class="entry_type_enum_notes"><p>Tonemapping curve is defined by ITU-R BT.<wbr/>709</p></span>
27390                   </li>
27391                 </ul>
27392
27393             </td> <!-- entry_type -->
27394
27395             <td class="entry_description">
27396               <p>Tonemapping curve to use when <a href="#controls_android.tonemap.mode">android.<wbr/>tonemap.<wbr/>mode</a> is
27397 PRESET_<wbr/>CURVE</p>
27398             </td>
27399
27400             <td class="entry_units">
27401             </td>
27402
27403             <td class="entry_range">
27404             </td>
27405
27406             <td class="entry_hal_version">
27407               <p>3.<wbr/>2</p>
27408             </td>
27409
27410             <td class="entry_tags">
27411             </td>
27412
27413           </tr>
27414           <tr class="entries_header">
27415             <th class="th_details" colspan="6">Details</th>
27416           </tr>
27417           <tr class="entry_cont">
27418             <td class="entry_details" colspan="6">
27419               <p>The tonemap curve will be defined by specified standard.<wbr/></p>
27420 <p>sRGB (approximated by 16 control points):</p>
27421 <p><img alt="sRGB tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/srgb_tonemap.png"/></p>
27422 <p>Rec.<wbr/> 709 (approximated by 16 control points):</p>
27423 <p><img alt="Rec. 709 tonemapping curve" src="images/camera2/metadata/android.tonemap.curveRed/rec709_tonemap.png"/></p>
27424 <p>Note that above figures show a 16 control points approximation of preset
27425 curves.<wbr/> Camera devices may apply a different approximation to the curve.<wbr/></p>
27426             </td>
27427           </tr>
27428
27429
27430           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27431            <!-- end of entry -->
27432         
27433         
27434
27435       <!-- end of kind -->
27436       </tbody>
27437
27438   <!-- end of section -->
27439   <tr><td colspan="7" id="section_led" class="section">led</td></tr>
27440
27441
27442       <tr><td colspan="7" class="kind">controls</td></tr>
27443
27444       <thead class="entries_header">
27445         <tr>
27446           <th class="th_name">Property Name</th>
27447           <th class="th_type">Type</th>
27448           <th class="th_description">Description</th>
27449           <th class="th_units">Units</th>
27450           <th class="th_range">Range</th>
27451           <th class="th_hal_version">Initial HIDL HAL version</th>
27452           <th class="th_tags">Tags</th>
27453         </tr>
27454       </thead>
27455
27456       <tbody>
27457
27458         
27459
27460         
27461
27462         
27463
27464         
27465
27466                 
27467           <tr class="entry" id="controls_android.led.transmit">
27468             <td class="entry_name
27469              " rowspan="1">
27470               android.<wbr/>led.<wbr/>transmit
27471             </td>
27472             <td class="entry_type">
27473                 <span class="entry_type_name entry_type_name_enum">byte</span>
27474
27475               <span class="entry_type_visibility"> [hidden as boolean]</span>
27476
27477
27478
27479
27480
27481                 <ul class="entry_type_enum">
27482                   <li>
27483                     <span class="entry_type_enum_name">OFF (v3.2)</span>
27484                   </li>
27485                   <li>
27486                     <span class="entry_type_enum_name">ON (v3.2)</span>
27487                   </li>
27488                 </ul>
27489
27490             </td> <!-- entry_type -->
27491
27492             <td class="entry_description">
27493               <p>This LED is nominally used to indicate to the user
27494 that the camera is powered on and may be streaming images back to the
27495 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27496 disable this when video is processed locally and not transmitted to
27497 any untrusted applications.<wbr/></p>
27498 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27499 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27500 data is stored locally on the device.<wbr/></p>
27501 <p>The LED <em>may</em> be off if a trusted application is using the data that
27502 doesn't violate the above rules.<wbr/></p>
27503             </td>
27504
27505             <td class="entry_units">
27506             </td>
27507
27508             <td class="entry_range">
27509             </td>
27510
27511             <td class="entry_hal_version">
27512               <p>3.<wbr/>2</p>
27513             </td>
27514
27515             <td class="entry_tags">
27516             </td>
27517
27518           </tr>
27519
27520
27521           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27522            <!-- end of entry -->
27523         
27524         
27525
27526       <!-- end of kind -->
27527       </tbody>
27528       <tr><td colspan="7" class="kind">dynamic</td></tr>
27529
27530       <thead class="entries_header">
27531         <tr>
27532           <th class="th_name">Property Name</th>
27533           <th class="th_type">Type</th>
27534           <th class="th_description">Description</th>
27535           <th class="th_units">Units</th>
27536           <th class="th_range">Range</th>
27537           <th class="th_hal_version">Initial HIDL HAL version</th>
27538           <th class="th_tags">Tags</th>
27539         </tr>
27540       </thead>
27541
27542       <tbody>
27543
27544         
27545
27546         
27547
27548         
27549
27550         
27551
27552                 
27553           <tr class="entry" id="dynamic_android.led.transmit">
27554             <td class="entry_name
27555              " rowspan="1">
27556               android.<wbr/>led.<wbr/>transmit
27557             </td>
27558             <td class="entry_type">
27559                 <span class="entry_type_name entry_type_name_enum">byte</span>
27560
27561               <span class="entry_type_visibility"> [hidden as boolean]</span>
27562
27563
27564
27565
27566
27567                 <ul class="entry_type_enum">
27568                   <li>
27569                     <span class="entry_type_enum_name">OFF (v3.2)</span>
27570                   </li>
27571                   <li>
27572                     <span class="entry_type_enum_name">ON (v3.2)</span>
27573                   </li>
27574                 </ul>
27575
27576             </td> <!-- entry_type -->
27577
27578             <td class="entry_description">
27579               <p>This LED is nominally used to indicate to the user
27580 that the camera is powered on and may be streaming images back to the
27581 Application Processor.<wbr/> In certain rare circumstances,<wbr/> the OS may
27582 disable this when video is processed locally and not transmitted to
27583 any untrusted applications.<wbr/></p>
27584 <p>In particular,<wbr/> the LED <em>must</em> always be on when the data could be
27585 transmitted off the device.<wbr/> The LED <em>should</em> always be on whenever
27586 data is stored locally on the device.<wbr/></p>
27587 <p>The LED <em>may</em> be off if a trusted application is using the data that
27588 doesn't violate the above rules.<wbr/></p>
27589             </td>
27590
27591             <td class="entry_units">
27592             </td>
27593
27594             <td class="entry_range">
27595             </td>
27596
27597             <td class="entry_hal_version">
27598               <p>3.<wbr/>2</p>
27599             </td>
27600
27601             <td class="entry_tags">
27602             </td>
27603
27604           </tr>
27605
27606
27607           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27608            <!-- end of entry -->
27609         
27610         
27611
27612       <!-- end of kind -->
27613       </tbody>
27614       <tr><td colspan="7" class="kind">static</td></tr>
27615
27616       <thead class="entries_header">
27617         <tr>
27618           <th class="th_name">Property Name</th>
27619           <th class="th_type">Type</th>
27620           <th class="th_description">Description</th>
27621           <th class="th_units">Units</th>
27622           <th class="th_range">Range</th>
27623           <th class="th_hal_version">Initial HIDL HAL version</th>
27624           <th class="th_tags">Tags</th>
27625         </tr>
27626       </thead>
27627
27628       <tbody>
27629
27630         
27631
27632         
27633
27634         
27635
27636         
27637
27638                 
27639           <tr class="entry" id="static_android.led.availableLeds">
27640             <td class="entry_name
27641              " rowspan="1">
27642               android.<wbr/>led.<wbr/>available<wbr/>Leds
27643             </td>
27644             <td class="entry_type">
27645                 <span class="entry_type_name entry_type_name_enum">byte</span>
27646                 <span class="entry_type_container">x</span>
27647
27648                 <span class="entry_type_array">
27649                   n
27650                 </span>
27651               <span class="entry_type_visibility"> [hidden]</span>
27652
27653
27654
27655
27656
27657                 <ul class="entry_type_enum">
27658                   <li>
27659                     <span class="entry_type_enum_name">TRANSMIT (v3.2)</span>
27660                     <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>
27661                   </li>
27662                 </ul>
27663
27664             </td> <!-- entry_type -->
27665
27666             <td class="entry_description">
27667               <p>A list of camera LEDs that are available on this system.<wbr/></p>
27668             </td>
27669
27670             <td class="entry_units">
27671             </td>
27672
27673             <td class="entry_range">
27674             </td>
27675
27676             <td class="entry_hal_version">
27677               <p>3.<wbr/>2</p>
27678             </td>
27679
27680             <td class="entry_tags">
27681             </td>
27682
27683           </tr>
27684
27685
27686           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27687            <!-- end of entry -->
27688         
27689         
27690
27691       <!-- end of kind -->
27692       </tbody>
27693
27694   <!-- end of section -->
27695   <tr><td colspan="7" id="section_info" class="section">info</td></tr>
27696
27697
27698       <tr><td colspan="7" class="kind">static</td></tr>
27699
27700       <thead class="entries_header">
27701         <tr>
27702           <th class="th_name">Property Name</th>
27703           <th class="th_type">Type</th>
27704           <th class="th_description">Description</th>
27705           <th class="th_units">Units</th>
27706           <th class="th_range">Range</th>
27707           <th class="th_hal_version">Initial HIDL HAL version</th>
27708           <th class="th_tags">Tags</th>
27709         </tr>
27710       </thead>
27711
27712       <tbody>
27713
27714         
27715
27716         
27717
27718         
27719
27720         
27721
27722                 
27723           <tr class="entry" id="static_android.info.supportedHardwareLevel">
27724             <td class="entry_name
27725              " rowspan="5">
27726               android.<wbr/>info.<wbr/>supported<wbr/>Hardware<wbr/>Level
27727             </td>
27728             <td class="entry_type">
27729                 <span class="entry_type_name entry_type_name_enum">byte</span>
27730
27731               <span class="entry_type_visibility"> [public]</span>
27732
27733
27734               <span class="entry_type_hwlevel">[legacy] </span>
27735
27736
27737
27738                 <ul class="entry_type_enum">
27739                   <li>
27740                     <span class="entry_type_enum_name">LIMITED (v3.2)</span>
27741                     <span class="entry_type_enum_notes"><p>This camera device does not have enough capabilities to qualify as a <code>FULL</code> device or
27742 better.<wbr/></p>
27743 <p>Only the stream configurations listed in the <code>LEGACY</code> and <code>LIMITED</code> tables in the
27744 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27745 <p>All <code>LIMITED</code> devices support the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability,<wbr/> indicating basic
27746 support for color image capture.<wbr/> The only exception is that the device may
27747 alternatively support only the <code>DEPTH_<wbr/>OUTPUT</code> capability,<wbr/> if it can only output depth
27748 measurements and not color images.<wbr/></p>
27749 <p><code>LIMITED</code> devices and above require the use of <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a>
27750 to lock exposure metering (and calculate flash power,<wbr/> for cameras with flash) before
27751 capturing a high-quality still image.<wbr/></p>
27752 <p>A <code>LIMITED</code> device that only lists the <code>BACKWARDS_<wbr/>COMPATIBLE</code> capability is only
27753 required to support full-automatic operation and post-processing (<code>OFF</code> is not
27754 supported for <a href="#controls_android.control.aeMode">android.<wbr/>control.<wbr/>ae<wbr/>Mode</a>,<wbr/> <a href="#controls_android.control.afMode">android.<wbr/>control.<wbr/>af<wbr/>Mode</a>,<wbr/> or
27755 <a href="#controls_android.control.awbMode">android.<wbr/>control.<wbr/>awb<wbr/>Mode</a>)</p>
27756 <p>Additional capabilities may optionally be supported by a <code>LIMITED</code>-level device,<wbr/> and
27757 can be checked for in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p></span>
27758                   </li>
27759                   <li>
27760                     <span class="entry_type_enum_name">FULL (v3.2)</span>
27761                     <span class="entry_type_enum_notes"><p>This camera device is capable of supporting advanced imaging applications.<wbr/></p>
27762 <p>The stream configurations listed in the <code>FULL</code>,<wbr/> <code>LEGACY</code> and <code>LIMITED</code> tables in the
27763 <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27764 <p>A <code>FULL</code> device will support below capabilities:</p>
27765 <ul>
27766 <li><code>BURST_<wbr/>CAPTURE</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27767   <code>BURST_<wbr/>CAPTURE</code>)</li>
27768 <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>
27769 <li>Manual sensor control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains <code>MANUAL_<wbr/>SENSOR</code>)</li>
27770 <li>Manual post-processing control (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27771   <code>MANUAL_<wbr/>POST_<wbr/>PROCESSING</code>)</li>
27772 <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>
27773 <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>
27774 </ul>
27775 <p>Note:
27776 Pre-API level 23,<wbr/> FULL devices also supported arbitrary cropping region
27777 (<a href="#static_android.scaler.croppingType">android.<wbr/>scaler.<wbr/>cropping<wbr/>Type</a> <code>== FREEFORM</code>); this requirement was relaxed in API level
27778 23,<wbr/> and <code>FULL</code> devices may only support <code>CENTERED</code> cropping.<wbr/></p></span>
27779                   </li>
27780                   <li>
27781                     <span class="entry_type_enum_name">LEGACY (v3.2)</span>
27782                     <span class="entry_type_enum_notes"><p>This camera device is running in backward compatibility mode.<wbr/></p>
27783 <p>Only the stream configurations listed in the <code>LEGACY</code> table in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are supported.<wbr/></p>
27784 <p>A <code>LEGACY</code> device does not support per-frame control,<wbr/> manual sensor control,<wbr/> manual
27785 post-processing,<wbr/> arbitrary cropping regions,<wbr/> and has relaxed performance constraints.<wbr/>
27786 No additional capabilities beyond <code>BACKWARD_<wbr/>COMPATIBLE</code> will ever be listed by a
27787 <code>LEGACY</code> device in <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a>.<wbr/></p>
27788 <p>In addition,<wbr/> the <a href="#controls_android.control.aePrecaptureTrigger">android.<wbr/>control.<wbr/>ae<wbr/>Precapture<wbr/>Trigger</a> is not functional on <code>LEGACY</code>
27789 devices.<wbr/> Instead,<wbr/> every request that includes a JPEG-format output target is treated
27790 as triggering a still capture,<wbr/> internally executing a precapture trigger.<wbr/>  This may
27791 fire the flash for flash power metering during precapture,<wbr/> and then fire the flash
27792 for the final capture,<wbr/> if a flash is available on the device and the AE mode is set to
27793 enable the flash.<wbr/></p></span>
27794                   </li>
27795                   <li>
27796                     <span class="entry_type_enum_name">3 (v3.2)</span>
27797                     <span class="entry_type_enum_notes"><p>This camera device is capable of YUV reprocessing and RAW data capture,<wbr/> in addition to
27798 FULL-level capabilities.<wbr/></p>
27799 <p>The stream configurations listed in the <code>LEVEL_<wbr/>3</code>,<wbr/> <code>RAW</code>,<wbr/> <code>FULL</code>,<wbr/> <code>LEGACY</code> and
27800 <code>LIMITED</code> tables in the <a href="https://developer.android.com/reference/android/hardware/camera2/CameraDevice.html#createCaptureSession">createCaptureSession</a> documentation are guaranteed to be supported.<wbr/></p>
27801 <p>The following additional capabilities are guaranteed to be supported:</p>
27802 <ul>
27803 <li><code>YUV_<wbr/>REPROCESSING</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27804   <code>YUV_<wbr/>REPROCESSING</code>)</li>
27805 <li><code>RAW</code> capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains
27806   <code>RAW</code>)</li>
27807 </ul></span>
27808                   </li>
27809                 </ul>
27810
27811             </td> <!-- entry_type -->
27812
27813             <td class="entry_description">
27814               <p>Generally classifies the overall set of the camera device functionality.<wbr/></p>
27815             </td>
27816
27817             <td class="entry_units">
27818             </td>
27819
27820             <td class="entry_range">
27821             </td>
27822
27823             <td class="entry_hal_version">
27824               <p>3.<wbr/>2</p>
27825             </td>
27826
27827             <td class="entry_tags">
27828             </td>
27829
27830           </tr>
27831           <tr class="entries_header">
27832             <th class="th_details" colspan="6">Details</th>
27833           </tr>
27834           <tr class="entry_cont">
27835             <td class="entry_details" colspan="6">
27836               <p>The supported hardware level is a high-level description of the camera device's
27837 capabilities,<wbr/> summarizing several capabilities into one field.<wbr/>  Each level adds additional
27838 features to the previous one,<wbr/> and is always a strict superset of the previous level.<wbr/>
27839 The ordering is <code>LEGACY &lt; LIMITED &lt; FULL &lt; LEVEL_<wbr/>3</code>.<wbr/></p>
27840 <p>Starting from <code>LEVEL_<wbr/>3</code>,<wbr/> the level enumerations are guaranteed to be in increasing
27841 numerical value as well.<wbr/> To check if a given device is at least at a given hardware level,<wbr/>
27842 the following code snippet can be used:</p>
27843 <pre><code>//<wbr/> Returns true if the device supports the required hardware level,<wbr/> or better.<wbr/>
27844 boolean isHardwareLevelSupported(CameraCharacteristics c,<wbr/> int requiredLevel) {
27845     int deviceLevel = c.<wbr/>get(Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL);
27846     if (deviceLevel == Camera<wbr/>Characteristics.<wbr/>INFO_<wbr/>SUPPORTED_<wbr/>HARDWARE_<wbr/>LEVEL_<wbr/>LEGACY) {
27847         return requiredLevel == deviceLevel;
27848     }
27849     //<wbr/> deviceLevel is not LEGACY,<wbr/> can use numerical sort
27850     return requiredLevel &lt;= deviceLevel;
27851 }
27852 </code></pre>
27853 <p>At a high level,<wbr/> the levels are:</p>
27854 <ul>
27855 <li><code>LEGACY</code> devices operate in a backwards-compatibility mode for older
27856   Android devices,<wbr/> and have very limited capabilities.<wbr/></li>
27857 <li><code>LIMITED</code> devices represent the
27858   baseline feature set,<wbr/> and may also include additional capabilities that are
27859   subsets of <code>FULL</code>.<wbr/></li>
27860 <li><code>FULL</code> devices additionally support per-frame manual control of sensor,<wbr/> flash,<wbr/> lens and
27861   post-processing settings,<wbr/> and image capture at a high rate.<wbr/></li>
27862 <li><code>LEVEL_<wbr/>3</code> devices additionally support YUV reprocessing and RAW image capture,<wbr/> along
27863   with additional output stream configurations.<wbr/></li>
27864 </ul>
27865 <p>See the individual level enums for full descriptions of the supported capabilities.<wbr/>  The
27866 <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> entry describes the device's capabilities at a
27867 finer-grain level,<wbr/> if needed.<wbr/> In addition,<wbr/> many controls have their available settings or
27868 ranges defined in individual entries from <a href="https://developer.android.com/reference/android/hardware/camera2/CameraCharacteristics.html">CameraCharacteristics</a>.<wbr/></p>
27869 <p>Some features are not part of any particular hardware level or capability and must be
27870 queried separately.<wbr/> These include:</p>
27871 <ul>
27872 <li>Calibrated timestamps (<a href="#static_android.sensor.info.timestampSource">android.<wbr/>sensor.<wbr/>info.<wbr/>timestamp<wbr/>Source</a> <code>==</code> REALTIME)</li>
27873 <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>
27874 <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>
27875 <li>Optical or electrical image stabilization
27876   (<a href="#static_android.lens.info.availableOpticalStabilization">android.<wbr/>lens.<wbr/>info.<wbr/>available<wbr/>Optical<wbr/>Stabilization</a>,<wbr/>
27877    <a href="#static_android.control.availableVideoStabilizationModes">android.<wbr/>control.<wbr/>available<wbr/>Video<wbr/>Stabilization<wbr/>Modes</a>)</li>
27878 </ul>
27879             </td>
27880           </tr>
27881
27882           <tr class="entries_header">
27883             <th class="th_details" colspan="6">HAL Implementation Details</th>
27884           </tr>
27885           <tr class="entry_cont">
27886             <td class="entry_details" colspan="6">
27887               <p>A camera HALv3 device can implement one of three possible operational modes; LIMITED,<wbr/>
27888 FULL,<wbr/> and LEVEL_<wbr/>3.<wbr/></p>
27889 <p>FULL support or better is expected from new higher-end devices.<wbr/> Limited
27890 mode has hardware requirements roughly in line with those for a camera HAL device v1
27891 implementation,<wbr/> and is expected from older or inexpensive devices.<wbr/> Each level is a strict
27892 superset of the previous level,<wbr/> and they share the same essential operational flow.<wbr/></p>
27893 <p>For full details refer to "S3.<wbr/> Operational Modes" in camera3.<wbr/>h</p>
27894 <p>Camera HAL3+ must not implement LEGACY mode.<wbr/> It is there for backwards compatibility in
27895 the <code>android.<wbr/>hardware.<wbr/>camera2</code> user-facing API only on legacy HALv1 devices,<wbr/> and is
27896 implemented by the camera framework code.<wbr/></p>
27897             </td>
27898           </tr>
27899
27900           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27901            <!-- end of entry -->
27902         
27903                 
27904           <tr class="entry" id="static_android.info.version">
27905             <td class="entry_name
27906              " rowspan="5">
27907               android.<wbr/>info.<wbr/>version
27908             </td>
27909             <td class="entry_type">
27910                 <span class="entry_type_name">byte</span>
27911
27912               <span class="entry_type_visibility"> [public as string]</span>
27913
27914
27915
27916
27917
27918
27919             </td> <!-- entry_type -->
27920
27921             <td class="entry_description">
27922               <p>A short string for manufacturer version information about the camera device,<wbr/> such as
27923 ISP hardware,<wbr/> sensors,<wbr/> etc.<wbr/></p>
27924             </td>
27925
27926             <td class="entry_units">
27927             </td>
27928
27929             <td class="entry_range">
27930             </td>
27931
27932             <td class="entry_hal_version">
27933               <p>3.<wbr/>3</p>
27934             </td>
27935
27936             <td class="entry_tags">
27937             </td>
27938
27939           </tr>
27940           <tr class="entries_header">
27941             <th class="th_details" colspan="6">Details</th>
27942           </tr>
27943           <tr class="entry_cont">
27944             <td class="entry_details" colspan="6">
27945               <p>This can be used in <a href="https://developer.android.com/reference/android/media/ExifInterface.html#TAG_IMAGE_DESCRIPTION">TAG_<wbr/>IMAGE_<wbr/>DESCRIPTION</a>
27946 in jpeg EXIF.<wbr/> This key may be absent if no version information is available on the
27947 device.<wbr/></p>
27948             </td>
27949           </tr>
27950
27951           <tr class="entries_header">
27952             <th class="th_details" colspan="6">HAL Implementation Details</th>
27953           </tr>
27954           <tr class="entry_cont">
27955             <td class="entry_details" colspan="6">
27956               <p>The string must consist of only alphanumeric characters,<wbr/> punctuation,<wbr/> and
27957 whitespace,<wbr/> i.<wbr/>e.<wbr/> it must match regular expression "[\p{Alnum}\p{Punct}\p{Space}]*".<wbr/>
27958 It must not exceed 256 characters.<wbr/></p>
27959             </td>
27960           </tr>
27961
27962           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
27963            <!-- end of entry -->
27964         
27965         
27966
27967       <!-- end of kind -->
27968       </tbody>
27969
27970   <!-- end of section -->
27971   <tr><td colspan="7" id="section_blackLevel" class="section">blackLevel</td></tr>
27972
27973
27974       <tr><td colspan="7" class="kind">controls</td></tr>
27975
27976       <thead class="entries_header">
27977         <tr>
27978           <th class="th_name">Property Name</th>
27979           <th class="th_type">Type</th>
27980           <th class="th_description">Description</th>
27981           <th class="th_units">Units</th>
27982           <th class="th_range">Range</th>
27983           <th class="th_hal_version">Initial HIDL HAL version</th>
27984           <th class="th_tags">Tags</th>
27985         </tr>
27986       </thead>
27987
27988       <tbody>
27989
27990         
27991
27992         
27993
27994         
27995
27996         
27997
27998                 
27999           <tr class="entry" id="controls_android.blackLevel.lock">
28000             <td class="entry_name
28001              " rowspan="5">
28002               android.<wbr/>black<wbr/>Level.<wbr/>lock
28003             </td>
28004             <td class="entry_type">
28005                 <span class="entry_type_name entry_type_name_enum">byte</span>
28006
28007               <span class="entry_type_visibility"> [public as boolean]</span>
28008
28009
28010               <span class="entry_type_hwlevel">[full] </span>
28011
28012
28013
28014                 <ul class="entry_type_enum">
28015                   <li>
28016                     <span class="entry_type_enum_name">OFF (v3.2)</span>
28017                   </li>
28018                   <li>
28019                     <span class="entry_type_enum_name">ON (v3.2)</span>
28020                   </li>
28021                 </ul>
28022
28023             </td> <!-- entry_type -->
28024
28025             <td class="entry_description">
28026               <p>Whether black-level compensation is locked
28027 to its current values,<wbr/> or is free to vary.<wbr/></p>
28028             </td>
28029
28030             <td class="entry_units">
28031             </td>
28032
28033             <td class="entry_range">
28034             </td>
28035
28036             <td class="entry_hal_version">
28037               <p>3.<wbr/>2</p>
28038             </td>
28039
28040             <td class="entry_tags">
28041               <ul class="entry_tags">
28042                   <li><a href="#tag_HAL2">HAL2</a></li>
28043               </ul>
28044             </td>
28045
28046           </tr>
28047           <tr class="entries_header">
28048             <th class="th_details" colspan="6">Details</th>
28049           </tr>
28050           <tr class="entry_cont">
28051             <td class="entry_details" colspan="6">
28052               <p>When set to <code>true</code> (ON),<wbr/> the values used for black-level
28053 compensation will not change until the lock is set to
28054 <code>false</code> (OFF).<wbr/></p>
28055 <p>Since changes to certain capture parameters (such as
28056 exposure time) may require resetting of black level
28057 compensation,<wbr/> the camera device must report whether setting
28058 the black level lock was successful in the output result
28059 metadata.<wbr/></p>
28060 <p>For example,<wbr/> if a sequence of requests is as follows:</p>
28061 <ul>
28062 <li>Request 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28063 <li>Request 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28064 <li>Request 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28065 <li>Request 4: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28066 <li>Request 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28067 <li>Request 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28068 </ul>
28069 <p>And the exposure change in Request 4 requires the camera
28070 device to reset the black level offsets,<wbr/> then the output
28071 result metadata is expected to be:</p>
28072 <ul>
28073 <li>Result 1: Exposure = 10ms,<wbr/> Black level lock = OFF</li>
28074 <li>Result 2: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28075 <li>Result 3: Exposure = 10ms,<wbr/> Black level lock = ON</li>
28076 <li>Result 4: Exposure = 20ms,<wbr/> Black level lock = OFF</li>
28077 <li>Result 5: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28078 <li>Result 6: Exposure = 20ms,<wbr/> Black level lock = ON</li>
28079 </ul>
28080 <p>This indicates to the application that on frame 4,<wbr/> black
28081 levels were reset due to exposure value changes,<wbr/> and pixel
28082 values may not be consistent across captures.<wbr/></p>
28083 <p>The camera device will maintain the lock to the extent
28084 possible,<wbr/> only overriding the lock to OFF when changes to
28085 other request parameters require a black level recalculation
28086 or reset.<wbr/></p>
28087             </td>
28088           </tr>
28089
28090           <tr class="entries_header">
28091             <th class="th_details" colspan="6">HAL Implementation Details</th>
28092           </tr>
28093           <tr class="entry_cont">
28094             <td class="entry_details" colspan="6">
28095               <p>If for some reason black level locking is no longer possible
28096 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28097 black level offsets to be recalculated),<wbr/> then the HAL must
28098 override this request (and it must report 'OFF' when this
28099 does happen) until the next capture for which locking is
28100 possible again.<wbr/></p>
28101             </td>
28102           </tr>
28103
28104           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28105            <!-- end of entry -->
28106         
28107         
28108
28109       <!-- end of kind -->
28110       </tbody>
28111       <tr><td colspan="7" class="kind">dynamic</td></tr>
28112
28113       <thead class="entries_header">
28114         <tr>
28115           <th class="th_name">Property Name</th>
28116           <th class="th_type">Type</th>
28117           <th class="th_description">Description</th>
28118           <th class="th_units">Units</th>
28119           <th class="th_range">Range</th>
28120           <th class="th_hal_version">Initial HIDL HAL version</th>
28121           <th class="th_tags">Tags</th>
28122         </tr>
28123       </thead>
28124
28125       <tbody>
28126
28127         
28128
28129         
28130
28131         
28132
28133         
28134
28135                 
28136           <tr class="entry" id="dynamic_android.blackLevel.lock">
28137             <td class="entry_name
28138              " rowspan="5">
28139               android.<wbr/>black<wbr/>Level.<wbr/>lock
28140             </td>
28141             <td class="entry_type">
28142                 <span class="entry_type_name entry_type_name_enum">byte</span>
28143
28144               <span class="entry_type_visibility"> [public as boolean]</span>
28145
28146
28147               <span class="entry_type_hwlevel">[full] </span>
28148
28149
28150
28151                 <ul class="entry_type_enum">
28152                   <li>
28153                     <span class="entry_type_enum_name">OFF (v3.2)</span>
28154                   </li>
28155                   <li>
28156                     <span class="entry_type_enum_name">ON (v3.2)</span>
28157                   </li>
28158                 </ul>
28159
28160             </td> <!-- entry_type -->
28161
28162             <td class="entry_description">
28163               <p>Whether black-level compensation is locked
28164 to its current values,<wbr/> or is free to vary.<wbr/></p>
28165             </td>
28166
28167             <td class="entry_units">
28168             </td>
28169
28170             <td class="entry_range">
28171             </td>
28172
28173             <td class="entry_hal_version">
28174               <p>3.<wbr/>2</p>
28175             </td>
28176
28177             <td class="entry_tags">
28178               <ul class="entry_tags">
28179                   <li><a href="#tag_HAL2">HAL2</a></li>
28180               </ul>
28181             </td>
28182
28183           </tr>
28184           <tr class="entries_header">
28185             <th class="th_details" colspan="6">Details</th>
28186           </tr>
28187           <tr class="entry_cont">
28188             <td class="entry_details" colspan="6">
28189               <p>Whether the black level offset was locked for this frame.<wbr/>  Should be
28190 ON if <a href="#controls_android.blackLevel.lock">android.<wbr/>black<wbr/>Level.<wbr/>lock</a> was ON in the capture request,<wbr/> unless
28191 a change in other capture settings forced the camera device to
28192 perform a black level reset.<wbr/></p>
28193             </td>
28194           </tr>
28195
28196           <tr class="entries_header">
28197             <th class="th_details" colspan="6">HAL Implementation Details</th>
28198           </tr>
28199           <tr class="entry_cont">
28200             <td class="entry_details" colspan="6">
28201               <p>If for some reason black level locking is no longer possible
28202 (for example,<wbr/> the analog gain has changed,<wbr/> which forces
28203 black level offsets to be recalculated),<wbr/> then the HAL must
28204 override this request (and it must report 'OFF' when this
28205 does happen) until the next capture for which locking is
28206 possible again.<wbr/></p>
28207             </td>
28208           </tr>
28209
28210           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28211            <!-- end of entry -->
28212         
28213         
28214
28215       <!-- end of kind -->
28216       </tbody>
28217
28218   <!-- end of section -->
28219   <tr><td colspan="7" id="section_sync" class="section">sync</td></tr>
28220
28221
28222       <tr><td colspan="7" class="kind">dynamic</td></tr>
28223
28224       <thead class="entries_header">
28225         <tr>
28226           <th class="th_name">Property Name</th>
28227           <th class="th_type">Type</th>
28228           <th class="th_description">Description</th>
28229           <th class="th_units">Units</th>
28230           <th class="th_range">Range</th>
28231           <th class="th_hal_version">Initial HIDL HAL version</th>
28232           <th class="th_tags">Tags</th>
28233         </tr>
28234       </thead>
28235
28236       <tbody>
28237
28238         
28239
28240         
28241
28242         
28243
28244         
28245
28246                 
28247           <tr class="entry" id="dynamic_android.sync.frameNumber">
28248             <td class="entry_name
28249              " rowspan="5">
28250               android.<wbr/>sync.<wbr/>frame<wbr/>Number
28251             </td>
28252             <td class="entry_type">
28253                 <span class="entry_type_name entry_type_name_enum">int64</span>
28254
28255               <span class="entry_type_visibility"> [ndk_public]</span>
28256
28257
28258               <span class="entry_type_hwlevel">[legacy] </span>
28259
28260
28261
28262                 <ul class="entry_type_enum">
28263                   <li>
28264                     <span class="entry_type_enum_name">CONVERGING (v3.2)</span>
28265                     <span class="entry_type_enum_value">-1</span>
28266                     <span class="entry_type_enum_notes"><p>The current result is not yet fully synchronized to any request.<wbr/></p>
28267 <p>Synchronization is in progress,<wbr/> and reading metadata from this
28268 result may include a mix of data that have taken effect since the
28269 last synchronization time.<wbr/></p>
28270 <p>In some future result,<wbr/> within <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a> frames,<wbr/>
28271 this value will update to the actual frame number frame number
28272 the result is guaranteed to be synchronized to (as long as the
28273 request settings remain constant).<wbr/></p></span>
28274                   </li>
28275                   <li>
28276                     <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28277                     <span class="entry_type_enum_value">-2</span>
28278                     <span class="entry_type_enum_notes"><p>The current result's synchronization status is unknown.<wbr/></p>
28279 <p>The result may have already converged,<wbr/> or it may be in
28280 progress.<wbr/>  Reading from this result may include some mix
28281 of settings from past requests.<wbr/></p>
28282 <p>After a settings change,<wbr/> the new settings will eventually all
28283 take effect for the output buffers and results.<wbr/> However,<wbr/> this
28284 value will not change when that happens.<wbr/> Altering settings
28285 rapidly may provide outcomes using mixes of settings from recent
28286 requests.<wbr/></p>
28287 <p>This value is intended primarily for backwards compatibility with
28288 the older camera implementations (for android.<wbr/>hardware.<wbr/>Camera).<wbr/></p></span>
28289                   </li>
28290                 </ul>
28291
28292             </td> <!-- entry_type -->
28293
28294             <td class="entry_description">
28295               <p>The frame number corresponding to the last request
28296 with which the output result (metadata + buffers) has been fully
28297 synchronized.<wbr/></p>
28298             </td>
28299
28300             <td class="entry_units">
28301             </td>
28302
28303             <td class="entry_range">
28304               <p>Either a non-negative value corresponding to a
28305 <code>frame_<wbr/>number</code>,<wbr/> or one of the two enums (CONVERGING /<wbr/> UNKNOWN).<wbr/></p>
28306             </td>
28307
28308             <td class="entry_hal_version">
28309               <p>3.<wbr/>2</p>
28310             </td>
28311
28312             <td class="entry_tags">
28313               <ul class="entry_tags">
28314                   <li><a href="#tag_V1">V1</a></li>
28315               </ul>
28316             </td>
28317
28318           </tr>
28319           <tr class="entries_header">
28320             <th class="th_details" colspan="6">Details</th>
28321           </tr>
28322           <tr class="entry_cont">
28323             <td class="entry_details" colspan="6">
28324               <p>When a request is submitted to the camera device,<wbr/> there is usually a
28325 delay of several frames before the controls get applied.<wbr/> A camera
28326 device may either choose to account for this delay by implementing a
28327 pipeline and carefully submit well-timed atomic control updates,<wbr/> or
28328 it may start streaming control changes that span over several frame
28329 boundaries.<wbr/></p>
28330 <p>In the latter case,<wbr/> whenever a request's settings change relative to
28331 the previous submitted request,<wbr/> the full set of changes may take
28332 multiple frame durations to fully take effect.<wbr/> Some settings may
28333 take effect sooner (in less frame durations) than others.<wbr/></p>
28334 <p>While a set of control changes are being propagated,<wbr/> this value
28335 will be CONVERGING.<wbr/></p>
28336 <p>Once it is fully known that a set of control changes have been
28337 finished propagating,<wbr/> and the resulting updated control settings
28338 have been read back by the camera device,<wbr/> this value will be set
28339 to a non-negative frame number (corresponding to the request to
28340 which the results have synchronized to).<wbr/></p>
28341 <p>Older camera device implementations may not have a way to detect
28342 when all camera controls have been applied,<wbr/> and will always set this
28343 value to UNKNOWN.<wbr/></p>
28344 <p>FULL capability devices will always have this value set to the
28345 frame number of the request corresponding to this result.<wbr/></p>
28346 <p><em>Further details</em>:</p>
28347 <ul>
28348 <li>Whenever a request differs from the last request,<wbr/> any future
28349 results not yet returned may have this value set to CONVERGING (this
28350 could include any in-progress captures not yet returned by the camera
28351 device,<wbr/> for more details see pipeline considerations below).<wbr/></li>
28352 <li>Submitting a series of multiple requests that differ from the
28353 previous request (e.<wbr/>g.<wbr/> r1,<wbr/> r2,<wbr/> r3 s.<wbr/>t.<wbr/> r1 != r2 != r3)
28354 moves the new synchronization frame to the last non-repeating
28355 request (using the smallest frame number from the contiguous list of
28356 repeating requests).<wbr/></li>
28357 <li>Submitting the same request repeatedly will not change this value
28358 to CONVERGING,<wbr/> if it was already a non-negative value.<wbr/></li>
28359 <li>When this value changes to non-negative,<wbr/> that means that all of the
28360 metadata controls from the request have been applied,<wbr/> all of the
28361 metadata controls from the camera device have been read to the
28362 updated values (into the result),<wbr/> and all of the graphics buffers
28363 corresponding to this result are also synchronized to the request.<wbr/></li>
28364 </ul>
28365 <p><em>Pipeline considerations</em>:</p>
28366 <p>Submitting a request with updated controls relative to the previously
28367 submitted requests may also invalidate the synchronization state
28368 of all the results corresponding to currently in-flight requests.<wbr/></p>
28369 <p>In other words,<wbr/> results for this current request and up to
28370 <a href="#static_android.request.pipelineMaxDepth">android.<wbr/>request.<wbr/>pipeline<wbr/>Max<wbr/>Depth</a> prior requests may have their
28371 <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> change to CONVERGING.<wbr/></p>
28372             </td>
28373           </tr>
28374
28375           <tr class="entries_header">
28376             <th class="th_details" colspan="6">HAL Implementation Details</th>
28377           </tr>
28378           <tr class="entry_cont">
28379             <td class="entry_details" colspan="6">
28380               <p>Using UNKNOWN here is illegal unless <a href="#static_android.sync.maxLatency">android.<wbr/>sync.<wbr/>max<wbr/>Latency</a>
28381 is also UNKNOWN.<wbr/></p>
28382 <p>FULL capability devices should simply set this value to the
28383 <code>frame_<wbr/>number</code> of the request this result corresponds to.<wbr/></p>
28384             </td>
28385           </tr>
28386
28387           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28388            <!-- end of entry -->
28389         
28390         
28391
28392       <!-- end of kind -->
28393       </tbody>
28394       <tr><td colspan="7" class="kind">static</td></tr>
28395
28396       <thead class="entries_header">
28397         <tr>
28398           <th class="th_name">Property Name</th>
28399           <th class="th_type">Type</th>
28400           <th class="th_description">Description</th>
28401           <th class="th_units">Units</th>
28402           <th class="th_range">Range</th>
28403           <th class="th_hal_version">Initial HIDL HAL version</th>
28404           <th class="th_tags">Tags</th>
28405         </tr>
28406       </thead>
28407
28408       <tbody>
28409
28410         
28411
28412         
28413
28414         
28415
28416         
28417
28418                 
28419           <tr class="entry" id="static_android.sync.maxLatency">
28420             <td class="entry_name
28421              " rowspan="5">
28422               android.<wbr/>sync.<wbr/>max<wbr/>Latency
28423             </td>
28424             <td class="entry_type">
28425                 <span class="entry_type_name entry_type_name_enum">int32</span>
28426
28427               <span class="entry_type_visibility"> [public]</span>
28428
28429
28430               <span class="entry_type_hwlevel">[legacy] </span>
28431
28432
28433
28434                 <ul class="entry_type_enum">
28435                   <li>
28436                     <span class="entry_type_enum_name">PER_FRAME_CONTROL (v3.2)</span>
28437                     <span class="entry_type_enum_value">0</span>
28438                     <span class="entry_type_enum_notes"><p>Every frame has the requests immediately applied.<wbr/></p>
28439 <p>Changing controls over multiple requests one after another will
28440 produce results that have those controls applied atomically
28441 each frame.<wbr/></p>
28442 <p>All FULL capability devices will have this as their maxLatency.<wbr/></p></span>
28443                   </li>
28444                   <li>
28445                     <span class="entry_type_enum_name">UNKNOWN (v3.2)</span>
28446                     <span class="entry_type_enum_value">-1</span>
28447                     <span class="entry_type_enum_notes"><p>Each new frame has some subset (potentially the entire set)
28448 of the past requests applied to the camera settings.<wbr/></p>
28449 <p>By submitting a series of identical requests,<wbr/> the camera device
28450 will eventually have the camera settings applied,<wbr/> but it is
28451 unknown when that exact point will be.<wbr/></p>
28452 <p>All LEGACY capability devices will have this as their maxLatency.<wbr/></p></span>
28453                   </li>
28454                 </ul>
28455
28456             </td> <!-- entry_type -->
28457
28458             <td class="entry_description">
28459               <p>The maximum number of frames that can occur after a request
28460 (different than the previous) has been submitted,<wbr/> and before the
28461 result's state becomes synchronized.<wbr/></p>
28462             </td>
28463
28464             <td class="entry_units">
28465               Frame counts
28466             </td>
28467
28468             <td class="entry_range">
28469               <p>A positive value,<wbr/> PER_<wbr/>FRAME_<wbr/>CONTROL,<wbr/> or UNKNOWN.<wbr/></p>
28470             </td>
28471
28472             <td class="entry_hal_version">
28473               <p>3.<wbr/>2</p>
28474             </td>
28475
28476             <td class="entry_tags">
28477               <ul class="entry_tags">
28478                   <li><a href="#tag_V1">V1</a></li>
28479               </ul>
28480             </td>
28481
28482           </tr>
28483           <tr class="entries_header">
28484             <th class="th_details" colspan="6">Details</th>
28485           </tr>
28486           <tr class="entry_cont">
28487             <td class="entry_details" colspan="6">
28488               <p>This defines the maximum distance (in number of metadata results),<wbr/>
28489 between the frame number of the request that has new controls to apply
28490 and the frame number of the result that has all the controls applied.<wbr/></p>
28491 <p>In other words this acts as an upper boundary for how many frames
28492 must occur before the camera device knows for a fact that the new
28493 submitted camera settings have been applied in outgoing frames.<wbr/></p>
28494             </td>
28495           </tr>
28496
28497           <tr class="entries_header">
28498             <th class="th_details" colspan="6">HAL Implementation Details</th>
28499           </tr>
28500           <tr class="entry_cont">
28501             <td class="entry_details" colspan="6">
28502               <p>For example if maxLatency was 2,<wbr/></p>
28503 <pre><code>initial request = X (repeating)
28504 request1 = X
28505 request2 = Y
28506 request3 = Y
28507 request4 = Y
28508
28509 where requestN has frameNumber N,<wbr/> and the first of the repeating
28510 initial request's has frameNumber F (and F &lt; 1).<wbr/>
28511
28512 initial result = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28513 result1 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == F }
28514 result2 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28515 result3 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == CONVERGING }
28516 result4 = X' + { <a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2 }
28517
28518 where resultN has frameNumber N.<wbr/>
28519 </code></pre>
28520 <p>Since <code>result4</code> has a <code>frameNumber == 4</code> and
28521 <code><a href="#dynamic_android.sync.frameNumber">android.<wbr/>sync.<wbr/>frame<wbr/>Number</a> == 2</code>,<wbr/> the distance is clearly
28522 <code>4 - 2 = 2</code>.<wbr/></p>
28523 <p>Use <code>frame_<wbr/>count</code> from camera3_<wbr/>request_<wbr/>t instead of
28524 <a href="#controls_android.request.frameCount">android.<wbr/>request.<wbr/>frame<wbr/>Count</a> or
28525 <code><a href="https://developer.android.com/reference/android/hardware/camera2/CaptureResult.html#getFrameNumber">CaptureResult#getFrameNumber</a></code>.<wbr/></p>
28526 <p>LIMITED devices are strongly encouraged to use a non-negative
28527 value.<wbr/> If UNKNOWN is used here then app developers do not have a way
28528 to know when sensor settings have been applied.<wbr/></p>
28529             </td>
28530           </tr>
28531
28532           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28533            <!-- end of entry -->
28534         
28535         
28536
28537       <!-- end of kind -->
28538       </tbody>
28539
28540   <!-- end of section -->
28541   <tr><td colspan="7" id="section_reprocess" class="section">reprocess</td></tr>
28542
28543
28544       <tr><td colspan="7" class="kind">controls</td></tr>
28545
28546       <thead class="entries_header">
28547         <tr>
28548           <th class="th_name">Property Name</th>
28549           <th class="th_type">Type</th>
28550           <th class="th_description">Description</th>
28551           <th class="th_units">Units</th>
28552           <th class="th_range">Range</th>
28553           <th class="th_hal_version">Initial HIDL HAL version</th>
28554           <th class="th_tags">Tags</th>
28555         </tr>
28556       </thead>
28557
28558       <tbody>
28559
28560         
28561
28562         
28563
28564         
28565
28566         
28567
28568                 
28569           <tr class="entry" id="controls_android.reprocess.effectiveExposureFactor">
28570             <td class="entry_name
28571              " rowspan="3">
28572               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
28573             </td>
28574             <td class="entry_type">
28575                 <span class="entry_type_name">float</span>
28576
28577               <span class="entry_type_visibility"> [java_public]</span>
28578
28579
28580               <span class="entry_type_hwlevel">[limited] </span>
28581
28582
28583
28584
28585             </td> <!-- entry_type -->
28586
28587             <td class="entry_description">
28588               <p>The amount of exposure time increase factor applied to the original output
28589 frame by the application processing before sending for reprocessing.<wbr/></p>
28590             </td>
28591
28592             <td class="entry_units">
28593               Relative exposure time increase factor.<wbr/>
28594             </td>
28595
28596             <td class="entry_range">
28597               <p>&gt;= 1.<wbr/>0</p>
28598             </td>
28599
28600             <td class="entry_hal_version">
28601               <p>3.<wbr/>2</p>
28602             </td>
28603
28604             <td class="entry_tags">
28605               <ul class="entry_tags">
28606                   <li><a href="#tag_REPROC">REPROC</a></li>
28607               </ul>
28608             </td>
28609
28610           </tr>
28611           <tr class="entries_header">
28612             <th class="th_details" colspan="6">Details</th>
28613           </tr>
28614           <tr class="entry_cont">
28615             <td class="entry_details" colspan="6">
28616               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
28617 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
28618 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
28619 output frames to effectively reduce the noise to the same level as a frame that was
28620 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
28621 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
28622 the camera device is that the amount of noise in the image would be approximately what
28623 would be expected if the original capture parameters had been a sensitivity of
28624 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
28625 than S and T respectively.<wbr/> If the captured images were processed by the application
28626 before being sent for reprocessing,<wbr/> then the application may have used image processing
28627 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
28628 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
28629 control,<wbr/> the application can communicate to the camera device the actual noise level
28630 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
28631 device can select appropriate noise reduction and edge enhancement parameters to avoid
28632 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
28633 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
28634 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
28635 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
28636 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
28637 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
28638 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
28639 produce the best quality images.<wbr/></p>
28640 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
28641 buffer in a way that affects its effective exposure time.<wbr/></p>
28642 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
28643 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/>
28644 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
28645 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
28646             </td>
28647           </tr>
28648
28649
28650           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28651            <!-- end of entry -->
28652         
28653         
28654
28655       <!-- end of kind -->
28656       </tbody>
28657       <tr><td colspan="7" class="kind">dynamic</td></tr>
28658
28659       <thead class="entries_header">
28660         <tr>
28661           <th class="th_name">Property Name</th>
28662           <th class="th_type">Type</th>
28663           <th class="th_description">Description</th>
28664           <th class="th_units">Units</th>
28665           <th class="th_range">Range</th>
28666           <th class="th_hal_version">Initial HIDL HAL version</th>
28667           <th class="th_tags">Tags</th>
28668         </tr>
28669       </thead>
28670
28671       <tbody>
28672
28673         
28674
28675         
28676
28677         
28678
28679         
28680
28681                 
28682           <tr class="entry" id="dynamic_android.reprocess.effectiveExposureFactor">
28683             <td class="entry_name
28684              " rowspan="3">
28685               android.<wbr/>reprocess.<wbr/>effective<wbr/>Exposure<wbr/>Factor
28686             </td>
28687             <td class="entry_type">
28688                 <span class="entry_type_name">float</span>
28689
28690               <span class="entry_type_visibility"> [java_public]</span>
28691
28692
28693               <span class="entry_type_hwlevel">[limited] </span>
28694
28695
28696
28697
28698             </td> <!-- entry_type -->
28699
28700             <td class="entry_description">
28701               <p>The amount of exposure time increase factor applied to the original output
28702 frame by the application processing before sending for reprocessing.<wbr/></p>
28703             </td>
28704
28705             <td class="entry_units">
28706               Relative exposure time increase factor.<wbr/>
28707             </td>
28708
28709             <td class="entry_range">
28710               <p>&gt;= 1.<wbr/>0</p>
28711             </td>
28712
28713             <td class="entry_hal_version">
28714               <p>3.<wbr/>2</p>
28715             </td>
28716
28717             <td class="entry_tags">
28718               <ul class="entry_tags">
28719                   <li><a href="#tag_REPROC">REPROC</a></li>
28720               </ul>
28721             </td>
28722
28723           </tr>
28724           <tr class="entries_header">
28725             <th class="th_details" colspan="6">Details</th>
28726           </tr>
28727           <tr class="entry_cont">
28728             <td class="entry_details" colspan="6">
28729               <p>This is optional,<wbr/> and will be supported if the camera device supports YUV_<wbr/>REPROCESSING
28730 capability (<a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains YUV_<wbr/>REPROCESSING).<wbr/></p>
28731 <p>For some YUV reprocessing use cases,<wbr/> the application may choose to filter the original
28732 output frames to effectively reduce the noise to the same level as a frame that was
28733 captured with longer exposure time.<wbr/> To be more specific,<wbr/> assuming the original captured
28734 images were captured with a sensitivity of S and an exposure time of T,<wbr/> the model in
28735 the camera device is that the amount of noise in the image would be approximately what
28736 would be expected if the original capture parameters had been a sensitivity of
28737 S/<wbr/>effectiveExposureFactor and an exposure time of T*effectiveExposureFactor,<wbr/> rather
28738 than S and T respectively.<wbr/> If the captured images were processed by the application
28739 before being sent for reprocessing,<wbr/> then the application may have used image processing
28740 algorithms and/<wbr/>or multi-frame image fusion to reduce the noise in the
28741 application-processed images (input images).<wbr/> By using the effectiveExposureFactor
28742 control,<wbr/> the application can communicate to the camera device the actual noise level
28743 improvement in the application-processed image.<wbr/> With this information,<wbr/> the camera
28744 device can select appropriate noise reduction and edge enhancement parameters to avoid
28745 excessive noise reduction (<a href="#controls_android.noiseReduction.mode">android.<wbr/>noise<wbr/>Reduction.<wbr/>mode</a>) and insufficient edge
28746 enhancement (<a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a>) being applied to the reprocessed frames.<wbr/></p>
28747 <p>For example,<wbr/> for multi-frame image fusion use case,<wbr/> the application may fuse
28748 multiple output frames together to a final frame for reprocessing.<wbr/> When N image are
28749 fused into 1 image for reprocessing,<wbr/> the exposure time increase factor could be up to
28750 square root of N (based on a simple photon shot noise model).<wbr/> The camera device will
28751 adjust the reprocessing noise reduction and edge enhancement parameters accordingly to
28752 produce the best quality images.<wbr/></p>
28753 <p>This is relative factor,<wbr/> 1.<wbr/>0 indicates the application hasn't processed the input
28754 buffer in a way that affects its effective exposure time.<wbr/></p>
28755 <p>This control is only effective for YUV reprocessing capture request.<wbr/> For noise
28756 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/>
28757 Similarly,<wbr/> for edge enhancement reprocessing,<wbr/> it is only effective when
28758 <code><a href="#controls_android.edge.mode">android.<wbr/>edge.<wbr/>mode</a> != OFF</code>.<wbr/></p>
28759             </td>
28760           </tr>
28761
28762
28763           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28764            <!-- end of entry -->
28765         
28766         
28767
28768       <!-- end of kind -->
28769       </tbody>
28770       <tr><td colspan="7" class="kind">static</td></tr>
28771
28772       <thead class="entries_header">
28773         <tr>
28774           <th class="th_name">Property Name</th>
28775           <th class="th_type">Type</th>
28776           <th class="th_description">Description</th>
28777           <th class="th_units">Units</th>
28778           <th class="th_range">Range</th>
28779           <th class="th_hal_version">Initial HIDL HAL version</th>
28780           <th class="th_tags">Tags</th>
28781         </tr>
28782       </thead>
28783
28784       <tbody>
28785
28786         
28787
28788         
28789
28790         
28791
28792         
28793
28794                 
28795           <tr class="entry" id="static_android.reprocess.maxCaptureStall">
28796             <td class="entry_name
28797              " rowspan="3">
28798               android.<wbr/>reprocess.<wbr/>max<wbr/>Capture<wbr/>Stall
28799             </td>
28800             <td class="entry_type">
28801                 <span class="entry_type_name">int32</span>
28802
28803               <span class="entry_type_visibility"> [java_public]</span>
28804
28805
28806               <span class="entry_type_hwlevel">[limited] </span>
28807
28808
28809
28810
28811             </td> <!-- entry_type -->
28812
28813             <td class="entry_description">
28814               <p>The maximal camera capture pipeline stall (in unit of frame count) introduced by a
28815 reprocess capture request.<wbr/></p>
28816             </td>
28817
28818             <td class="entry_units">
28819               Number of frames.<wbr/>
28820             </td>
28821
28822             <td class="entry_range">
28823               <p>&lt;= 4</p>
28824             </td>
28825
28826             <td class="entry_hal_version">
28827               <p>3.<wbr/>2</p>
28828             </td>
28829
28830             <td class="entry_tags">
28831               <ul class="entry_tags">
28832                   <li><a href="#tag_REPROC">REPROC</a></li>
28833               </ul>
28834             </td>
28835
28836           </tr>
28837           <tr class="entries_header">
28838             <th class="th_details" colspan="6">Details</th>
28839           </tr>
28840           <tr class="entry_cont">
28841             <td class="entry_details" colspan="6">
28842               <p>The key describes the maximal interference that one reprocess (input) request
28843 can introduce to the camera simultaneous streaming of regular (output) capture
28844 requests,<wbr/> including repeating requests.<wbr/></p>
28845 <p>When a reprocessing capture request is submitted while a camera output repeating request
28846 (e.<wbr/>g.<wbr/> preview) is being served by the camera device,<wbr/> it may preempt the camera capture
28847 pipeline for at least one frame duration so that the camera device is unable to process
28848 the following capture request in time for the next sensor start of exposure boundary.<wbr/>
28849 When this happens,<wbr/> the application may observe a capture time gap (longer than one frame
28850 duration) between adjacent capture output frames,<wbr/> which usually exhibits as preview
28851 glitch if the repeating request output targets include a preview surface.<wbr/> This key gives
28852 the worst-case number of frame stall introduced by one reprocess request with any kind of
28853 formats/<wbr/>sizes combination.<wbr/></p>
28854 <p>If this key reports 0,<wbr/> it means a reprocess request doesn't introduce any glitch to the
28855 ongoing camera repeating request outputs,<wbr/> as if this reprocess request is never issued.<wbr/></p>
28856 <p>This key is supported if the camera device supports PRIVATE or YUV reprocessing (
28857 i.<wbr/>e.<wbr/> <a href="#static_android.request.availableCapabilities">android.<wbr/>request.<wbr/>available<wbr/>Capabilities</a> contains PRIVATE_<wbr/>REPROCESSING or
28858 YUV_<wbr/>REPROCESSING).<wbr/></p>
28859             </td>
28860           </tr>
28861
28862
28863           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28864            <!-- end of entry -->
28865         
28866         
28867
28868       <!-- end of kind -->
28869       </tbody>
28870
28871   <!-- end of section -->
28872   <tr><td colspan="7" id="section_depth" class="section">depth</td></tr>
28873
28874
28875       <tr><td colspan="7" class="kind">static</td></tr>
28876
28877       <thead class="entries_header">
28878         <tr>
28879           <th class="th_name">Property Name</th>
28880           <th class="th_type">Type</th>
28881           <th class="th_description">Description</th>
28882           <th class="th_units">Units</th>
28883           <th class="th_range">Range</th>
28884           <th class="th_hal_version">Initial HIDL HAL version</th>
28885           <th class="th_tags">Tags</th>
28886         </tr>
28887       </thead>
28888
28889       <tbody>
28890
28891         
28892
28893         
28894
28895         
28896
28897         
28898
28899                 
28900           <tr class="entry" id="static_android.depth.maxDepthSamples">
28901             <td class="entry_name
28902              " rowspan="3">
28903               android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples
28904             </td>
28905             <td class="entry_type">
28906                 <span class="entry_type_name">int32</span>
28907
28908               <span class="entry_type_visibility"> [system]</span>
28909
28910
28911               <span class="entry_type_hwlevel">[limited] </span>
28912
28913
28914
28915
28916             </td> <!-- entry_type -->
28917
28918             <td class="entry_description">
28919               <p>Maximum number of points that a depth point cloud may contain.<wbr/></p>
28920             </td>
28921
28922             <td class="entry_units">
28923             </td>
28924
28925             <td class="entry_range">
28926             </td>
28927
28928             <td class="entry_hal_version">
28929               <p>3.<wbr/>2</p>
28930             </td>
28931
28932             <td class="entry_tags">
28933               <ul class="entry_tags">
28934                   <li><a href="#tag_DEPTH">DEPTH</a></li>
28935               </ul>
28936             </td>
28937
28938           </tr>
28939           <tr class="entries_header">
28940             <th class="th_details" colspan="6">Details</th>
28941           </tr>
28942           <tr class="entry_cont">
28943             <td class="entry_details" colspan="6">
28944               <p>If a camera device supports outputting depth range data in the form of a depth point
28945 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
28946 number of points an output buffer may contain.<wbr/></p>
28947 <p>Any given buffer may contain between 0 and maxDepthSamples points,<wbr/> inclusive.<wbr/>
28948 If output in the depth point cloud format is not supported,<wbr/> this entry will
28949 not be defined.<wbr/></p>
28950             </td>
28951           </tr>
28952
28953
28954           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
28955            <!-- end of entry -->
28956         
28957                 
28958           <tr class="entry" id="static_android.depth.availableDepthStreamConfigurations">
28959             <td class="entry_name
28960              " rowspan="3">
28961               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stream<wbr/>Configurations
28962             </td>
28963             <td class="entry_type">
28964                 <span class="entry_type_name entry_type_name_enum">int32</span>
28965                 <span class="entry_type_container">x</span>
28966
28967                 <span class="entry_type_array">
28968                   n x 4
28969                 </span>
28970               <span class="entry_type_visibility"> [ndk_public as streamConfiguration]</span>
28971
28972
28973               <span class="entry_type_hwlevel">[limited] </span>
28974
28975
28976
28977                 <ul class="entry_type_enum">
28978                   <li>
28979                     <span class="entry_type_enum_name">OUTPUT (v3.2)</span>
28980                   </li>
28981                   <li>
28982                     <span class="entry_type_enum_name">INPUT (v3.2)</span>
28983                   </li>
28984                 </ul>
28985
28986             </td> <!-- entry_type -->
28987
28988             <td class="entry_description">
28989               <p>The available depth dataspace stream
28990 configurations that this camera device supports
28991 (i.<wbr/>e.<wbr/> format,<wbr/> width,<wbr/> height,<wbr/> output/<wbr/>input stream).<wbr/></p>
28992             </td>
28993
28994             <td class="entry_units">
28995             </td>
28996
28997             <td class="entry_range">
28998             </td>
28999
29000             <td class="entry_hal_version">
29001               <p>3.<wbr/>2</p>
29002             </td>
29003
29004             <td class="entry_tags">
29005               <ul class="entry_tags">
29006                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29007               </ul>
29008             </td>
29009
29010           </tr>
29011           <tr class="entries_header">
29012             <th class="th_details" colspan="6">Details</th>
29013           </tr>
29014           <tr class="entry_cont">
29015             <td class="entry_details" colspan="6">
29016               <p>These are output stream configurations for use with
29017 dataSpace HAL_<wbr/>DATASPACE_<wbr/>DEPTH.<wbr/> The configurations are
29018 listed as <code>(format,<wbr/> width,<wbr/> height,<wbr/> input?)</code> tuples.<wbr/></p>
29019 <p>Only devices that support depth output for at least
29020 the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16 dense depth map may include
29021 this entry.<wbr/></p>
29022 <p>A device that also supports the HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB
29023 sparse depth point cloud must report a single entry for
29024 the format in this list as <code>(HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>BLOB,<wbr/>
29025 <a href="#static_android.depth.maxDepthSamples">android.<wbr/>depth.<wbr/>max<wbr/>Depth<wbr/>Samples</a>,<wbr/> 1,<wbr/> OUTPUT)</code> in addition to
29026 the entries for HAL_<wbr/>PIXEL_<wbr/>FORMAT_<wbr/>Y16.<wbr/></p>
29027             </td>
29028           </tr>
29029
29030
29031           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29032            <!-- end of entry -->
29033         
29034                 
29035           <tr class="entry" id="static_android.depth.availableDepthMinFrameDurations">
29036             <td class="entry_name
29037              " rowspan="3">
29038               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Min<wbr/>Frame<wbr/>Durations
29039             </td>
29040             <td class="entry_type">
29041                 <span class="entry_type_name">int64</span>
29042                 <span class="entry_type_container">x</span>
29043
29044                 <span class="entry_type_array">
29045                   4 x n
29046                 </span>
29047               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29048
29049
29050               <span class="entry_type_hwlevel">[limited] </span>
29051
29052
29053
29054
29055             </td> <!-- entry_type -->
29056
29057             <td class="entry_description">
29058               <p>This lists the minimum frame duration for each
29059 format/<wbr/>size combination for depth output formats.<wbr/></p>
29060             </td>
29061
29062             <td class="entry_units">
29063               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29064             </td>
29065
29066             <td class="entry_range">
29067             </td>
29068
29069             <td class="entry_hal_version">
29070               <p>3.<wbr/>2</p>
29071             </td>
29072
29073             <td class="entry_tags">
29074               <ul class="entry_tags">
29075                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29076               </ul>
29077             </td>
29078
29079           </tr>
29080           <tr class="entries_header">
29081             <th class="th_details" colspan="6">Details</th>
29082           </tr>
29083           <tr class="entry_cont">
29084             <td class="entry_details" colspan="6">
29085               <p>This should correspond to the frame duration when only that
29086 stream is active,<wbr/> with all processing (typically in android.<wbr/>*.<wbr/>mode)
29087 set to either OFF or FAST.<wbr/></p>
29088 <p>When multiple streams are used in a request,<wbr/> the minimum frame
29089 duration will be max(individual stream min durations).<wbr/></p>
29090 <p>The minimum frame duration of a stream (of a particular format,<wbr/> size)
29091 is the same regardless of whether the stream is input or output.<wbr/></p>
29092 <p>See <a href="#controls_android.sensor.frameDuration">android.<wbr/>sensor.<wbr/>frame<wbr/>Duration</a> and
29093 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for more details about
29094 calculating the max frame rate.<wbr/></p>
29095             </td>
29096           </tr>
29097
29098
29099           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29100            <!-- end of entry -->
29101         
29102                 
29103           <tr class="entry" id="static_android.depth.availableDepthStallDurations">
29104             <td class="entry_name
29105              " rowspan="3">
29106               android.<wbr/>depth.<wbr/>available<wbr/>Depth<wbr/>Stall<wbr/>Durations
29107             </td>
29108             <td class="entry_type">
29109                 <span class="entry_type_name">int64</span>
29110                 <span class="entry_type_container">x</span>
29111
29112                 <span class="entry_type_array">
29113                   4 x n
29114                 </span>
29115               <span class="entry_type_visibility"> [ndk_public as streamConfigurationDuration]</span>
29116
29117
29118               <span class="entry_type_hwlevel">[limited] </span>
29119
29120
29121
29122
29123             </td> <!-- entry_type -->
29124
29125             <td class="entry_description">
29126               <p>This lists the maximum stall duration for each
29127 output format/<wbr/>size combination for depth streams.<wbr/></p>
29128             </td>
29129
29130             <td class="entry_units">
29131               (format,<wbr/> width,<wbr/> height,<wbr/> ns) x n
29132             </td>
29133
29134             <td class="entry_range">
29135             </td>
29136
29137             <td class="entry_hal_version">
29138               <p>3.<wbr/>2</p>
29139             </td>
29140
29141             <td class="entry_tags">
29142               <ul class="entry_tags">
29143                   <li><a href="#tag_DEPTH">DEPTH</a></li>
29144               </ul>
29145             </td>
29146
29147           </tr>
29148           <tr class="entries_header">
29149             <th class="th_details" colspan="6">Details</th>
29150           </tr>
29151           <tr class="entry_cont">
29152             <td class="entry_details" colspan="6">
29153               <p>A stall duration is how much extra time would get added
29154 to the normal minimum frame duration for a repeating request
29155 that has streams with non-zero stall.<wbr/></p>
29156 <p>This functions similarly to
29157 <a href="#static_android.scaler.availableStallDurations">android.<wbr/>scaler.<wbr/>available<wbr/>Stall<wbr/>Durations</a> for depth
29158 streams.<wbr/></p>
29159 <p>All depth output stream formats may have a nonzero stall
29160 duration.<wbr/></p>
29161             </td>
29162           </tr>
29163
29164
29165           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29166            <!-- end of entry -->
29167         
29168                 
29169           <tr class="entry" id="static_android.depth.depthIsExclusive">
29170             <td class="entry_name
29171              " rowspan="3">
29172               android.<wbr/>depth.<wbr/>depth<wbr/>Is<wbr/>Exclusive
29173             </td>
29174             <td class="entry_type">
29175                 <span class="entry_type_name entry_type_name_enum">byte</span>
29176
29177               <span class="entry_type_visibility"> [public as boolean]</span>
29178
29179
29180               <span class="entry_type_hwlevel">[limited] </span>
29181
29182
29183
29184                 <ul class="entry_type_enum">
29185                   <li>
29186                     <span class="entry_type_enum_name">FALSE (v3.2)</span>
29187                   </li>
29188                   <li>
29189                     <span class="entry_type_enum_name">TRUE (v3.2)</span>
29190                   </li>
29191                 </ul>
29192
29193             </td> <!-- entry_type -->
29194
29195             <td class="entry_description">
29196               <p>Indicates whether a capture request may target both a
29197 DEPTH16 /<wbr/> DEPTH_<wbr/>POINT_<wbr/>CLOUD output,<wbr/> and normal color outputs (such as
29198 YUV_<wbr/>420_<wbr/>888,<wbr/> JPEG,<wbr/> or RAW) simultaneously.<wbr/></p>
29199             </td>
29200
29201             <td class="entry_units">
29202             </td>
29203
29204             <td class="entry_range">
29205             </td>
29206
29207             <td class="entry_hal_version">
29208               <p>3.<wbr/>2</p>
29209             </td>
29210
29211             <td class="entry_tags">
29212             </td>
29213
29214           </tr>
29215           <tr class="entries_header">
29216             <th class="th_details" colspan="6">Details</th>
29217           </tr>
29218           <tr class="entry_cont">
29219             <td class="entry_details" colspan="6">
29220               <p>If TRUE,<wbr/> including both depth and color outputs in a single
29221 capture request is not supported.<wbr/> An application must interleave color
29222 and depth requests.<wbr/>  If FALSE,<wbr/> a single request can target both types
29223 of output.<wbr/></p>
29224 <p>Typically,<wbr/> this restriction exists on camera devices that
29225 need to emit a specific pattern or wavelength of light to
29226 measure depth values,<wbr/> which causes the color image to be
29227 corrupted during depth measurement.<wbr/></p>
29228             </td>
29229           </tr>
29230
29231
29232           <tr class="entry_spacer"><td class="entry_spacer" colspan="7"></td></tr>
29233            <!-- end of entry -->
29234         
29235         
29236
29237       <!-- end of kind -->
29238       </tbody>
29239
29240   <!-- end of section -->
29241 <!-- </namespace> -->
29242   </table>
29243
29244   <div class="tags" id="tag_index">
29245     <h2>Tags</h2>
29246     <ul>
29247       <li id="tag_BC">BC - 
29248         Needed for backwards compatibility with old Java API
29249     
29250         <ul class="tags_entries">
29251           <li><a href="#controls_android.control.aeAntibandingMode">android.control.aeAntibandingMode</a> (controls)</li>
29252           <li><a href="#controls_android.control.aeExposureCompensation">android.control.aeExposureCompensation</a> (controls)</li>
29253           <li><a href="#controls_android.control.aeLock">android.control.aeLock</a> (controls)</li>
29254           <li><a href="#controls_android.control.aeMode">android.control.aeMode</a> (controls)</li>
29255           <li><a href="#controls_android.control.aeRegions">android.control.aeRegions</a> (controls)</li>
29256           <li><a href="#controls_android.control.aeTargetFpsRange">android.control.aeTargetFpsRange</a> (controls)</li>
29257           <li><a href="#controls_android.control.aePrecaptureTrigger">android.control.aePrecaptureTrigger</a> (controls)</li>
29258           <li><a href="#controls_android.control.afMode">android.control.afMode</a> (controls)</li>
29259           <li><a href="#controls_android.control.afRegions">android.control.afRegions</a> (controls)</li>
29260           <li><a href="#controls_android.control.afTrigger">android.control.afTrigger</a> (controls)</li>
29261           <li><a href="#controls_android.control.awbLock">android.control.awbLock</a> (controls)</li>
29262           <li><a href="#controls_android.control.awbMode">android.control.awbMode</a> (controls)</li>
29263           <li><a href="#controls_android.control.awbRegions">android.control.awbRegions</a> (controls)</li>
29264           <li><a href="#controls_android.control.captureIntent">android.control.captureIntent</a> (controls)</li>
29265           <li><a href="#controls_android.control.effectMode">android.control.effectMode</a> (controls)</li>
29266           <li><a href="#controls_android.control.mode">android.control.mode</a> (controls)</li>
29267           <li><a href="#controls_android.control.sceneMode">android.control.sceneMode</a> (controls)</li>
29268           <li><a href="#controls_android.control.videoStabilizationMode">android.control.videoStabilizationMode</a> (controls)</li>
29269           <li><a href="#static_android.control.aeAvailableAntibandingModes">android.control.aeAvailableAntibandingModes</a> (static)</li>
29270           <li><a href="#static_android.control.aeAvailableModes">android.control.aeAvailableModes</a> (static)</li>
29271           <li><a href="#static_android.control.aeAvailableTargetFpsRanges">android.control.aeAvailableTargetFpsRanges</a> (static)</li>
29272           <li><a href="#static_android.control.aeCompensationRange">android.control.aeCompensationRange</a> (static)</li>
29273           <li><a href="#static_android.control.aeCompensationStep">android.control.aeCompensationStep</a> (static)</li>
29274           <li><a href="#static_android.control.afAvailableModes">android.control.afAvailableModes</a> (static)</li>
29275           <li><a href="#static_android.control.availableEffects">android.control.availableEffects</a> (static)</li>
29276           <li><a href="#static_android.control.availableSceneModes">android.control.availableSceneModes</a> (static)</li>
29277           <li><a href="#static_android.control.availableVideoStabilizationModes">android.control.availableVideoStabilizationModes</a> (static)</li>
29278           <li><a href="#static_android.control.awbAvailableModes">android.control.awbAvailableModes</a> (static)</li>
29279           <li><a href="#static_android.control.maxRegions">android.control.maxRegions</a> (static)</li>
29280           <li><a href="#static_android.control.sceneModeOverrides">android.control.sceneModeOverrides</a> (static)</li>
29281           <li><a href="#static_android.control.aeLockAvailable">android.control.aeLockAvailable</a> (static)</li>
29282           <li><a href="#static_android.control.awbLockAvailable">android.control.awbLockAvailable</a> (static)</li>
29283           <li><a href="#controls_android.flash.mode">android.flash.mode</a> (controls)</li>
29284           <li><a href="#static_android.flash.info.available">android.flash.info.available</a> (static)</li>
29285           <li><a href="#controls_android.jpeg.gpsCoordinates">android.jpeg.gpsCoordinates</a> (controls)</li>
29286           <li><a href="#controls_android.jpeg.gpsProcessingMethod">android.jpeg.gpsProcessingMethod</a> (controls)</li>
29287           <li><a href="#controls_android.jpeg.gpsTimestamp">android.jpeg.gpsTimestamp</a> (controls)</li>
29288           <li><a href="#controls_android.jpeg.orientation">android.jpeg.orientation</a> (controls)</li>
29289           <li><a href="#controls_android.jpeg.quality">android.jpeg.quality</a> (controls)</li>
29290           <li><a href="#controls_android.jpeg.thumbnailQuality">android.jpeg.thumbnailQuality</a> (controls)</li>
29291           <li><a href="#controls_android.jpeg.thumbnailSize">android.jpeg.thumbnailSize</a> (controls)</li>
29292           <li><a href="#static_android.jpeg.availableThumbnailSizes">android.jpeg.availableThumbnailSizes</a> (static)</li>
29293           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
29294           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
29295           <li><a href="#dynamic_android.lens.focusRange">android.lens.focusRange</a> (dynamic)</li>
29296           <li><a href="#static_android.request.maxNumOutputStreams">android.request.maxNumOutputStreams</a> (static)</li>
29297           <li><a href="#controls_android.scaler.cropRegion">android.scaler.cropRegion</a> (controls)</li>
29298           <li><a href="#static_android.scaler.availableFormats">android.scaler.availableFormats</a> (static)</li>
29299           <li><a href="#static_android.scaler.availableJpegMinDurations">android.scaler.availableJpegMinDurations</a> (static)</li>
29300           <li><a href="#static_android.scaler.availableJpegSizes">android.scaler.availableJpegSizes</a> (static)</li>
29301           <li><a href="#static_android.scaler.availableMaxDigitalZoom">android.scaler.availableMaxDigitalZoom</a> (static)</li>
29302           <li><a href="#static_android.scaler.availableProcessedMinDurations">android.scaler.availableProcessedMinDurations</a> (static)</li>
29303           <li><a href="#static_android.scaler.availableProcessedSizes">android.scaler.availableProcessedSizes</a> (static)</li>
29304           <li><a href="#static_android.scaler.availableRawMinDurations">android.scaler.availableRawMinDurations</a> (static)</li>
29305           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
29306           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
29307           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
29308           <li><a href="#static_android.sensor.orientation">android.sensor.orientation</a> (static)</li>
29309           <li><a href="#dynamic_android.sensor.timestamp">android.sensor.timestamp</a> (dynamic)</li>
29310           <li><a href="#controls_android.statistics.faceDetectMode">android.statistics.faceDetectMode</a> (controls)</li>
29311           <li><a href="#static_android.statistics.info.maxFaceCount">android.statistics.info.maxFaceCount</a> (static)</li>
29312           <li><a href="#dynamic_android.statistics.faceIds">android.statistics.faceIds</a> (dynamic)</li>
29313           <li><a href="#dynamic_android.statistics.faceLandmarks">android.statistics.faceLandmarks</a> (dynamic)</li>
29314           <li><a href="#dynamic_android.statistics.faceRectangles">android.statistics.faceRectangles</a> (dynamic)</li>
29315           <li><a href="#dynamic_android.statistics.faceScores">android.statistics.faceScores</a> (dynamic)</li>
29316           <li><a href="#dynamic_android.lens.focalLength">android.lens.focalLength</a> (dynamic)</li>
29317           <li><a href="#dynamic_android.lens.focusDistance">android.lens.focusDistance</a> (dynamic)</li>
29318         </ul>
29319       </li> <!-- tag_BC -->
29320       <li id="tag_V1">V1 - 
29321         New features for first camera 2 release (API1)
29322     
29323         <ul class="tags_entries">
29324           <li><a href="#static_android.colorCorrection.availableAberrationModes">android.colorCorrection.availableAberrationModes</a> (static)</li>
29325           <li><a href="#static_android.control.availableHighSpeedVideoConfigurations">android.control.availableHighSpeedVideoConfigurations</a> (static)</li>
29326           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
29327           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
29328           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
29329           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
29330           <li><a href="#controls_android.lens.aperture">android.lens.aperture</a> (controls)</li>
29331           <li><a href="#controls_android.lens.filterDensity">android.lens.filterDensity</a> (controls)</li>
29332           <li><a href="#controls_android.lens.focalLength">android.lens.focalLength</a> (controls)</li>
29333           <li><a href="#controls_android.lens.focusDistance">android.lens.focusDistance</a> (controls)</li>
29334           <li><a href="#controls_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (controls)</li>
29335           <li><a href="#static_android.lens.info.availableApertures">android.lens.info.availableApertures</a> (static)</li>
29336           <li><a href="#static_android.lens.info.availableFilterDensities">android.lens.info.availableFilterDensities</a> (static)</li>
29337           <li><a href="#static_android.lens.info.availableFocalLengths">android.lens.info.availableFocalLengths</a> (static)</li>
29338           <li><a href="#static_android.lens.info.availableOpticalStabilization">android.lens.info.availableOpticalStabilization</a> (static)</li>
29339           <li><a href="#static_android.lens.info.minimumFocusDistance">android.lens.info.minimumFocusDistance</a> (static)</li>
29340           <li><a href="#static_android.lens.info.shadingMapSize">android.lens.info.shadingMapSize</a> (static)</li>
29341           <li><a href="#static_android.lens.info.focusDistanceCalibration">android.lens.info.focusDistanceCalibration</a> (static)</li>
29342           <li><a href="#dynamic_android.lens.state">android.lens.state</a> (dynamic)</li>
29343           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
29344           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
29345           <li><a href="#controls_android.request.id">android.request.id</a> (controls)</li>
29346           <li><a href="#static_android.scaler.availableMinFrameDurations">android.scaler.availableMinFrameDurations</a> (static)</li>
29347           <li><a href="#static_android.scaler.availableStallDurations">android.scaler.availableStallDurations</a> (static)</li>
29348           <li><a href="#controls_android.sensor.exposureTime">android.sensor.exposureTime</a> (controls)</li>
29349           <li><a href="#controls_android.sensor.frameDuration">android.sensor.frameDuration</a> (controls)</li>
29350           <li><a href="#controls_android.sensor.sensitivity">android.sensor.sensitivity</a> (controls)</li>
29351           <li><a href="#static_android.sensor.info.sensitivityRange">android.sensor.info.sensitivityRange</a> (static)</li>
29352           <li><a href="#static_android.sensor.info.exposureTimeRange">android.sensor.info.exposureTimeRange</a> (static)</li>
29353           <li><a href="#static_android.sensor.info.maxFrameDuration">android.sensor.info.maxFrameDuration</a> (static)</li>
29354           <li><a href="#static_android.sensor.info.physicalSize">android.sensor.info.physicalSize</a> (static)</li>
29355           <li><a href="#static_android.sensor.info.timestampSource">android.sensor.info.timestampSource</a> (static)</li>
29356           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
29357           <li><a href="#dynamic_android.sensor.rollingShutterSkew">android.sensor.rollingShutterSkew</a> (dynamic)</li>
29358           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
29359           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
29360           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
29361           <li><a href="#dynamic_android.sync.frameNumber">android.sync.frameNumber</a> (dynamic)</li>
29362           <li><a href="#static_android.sync.maxLatency">android.sync.maxLatency</a> (static)</li>
29363           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
29364           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
29365           <li><a href="#dynamic_android.lens.aperture">android.lens.aperture</a> (dynamic)</li>
29366           <li><a href="#dynamic_android.lens.filterDensity">android.lens.filterDensity</a> (dynamic)</li>
29367           <li><a href="#dynamic_android.lens.opticalStabilizationMode">android.lens.opticalStabilizationMode</a> (dynamic)</li>
29368           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
29369         </ul>
29370       </li> <!-- tag_V1 -->
29371       <li id="tag_RAW">RAW - 
29372         Needed for useful RAW image processing and DNG file support
29373     
29374         <ul class="tags_entries">
29375           <li><a href="#controls_android.hotPixel.mode">android.hotPixel.mode</a> (controls)</li>
29376           <li><a href="#static_android.hotPixel.availableHotPixelModes">android.hotPixel.availableHotPixelModes</a> (static)</li>
29377           <li><a href="#static_android.sensor.info.activeArraySize">android.sensor.info.activeArraySize</a> (static)</li>
29378           <li><a href="#static_android.sensor.info.colorFilterArrangement">android.sensor.info.colorFilterArrangement</a> (static)</li>
29379           <li><a href="#static_android.sensor.info.pixelArraySize">android.sensor.info.pixelArraySize</a> (static)</li>
29380           <li><a href="#static_android.sensor.info.whiteLevel">android.sensor.info.whiteLevel</a> (static)</li>
29381           <li><a href="#static_android.sensor.info.preCorrectionActiveArraySize">android.sensor.info.preCorrectionActiveArraySize</a> (static)</li>
29382           <li><a href="#static_android.sensor.referenceIlluminant1">android.sensor.referenceIlluminant1</a> (static)</li>
29383           <li><a href="#static_android.sensor.referenceIlluminant2">android.sensor.referenceIlluminant2</a> (static)</li>
29384           <li><a href="#static_android.sensor.calibrationTransform1">android.sensor.calibrationTransform1</a> (static)</li>
29385           <li><a href="#static_android.sensor.calibrationTransform2">android.sensor.calibrationTransform2</a> (static)</li>
29386           <li><a href="#static_android.sensor.colorTransform1">android.sensor.colorTransform1</a> (static)</li>
29387           <li><a href="#static_android.sensor.colorTransform2">android.sensor.colorTransform2</a> (static)</li>
29388           <li><a href="#static_android.sensor.forwardMatrix1">android.sensor.forwardMatrix1</a> (static)</li>
29389           <li><a href="#static_android.sensor.forwardMatrix2">android.sensor.forwardMatrix2</a> (static)</li>
29390           <li><a href="#static_android.sensor.blackLevelPattern">android.sensor.blackLevelPattern</a> (static)</li>
29391           <li><a href="#static_android.sensor.profileHueSatMapDimensions">android.sensor.profileHueSatMapDimensions</a> (static)</li>
29392           <li><a href="#dynamic_android.sensor.neutralColorPoint">android.sensor.neutralColorPoint</a> (dynamic)</li>
29393           <li><a href="#dynamic_android.sensor.noiseProfile">android.sensor.noiseProfile</a> (dynamic)</li>
29394           <li><a href="#dynamic_android.sensor.profileHueSatMap">android.sensor.profileHueSatMap</a> (dynamic)</li>
29395           <li><a href="#dynamic_android.sensor.profileToneCurve">android.sensor.profileToneCurve</a> (dynamic)</li>
29396           <li><a href="#dynamic_android.sensor.greenSplit">android.sensor.greenSplit</a> (dynamic)</li>
29397           <li><a href="#dynamic_android.sensor.dynamicBlackLevel">android.sensor.dynamicBlackLevel</a> (dynamic)</li>
29398           <li><a href="#dynamic_android.sensor.dynamicWhiteLevel">android.sensor.dynamicWhiteLevel</a> (dynamic)</li>
29399           <li><a href="#controls_android.statistics.hotPixelMapMode">android.statistics.hotPixelMapMode</a> (controls)</li>
29400           <li><a href="#static_android.statistics.info.availableHotPixelMapModes">android.statistics.info.availableHotPixelMapModes</a> (static)</li>
29401           <li><a href="#dynamic_android.statistics.hotPixelMap">android.statistics.hotPixelMap</a> (dynamic)</li>
29402           <li><a href="#controls_android.statistics.lensShadingMapMode">android.statistics.lensShadingMapMode</a> (controls)</li>
29403           <li><a href="#dynamic_android.hotPixel.mode">android.hotPixel.mode</a> (dynamic)</li>
29404         </ul>
29405       </li> <!-- tag_RAW -->
29406       <li id="tag_HAL2">HAL2 - 
29407         Entry is only used by camera device legacy HAL 2.x
29408     
29409         <ul class="tags_entries">
29410           <li><a href="#controls_android.request.inputStreams">android.request.inputStreams</a> (controls)</li>
29411           <li><a href="#controls_android.request.outputStreams">android.request.outputStreams</a> (controls)</li>
29412           <li><a href="#controls_android.request.type">android.request.type</a> (controls)</li>
29413           <li><a href="#static_android.request.maxNumReprocessStreams">android.request.maxNumReprocessStreams</a> (static)</li>
29414           <li><a href="#controls_android.blackLevel.lock">android.blackLevel.lock</a> (controls)</li>
29415         </ul>
29416       </li> <!-- tag_HAL2 -->
29417       <li id="tag_FULL">FULL - 
29418         Entry is required for full hardware level devices, and optional for other hardware levels
29419     
29420         <ul class="tags_entries">
29421           <li><a href="#static_android.sensor.maxAnalogSensitivity">android.sensor.maxAnalogSensitivity</a> (static)</li>
29422         </ul>
29423       </li> <!-- tag_FULL -->
29424       <li id="tag_DEPTH">DEPTH - 
29425         Entry is required for the depth capability.
29426     
29427         <ul class="tags_entries">
29428           <li><a href="#static_android.lens.poseRotation">android.lens.poseRotation</a> (static)</li>
29429           <li><a href="#static_android.lens.poseTranslation">android.lens.poseTranslation</a> (static)</li>
29430           <li><a href="#static_android.lens.intrinsicCalibration">android.lens.intrinsicCalibration</a> (static)</li>
29431           <li><a href="#static_android.lens.radialDistortion">android.lens.radialDistortion</a> (static)</li>
29432           <li><a href="#static_android.depth.maxDepthSamples">android.depth.maxDepthSamples</a> (static)</li>
29433           <li><a href="#static_android.depth.availableDepthStreamConfigurations">android.depth.availableDepthStreamConfigurations</a> (static)</li>
29434           <li><a href="#static_android.depth.availableDepthMinFrameDurations">android.depth.availableDepthMinFrameDurations</a> (static)</li>
29435           <li><a href="#static_android.depth.availableDepthStallDurations">android.depth.availableDepthStallDurations</a> (static)</li>
29436         </ul>
29437       </li> <!-- tag_DEPTH -->
29438       <li id="tag_REPROC">REPROC - 
29439         Entry is required for the YUV or PRIVATE reprocessing capability.
29440     
29441         <ul class="tags_entries">
29442           <li><a href="#controls_android.edge.mode">android.edge.mode</a> (controls)</li>
29443           <li><a href="#static_android.edge.availableEdgeModes">android.edge.availableEdgeModes</a> (static)</li>
29444           <li><a href="#controls_android.noiseReduction.mode">android.noiseReduction.mode</a> (controls)</li>
29445           <li><a href="#static_android.noiseReduction.availableNoiseReductionModes">android.noiseReduction.availableNoiseReductionModes</a> (static)</li>
29446           <li><a href="#static_android.request.maxNumInputStreams">android.request.maxNumInputStreams</a> (static)</li>
29447           <li><a href="#static_android.scaler.availableInputOutputFormatsMap">android.scaler.availableInputOutputFormatsMap</a> (static)</li>
29448           <li><a href="#controls_android.reprocess.effectiveExposureFactor">android.reprocess.effectiveExposureFactor</a> (controls)</li>
29449           <li><a href="#static_android.reprocess.maxCaptureStall">android.reprocess.maxCaptureStall</a> (static)</li>
29450           <li><a href="#dynamic_android.edge.mode">android.edge.mode</a> (dynamic)</li>
29451           <li><a href="#dynamic_android.noiseReduction.mode">android.noiseReduction.mode</a> (dynamic)</li>
29452         </ul>
29453       </li> <!-- tag_REPROC -->
29454       <li id="tag_FUTURE">FUTURE - 
29455         Entry is  under-specified and is not required for now. This is for book-keeping purpose,
29456         do not implement or use it, it may be revised for future.
29457     
29458         <ul class="tags_entries">
29459           <li><a href="#controls_android.demosaic.mode">android.demosaic.mode</a> (controls)</li>
29460           <li><a href="#controls_android.edge.strength">android.edge.strength</a> (controls)</li>
29461           <li><a href="#controls_android.flash.firingPower">android.flash.firingPower</a> (controls)</li>
29462           <li><a href="#controls_android.flash.firingTime">android.flash.firingTime</a> (controls)</li>
29463           <li><a href="#static_android.flash.info.chargeDuration">android.flash.info.chargeDuration</a> (static)</li>
29464           <li><a href="#static_android.flash.colorTemperature">android.flash.colorTemperature</a> (static)</li>
29465           <li><a href="#static_android.flash.maxEnergy">android.flash.maxEnergy</a> (static)</li>
29466           <li><a href="#dynamic_android.jpeg.size">android.jpeg.size</a> (dynamic)</li>
29467           <li><a href="#controls_android.noiseReduction.strength">android.noiseReduction.strength</a> (controls)</li>
29468           <li><a href="#controls_android.request.metadataMode">android.request.metadataMode</a> (controls)</li>
29469           <li><a href="#static_android.sensor.baseGainFactor">android.sensor.baseGainFactor</a> (static)</li>
29470           <li><a href="#dynamic_android.sensor.temperature">android.sensor.temperature</a> (dynamic)</li>
29471           <li><a href="#controls_android.shading.strength">android.shading.strength</a> (controls)</li>
29472           <li><a href="#controls_android.statistics.histogramMode">android.statistics.histogramMode</a> (controls)</li>
29473           <li><a href="#controls_android.statistics.sharpnessMapMode">android.statistics.sharpnessMapMode</a> (controls)</li>
29474           <li><a href="#static_android.statistics.info.histogramBucketCount">android.statistics.info.histogramBucketCount</a> (static)</li>
29475           <li><a href="#static_android.statistics.info.maxHistogramCount">android.statistics.info.maxHistogramCount</a> (static)</li>
29476           <li><a href="#static_android.statistics.info.maxSharpnessMapValue">android.statistics.info.maxSharpnessMapValue</a> (static)</li>
29477           <li><a href="#static_android.statistics.info.sharpnessMapSize">android.statistics.info.sharpnessMapSize</a> (static)</li>
29478           <li><a href="#dynamic_android.statistics.histogram">android.statistics.histogram</a> (dynamic)</li>
29479           <li><a href="#dynamic_android.statistics.sharpnessMap">android.statistics.sharpnessMap</a> (dynamic)</li>
29480         </ul>
29481       </li> <!-- tag_FUTURE -->
29482     </ul>
29483   </div>
29484
29485   [ <a href="#">top</a> ]
29486
29487 </body>
29488 </html>